فهرست منبع

reworked IA syncing to work with multiple items by generating a CSV file for that purpose

Tom Görner 2 سال پیش
والد
کامیت
f05d6f5b4c

+ 10 - 0
SenaBitWiggler/src/main/java/de/nplusc/izc/senabitwiggler/Firmware.java

@@ -7,6 +7,8 @@ public class Firmware {
     private HashMap<String, FirmwareVersion> versions;
     private boolean InitialDLDone;
 
+    private boolean IAItemCreated = false;
+
     private int major;
     private int minor;
     private int patch;
@@ -68,4 +70,12 @@ public class Firmware {
     public void setDeviceId(String deviceId) {
         DeviceId = deviceId;
     }
+
+    public boolean isIAItemCreated() {
+        return IAItemCreated;
+    }
+
+    public void setIAItemCreated(boolean IAItemCreated) {
+        this.IAItemCreated = IAItemCreated;
+    }
 }

+ 46 - 0
SenaBitWiggler/src/main/java/de/nplusc/izc/senabitwiggler/FirmwareAutoDumper.java

@@ -114,6 +114,10 @@ public class FirmwareAutoDumper
 
             File outfolder_tmp = new File(outfolder, "tmp");
 
+            File outfolder_archivarius = new File(outfolder, "archivarius");
+            outfolder_archivarius.mkdirs();
+
+            File archiveorgCSV = new File(outfolder_archivarius,"upload.csv");
 
             for(String[] index:indexes)
             {
@@ -192,6 +196,7 @@ public class FirmwareAutoDumper
                 if (!DUMMY_MODE) {
                     new File(outfolder_tmp, "Firmware").delete();
                     pushToMatrix();
+
                 }
 
             }
@@ -201,6 +206,7 @@ public class FirmwareAutoDumper
             {
                 dummydownloadfake.close();
             }
+            generateIACSV(archiveorgCSV,outfolder);
             y.dump(state,new FileWriter(statefile));
         }
         catch (IOException ex)
@@ -209,6 +215,46 @@ public class FirmwareAutoDumper
         }
     }
 
+    private static void generateIACSV(File destination, File outbase)
+    {
+        HashSet<String> csvlines = new HashSet<>();
+        state.getFirmwares().forEach((k,v)->
+        {
+
+            String[] keysplitted = k.split("-");
+
+            String key_delanguaged = keysplitted[0];
+            if(keysplitted.length>=2)
+            {
+                for(int i=1;i<keysplitted.length-1;i++)
+                {
+                    key_delanguaged = key_delanguaged+"-"+keysplitted[i];
+                }
+            }
+            final String itemname = "sena_firmware_files_"+key_delanguaged;
+            v.getVersions().forEach((k2,v2)->
+            {
+                if((!v2.isIAUploaded()&&(!v2.isFiller())))
+                {
+                    v2.setIAUploaded(true);
+                    String filename = new File(outbase,v2.getFilename()).getAbsoluteFile().toString();
+                    csvlines.add(itemname+","+filename+",firmware,open_source_software,software");
+                }
+            });
+        });
+        try (FileOutputStream w = new FileOutputStream(destination);PrintStream p = new PrintStream(w);)
+        {
+            p.println("identifier,file,subject,collection,mediatype");
+            String[] lines = csvlines.toArray(new String[csvlines.size()]);
+            for(String line :lines)
+            {
+                p.println(line);
+            }
+        } catch (IOException e) {
+            l.warn("IO Error on generateIACSV");
+        }
+    }
+
     private static void pushToMatrix()
     {
         if(!EntryPoint.c.isMatrixEnabled())

+ 10 - 0
SenaBitWiggler/src/main/java/de/nplusc/izc/senabitwiggler/FirmwareVersion.java

@@ -20,6 +20,8 @@ public class FirmwareVersion {
 
     private String susVersion = "";
 
+    private boolean IAUploaded = false;
+
     public String getSusVersion() {
         return susVersion;
     }
@@ -128,4 +130,12 @@ public class FirmwareVersion {
     public void setFirmwareLocation(String firmwareLocation) {
         FirmwareLocation = firmwareLocation;
     }
+
+    public boolean isIAUploaded() {
+        return IAUploaded;
+    }
+
+    public void setIAUploaded(boolean IAUploaded) {
+        this.IAUploaded = IAUploaded;
+    }
 }