1
0
LH 2 жил өмнө
parent
commit
7c8598b86d

+ 1 - 0
LogBlockHeatMapper/build.gradle

@@ -24,4 +24,5 @@ repositories{
 
 dependencies{
     api group: 'com.alexdupre', name: 'pngj', version: '2+'
+	api "org.yaml:snakeyaml:1.14"
 }

+ 2 - 2
LogBlockHeatMapper/src/main/java/de/nplusc/izc/logblockheatmapper/LogBlockHeatmapper.java

@@ -100,8 +100,8 @@ public class LogBlockHeatmapper
             String[] xes = xx.split("\\t");
             int l = Integer.parseInt(xes[0]);
             boolean register=false;
-            int f = Integer.parseInt(xes[1]);
-            int t = Integer.parseInt(xes[2]);
+            int f = 0;//Integer.parseInt(xes[1]);
+            int t = 1;//Integer.parseInt(xes[2]);
             if((targetBlockID<0||targetBlockID==f||targetBlockID==t))
             {
                 register=true;

+ 89 - 9
LogBlockHeatMapper/src/main/java/de/nplusc/izc/logblockheatmapper/LogBlockHeatmapperRegionTrimmer.java

@@ -23,6 +23,7 @@ import ar.com.hjg.pngj.ImageLineHelper;
 import ar.com.hjg.pngj.ImageLineInt;
 import ar.com.hjg.pngj.PngWriter;
 import ar.com.hjg.pngj.chunks.PngChunkTextVar;
+import org.yaml.snakeyaml.Yaml;
 
 import java.awt.Color;
 import java.awt.GradientPaint;
@@ -54,7 +55,9 @@ enum RegionState
     CORE,
     KEEP,
     WATERIZE,
-    DROPPED
+    DROPPED,
+    PREVIOUS,
+    PREVIOUS_BUFFER
 }
 
 class CoordHolder
@@ -140,7 +143,13 @@ public class LogBlockHeatmapperRegionTrimmer
 
     static final Color keepCoreA = new Color(0, 64, 0);
     static final Color keepCoreB = new Color(0, 106, 0);
-    
+
+    static final Color previousA = new Color(4, 68, 66);
+    static final Color previousB = new Color(8, 128, 123);
+
+    static final Color previousBufferA = new Color(8, 128, 96);
+    static final Color previousBufferB = new Color(11, 218, 160);
+
     static final Color activity = new Color(87, 87, 87);
     static final Color activityBuffer = new Color(157, 157, 157);
 
@@ -547,6 +556,66 @@ public class LogBlockHeatmapperRegionTrimmer
             }
         }
 
