Splitter-NG JigDFS Codec is ready to use
authorMaximilian Quellmalz <maximilian.quellmalz@mailbox.tu-dresden.de>
Thu, 23 Oct 2014 13:24:56 +0000 (15:24 +0200)
committerMaximilian Quellmalz <maximilian.quellmalz@mailbox.tu-dresden.de>
Thu, 23 Oct 2014 13:24:56 +0000 (15:24 +0200)
Splitter-ng-plugin-jigdfs/build.xml
Splitter-ng-plugin-jigdfs/src/jigdfsplugin/CodecJigDFS.java
Splitter-ng-plugin-jigdfs/src/jigdfsplugin/SplitterPluginJigDFS.java

index 4d19ac5..ecb9332 100644 (file)
@@ -72,7 +72,7 @@
                <jar jarfile="bin/${ant.project.name}_tmp.jar" filesetmanifest="merge">
                        <fileset dir="bin" includes="**/*.class" />
                        <fileset dir="lib" includes="**/*.class" />
-                       <!--zipgroupfileset dir="lib" includes="*.jar" /-->
+                       <zipgroupfileset dir="lib" includes="*.jar" />
                </jar>
                <zip destfile="bin/${ant.project.name}.jar">
                        <zipfileset src="bin/${ant.project.name}_tmp.jar"
