helpful progress reporting
[IRC.git] / Robust / src / Benchmarks / MapReduce / Java / Splitter.java
index 53cae4dfef5d2d283c72bc6d3500ec58a3a12eca..07e69e7f2724ea72dd61cb4a3a2e043bf33247a0 100644 (file)
@@ -1,83 +1,72 @@
-//package mapreduce;
-
-//import java.io.FileInputStream;
-//import java.io.IOException;
-
 public class Splitter {
     String filename;
     String content;
     int length;
-    int[] splits;
-    String[] slices;
+    int splitNum;
+    char seperator;
 
     public Splitter(String path, int splitNum, char seperator) {
-       //try{
-           //System.printString("Top of Splitter's constructor\n");
-           filename = path;
-           FileInputStream iStream = new FileInputStream(filename);
-           byte[] b = new byte[1024 * 1024];
-           length = iStream.read(b);
-           if(length < 0) {
-               System./*out.println*/printString("Error! Can not read from input file: " + filename + "\n");
-               System.exit(-1);
-           }
-           content = new String(b, 0, length);
-           //System.printString(content + "\n");
-           iStream.close();
+       //System.printString("Top of Splitter's constructor\n");
+       filename = path;
+       this.length = -1;
+       this.splitNum = splitNum;
+       this.seperator = seperator;
+    }
 
-           if(splitNum == 1) {
-               slices = new String[1];
-               slices[0] = content;
-           } else {
-               splits = new int[splitNum - 1];
-               int index = 0;
-               int span = length / splitNum;
-               int temp = 0;
-               for(int i = 0; i < splitNum - 1; ++i) {
-                   temp += span;
-                   if(temp > index) {
-                       index = temp;
-                       while((content.charAt(index) != seperator) && (index != length - 1)) {
-                           ++index;
-                       }
-                   }
-                   splits[i] = index;
-               }
+    public String[] split() {
+       int[] splits;
+       String[] slices;
+       
+       FileInputStream iStream = new FileInputStream(filename);
+       byte[] b = new byte[1024 * 1024];
+       length = iStream.read(b);
+       if(length < 0) {
+           System.printString("Error! Can not read from input file: " + filename + "\n");
+           System.exit(-1);
+       }
+       content = new String(b, 0, length);
+       //System.printString(content + "\n");
+       iStream.close();
 
-               this.slices = new String[splits.length + 1];
-               for(int i = 0; i < this.slices.length; ++i) {
-                   this.slices[i] = null;
+       if(splitNum == 1) {
+           slices = new String[1];
+           slices[0] = content;
+           this.content = null;
+       } else {
+           splits = new int[splitNum - 1];
+           int index = 0;
+           int span = length / splitNum;
+           int temp = 0;
+           for(int i = 0; i < splitNum - 1; ++i) {
+               temp += span;
+               if(temp > index) {
+                   index = temp;
+                   while((content.charAt(index) != seperator) && (index != length - 1)) {
+                       ++index;
+                   }
                }
+               splits[i] = index;
            }
-       /*} catch(IOException e) {
-           e.printStackTrace();
-           System.exit(-1);
-       }*/
-    }
 
-    public void split() {
-       if(slices.length == 1) {
-           return;
-       }
-       int start = 0;
-       int end = 0;
-       for(int i = 0; i < splits.length; ++i) {
-           end = splits[i];
-           if(end < start) {
-               slices[i] = null;
-           } else {
-               slices[i] = content.substring(start, end);
+           slices = new String[splitNum];
+           int start = 0;
+           int end = 0;
+           for(int i = 0; i < splits.length; ++i) {
+               end = splits[i];
+               if(end < start) {
+                   slices[i] = null;
+               } else {
+                   slices[i] = content.subString(start, end);
+               }
+               start = end + 1;
            }
-           start = end + 1;
+           slices[slices.length - 1] = content.subString(start);
+           this.content = null;
        }
-       slices[slices.length - 1] = content.substring(start);
+       return slices;
     }
 
     public String getFilename() {
        return filename;
     }
-
-    public String[] getSlices() {
-       return this.slices;
-    }
 }