+        // propagating previous buffers out by one...
+
+        File keepers = new File("keepregions.yml");
+        if(keepers.exists())
+        {
+            System.out.println("LOAD KEEPERS");
+            FileReader loader = new FileReader(keepers);
+            Map<String,RegionState> oldkeepers = (Map<String,RegionState>)new Yaml().load(loader);
+            loader.close();
+
+            for(int i=-regionBase;i<=regionBase;i++)
+            {
+                for(int j=-regionBase;j<=regionBase;j++)
+                {
+                    String regionref = "r."+(i)+"."+(j)+".mca";
+                    RegionState oldstate = oldkeepers.getOrDefault(regionref,RegionState.REMOVE);
+                    if (
+                            oldstate==RegionState.CORE||
+                            oldstate==RegionState.KEEP||
+                            oldstate==RegionState.PREVIOUS||
+                            oldstate==RegionState.PREVIOUS_BUFFER||
+                            oldstate==RegionState.WATERIZE //just for safety even though its not needed
+                    )
+                    {
+                        for(int di=-1;di<=1;di++)
+                        {
+                            for(int dj=-1;dj<=1;dj++)
+                            {
+                                int ri=i+di;
+                                int rj=j+dj;
+                                if(ri<-regionBase||ri>regionBase)
+                                {
+                                    break; //out of bounds;
+                                }
+
+                                if(rj<-regionBase||rj>regionBase)
+                                {
+                                    break; //out of bounds;
+                                }
+
+                                String regionref_u = "r."+(ri)+"."+(rj)+".mca";
+                                RegionState newstate = keepRegions.getOrDefault(regionref_u,RegionState.REMOVE);
+                                if (
+                                        newstate==RegionState.REMOVE||
+                                        newstate==RegionState.DROPPED||
+                                        newstate==RegionState.PREVIOUS_BUFFER
+                                )
+                                {
+                                    keepRegions.put(regionref_u,(di==0&&dj==0)?RegionState.PREVIOUS:RegionState.PREVIOUS_BUFFER);
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        // else nothing to do, no previous run data found as "baseline"
+
+
+
         //max=Math.min(max, 1000);
         //int steps=max/256;
         //BufferedWriter bw = new BufferedWriter(new FileWriter(new File("D:/emc2/arca_slash/database/crunched.pgm")));
@@ -560,6 +629,10 @@ public class LogBlockHeatmapperRegionTrimmer
         //FROM `lb-surv`
         //INTO OUTFILE 'D:/emc2/arca_slash/database/lbcrunchsurvival.csv';
 
+
+
+        new Yaml().dump(keepRegions,new FileWriter("keepregions.yml"));
+
         ImageInfo imi = new ImageInfo(dataField.length, dataField.length, 8, false); // 8 bits per channel, no alpha
         // open image for writing to a output stream
         PngWriter png = new PngWriter(new FileOutputStream("map_rg.png"), imi);
@@ -608,6 +681,12 @@ public class LogBlockHeatmapperRegionTrimmer
                                 case DROPPED:
                                     color = (grid ? removeA_Dropped : removeB_Dropped).getRGB();
                                     break;
+                                case PREVIOUS:
+                                    color = (grid ? previousA : previousB).getRGB();
+                                    break;
+                                case PREVIOUS_BUFFER:
+                                    color = (grid ? previousBufferA : previousBufferB).getRGB();
+                                    break;
                             }
                         }
                         break;
@@ -643,10 +722,10 @@ public class LogBlockHeatmapperRegionTrimmer
         try {
             fileActions = new PrintStream(new FileOutputStream("mergeMap.sh"));
             fileActions.println("mkdir oldChunks");
-            System.out.println("mkdir oldChunks");
+            //System.out.println("mkdir oldChunks");
 
             fileActions.println("mkdir oldChunksWaterize");
-            System.out.println("mkdir oldChunksWaterize");
+            //System.out.println("mkdir oldChunksWaterize");
             keepRegions.forEach((k,v)->
             {
                 switch(v)
@@ -655,25 +734,26 @@ public class LogBlockHeatmapperRegionTrimmer
                     case REMOVE:
                     case DROPPED:
                         fileActions.println("mv "+k+" oldChunks/");
-                        System.out.println("mv "+k+" oldChunks/");
+                        //System.out.println("mv "+k+" oldChunks/");
                         break;
                     case CORE:
                         fileActions.println("echo "+k+" is keepCore");
-                        System.out.println("echo "+k+" is keepCore");
+                        //System.out.println("echo "+k+" is keepCore");
                         break;
                     case KEEP:
                         fileActions.println("echo "+k+" is keep");
-                        System.out.println("echo "+k+" is keep");
+                        //System.out.println("echo "+k+" is keep");
                         break;
                     case WATERIZE:
                         fileActions.println("mv "+k+" oldChunksWaterize/");
-                        System.out.println("mv "+k+" oldChunksWaterize/");
+                        //System.out.println("mv "+k+" oldChunksWaterize/");
                         fileActions.println("mv waterize/"+k+" ./");
-                        System.out.println("mv waterize/"+k+" ./");
+                        //System.out.println("mv waterize/"+k+" ./");
                         break;
                 }
             });
             fileActions.close();
+            //dumping a statefile for adding a new buffer on the next run
         } catch (FileNotFoundException e) {
             e.printStackTrace();
         }