index ec1d906..0005b48 100644 (file)
@@ -50,10 +50,12 @@ public class CodecJigDFS implements SplitterCodec {
        private byte [] dataAndCoding_ptrs_flat;
        
        public CodecJigDFS(int k, int m) {
+               //Simple Constructor for testing with SplitterPluginJigDFS/Main()
                Map<String, Integer> codecParameter = new HashMap<String, Integer>();
                codecParameter.put("k", k);
                codecParameter.put("m", m);
-               codecParameter.put("packetsize", 4096);
+//             codecParameter.put("packetsize", 4096);
+               codecParameter.put("packetsize", 64);
                init(codecParameter);
        }
        
@@ -126,6 +128,12 @@ public class CodecJigDFS implements SplitterCodec {
        public byte[][] decode(byte[][] dataAndCoding_ptrs, boolean [] erased){
                
                dataAndCoding_list = new ArrayList <byte[]> (Arrays.asList(dataAndCoding_ptrs));
+               for (int i=0; i<erased.length; i++){
+                       //JigDFS needs null pointer for missing fragments
+                       if (erased[i]) {
+                               dataAndCoding_list.set(i, null);
+                       }
+               }
                
                //Test reuse or create new
                int fragmentsize = dataAndCoding_ptrs[0].length;
@@ -138,8 +146,7 @@ public class CodecJigDFS implements SplitterCodec {
                } catch (IDANotInitializedException e) {
                        throw new IllegalArgumentException("JigDFS IDANotInitializedException: \n"+e.toString());
                } catch (IDADecodeException e) {
-                       // TODO Auto-generated catch block
-                       e.printStackTrace();
+                       throw new IllegalArgumentException("JigDFS IDADecodeException: \n"+e.toString());
                }
                
                fragmentsize = data_ptrs_flat.length/k;
index 3fd6366..3a3b459 100644 (file)
@@ -74,19 +74,31 @@ public class SplitterPluginJigDFS implements Plugable {
                int k = 2;
                int m = 1;
                SplitterCodec codecJigDFS = new CodecJigDFS(k,m);
-               String datatxt= "Das soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal reinDas soll hier x mal rein";
-               byte [][] data = new byte [datatxt.getBytes().length][k];
-               for (int i = 0; i < data.length; i++) {
-                       data[i] = datatxt.getBytes();
-               }
+               //nur als Test müssen beide gleich lang sein
+               String datatxt1= "1asdasd asdasd asd aadsf dsf ewaf1asdasd asdasd asd aadsf dsf ewa11asdasd asdasd asd aadsf dsf ewaf1asdasd asdasd asd aadsf dsf ewa11asdasd asdasd asd aadsf dsf ewaf1asdasd asdasd asd aadsf dsf ewa11asdasd asdasd asd aadsf dsf ewaf1asdasd asdasd asd aadsf dsf ewa11asdasd asdasd asd aadsf dsf ewaf1asdasd asdasd asd aadsf dsf ewa11asdasd asdasd asd aadsf dsf ewaf1asdasd asdasd asd aadsf dsf ewa11asdasd asdasd asd aadsf dsf ewaf1asdasd asdasd asd aadsf dsf ewa11asdasd asdasd asd aadsf dsf ewaf1asdasd asdasd asd aadsf dsf ewa11asdasd asdasd asd aadsf dsf ewaf1asdasd asdasd asd aadsf dsf ewa11asdasd asdasd asd aadsf dsf ewaf1asdasd asdasd asd aadsf dsf ewa11asdasd asdasd asd aadsf dsf ewaf1asdasd asdasd asd aadsf dsf ewa11asdasd asdasd asd aadsf dsf ewaf1asdasd asdasd asd aadsf dsf ewa11asdasd asdasd asd aadsf dsf ewaf1asdasd asdasd asd aadsf dsf ewa11asdasd asdasd asd aadsf dsf ewaf1asdasd asdasd asd aadsf dsf ewa11asdasd asdasd asd aadsf dsf ewaf1asdasd asdasd asd aadsf dsf ewa11asdasd asdasd asd aadsf dsf ewaf1asdasd asdasd asd aadsf dsf ewa11asdasd asdasd asd aadsf dsf ewaf1asdasd asdasd asd aadsf dsf ewa11asdasd asdasd asd aadsf dsf ewaf1asdasd asdasd asd aadsf dsf ewa11asdasd asdasd asd aadsf dsf ewaf1asdasd asdasd asd aadsf dsf ewa11asdasd asdasd asd aadsf dsf ewaf1asdasd asdasd asd aadsf dsf ewa11asdasd asdasd asd aadsf dsf ewaf1asdasd asdasd asd aadsf dsf ewa1";
+               String datatxt2= "2hjkuikzuuikuikl u zukuik uikiukuikiuk u kujzjuzjkzujkuzjzuj zu j22hjkuikzuuikuikl u zukuik uikiukuikiuk u kujzjuzjkzujkuzjzuj zu j22hjkuikzuuikuikl u zukuik uikiukuikiuk u kujzjuzjkzujkuzjzuj zu j22hjkuikzuuikuikl u zukuik uikiukuikiuk u kujzjuzjkzujkuzjzuj zu j22hjkuikzuuikuikl u zukuik uikiukuikiuk u kujzjuzjkzujkuzjzuj zu j22hjkuikzuuikuikl u zukuik uikiukuikiuk u kujzjuzjkzujkuzjzuj zu j22hjkuikzuuikuikl u zukuik uikiukuikiuk u kujzjuzjkzujkuzjzuj zu j22hjkuikzuuikuikl u zukuik uikiukuikiuk u kujzjuzjkzujkuzjzuj zu j22hjkuikzuuikuikl u zukuik uikiukuikiuk u kujzjuzjkzujkuzjzuj zu j22hjkuikzuuikuikl u zukuik uikiukuikiuk u kujzjuzjkzujkuzjzuj zu j22hjkuikzuuikuikl u zukuik uikiukuikiuk u kujzjuzjkzujkuzjzuj zu j22hjkuikzuuikuikl u zukuik uikiukuikiuk u kujzjuzjkzujkuzjzuj zu j22hjkuikzuuikuikl u zukuik uikiukuikiuk u kujzjuzjkzujkuzjzuj zu j22hjkuikzuuikuikl u zukuik uikiukuikiuk u kujzjuzjkzujkuzjzuj zu j22hjkuikzuuikuikl u zukuik uikiukuikiuk u kujzjuzjkzujkuzjzuj zu j22hjkuikzuuikuikl u zukuik uikiukuikiuk u kujzjuzjkzujkuzjzuj zu j22hjkuikzuuikuikl u zukuik uikiukuikiuk u kujzjuzjkzujkuzjzuj zu j22hjkuikzuuikuikl u zukuik uikiukuikiuk u kujzjuzjkzujkuzjzuj zu j22hjkuikzuuikuikl u zukuik uikiukuikiuk u kujzjuzjkzujkuzjzuj zu j22hjkuikzuuikuikl u zukuik uikiukuikiuk u kujzjuzjkzujkuzjzuj zu j22hjkuikzuuikuikl u zukuik uikiukuikiuk u kujzjuzjkzujkuzjzuj zu j2";
+               byte [][] data = new byte [datatxt1.getBytes().length][k];
+               data[0] = datatxt1.getBytes();
+               data[1] = datatxt2.getBytes();
+               System.out.println("Part org: " + DatatypeConverter.printHexBinary(data[0]));
+               System.out.println("Part org: " + new String(data[0]));
+               System.out.println("Part org: " + DatatypeConverter.printHexBinary(data[1]));
+               System.out.println("Part org: " + new String(data[1]));
+               
 
                byte[][] result = codecJigDFS.encode(data);
                for (byte [] part : result){
-                       System.out.println("Part: " + DatatypeConverter.printHexBinary(part));
+                       System.out.println("Part enc: " + DatatypeConverter.printHexBinary(part));
+                       //System.out.println("Part enc: " + new String(part));
                }
-               byte[][] recover = codecJigDFS.decode(result, null);
+               boolean [] erased = new boolean[] {false,false,false};
+               Arrays.fill(result[0],(byte)0);erased[0]=true;
+               //Arrays.fill(result[1],(byte)0);erased[1]=true;
+               //Arrays.fill(result[2],(byte)0);erased[2]=true;
+               byte[][] recover = codecJigDFS.decode(result, erased);
                for (byte [] part : recover){
-                       System.out.println("Part: " + DatatypeConverter.printHexBinary(part));
+                       System.out.println("Part dec: " + DatatypeConverter.printHexBinary(part));
+                       System.out.println("Part dec: " + new String(part));
                }
                
        }