memoizeit

Details

diff --git a/src/main/java/br/ufrgs/inf/prosoft/approachescomparison/adapter/TraceReader.java b/src/main/java/br/ufrgs/inf/prosoft/approachescomparison/adapter/TraceReader.java
index 4c4b296..7567c82 100644
--- a/src/main/java/br/ufrgs/inf/prosoft/approachescomparison/adapter/TraceReader.java
+++ b/src/main/java/br/ufrgs/inf/prosoft/approachescomparison/adapter/TraceReader.java
@@ -11,108 +11,25 @@ import br.ufrgs.inf.prosoft.memoizeit.OccurrenceConcrete;
 import br.ufrgs.inf.prosoft.memoizeit.OccurrenceReference;
 import br.ufrgs.inf.prosoft.memoizeit.Parameter;
 import br.ufrgs.inf.prosoft.trace.Trace;
-import br.ufrgs.inf.prosoft.trace.TraceConcrete;
 import br.ufrgs.inf.prosoft.trace.TraceReference;
-import br.ufrgs.inf.prosoft.trace.Traces;
-import com.google.gson.Gson;
-import com.google.gson.JsonSyntaxException;
-import java.io.BufferedInputStream;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.file.Files;
-import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.function.Consumer;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-import java.util.stream.Stream;
+import java.util.stream.Collectors;
 
 /**
  *
  * @author romulo
  */
-public class TraceReader {
+public class TraceReader extends br.ufrgs.inf.prosoft.trace.TraceReader {
 
     private static final Logger logger = Logger.getLogger(TraceReader.class.getName());
 
-    public static List<Trace> partiallyParseFile(String path) {
-        Traces.PATH = path;
-        return parseFile(path, true);
-    }
-
-    public static List<Trace> parseFile(String path) {
-        return parseFile(path, false);
-    }
-
-    public static String getLineCount(String path) throws IOException {
-        try {
-            Process process = Runtime.getRuntime().exec("wc -l " + path);
-            Thread.sleep(2000);
-            if (process.isAlive()) {
-                return "-2";
-            }
-            InputStream inputStream = process.getInputStream();
-            StringBuilder count = new StringBuilder();
-            int c;
-            while (true) {
-                c = inputStream.read();
-                if (c == 32 || c == -1 || c == 10) {
-                    break;
-                }
-                count.append((char) c);
-            }
-            return count.toString();
-        } catch (Exception ex) {
-        }
-        return "-1";
-    }
-
-    private static List<Trace> parseFile(String path, boolean partial) {
-        List<Trace> traces = new ArrayList<>();
-        try {
-            logger.log(Level.INFO, "Parsing {0} traces", getLineCount(path));
-            Stream<String> lines = Files.lines(Paths.get(path));
-            Gson gson = new Gson();
-            lines.forEach(new Consumer<String>() {
-                int i = 0;
-
-                @Override
-                public void accept(String line) {
-                    try {
-                        Trace trace;
-                        if (partial) {
-                            trace = gson.fromJson(line, TraceReference.class);
-                            ((TraceReference) trace).setIndex(i);
-                        } else {
-                            trace = gson.fromJson(line, TraceConcrete.class);
-                        }
-                        traces.add(trace);
-                        System.out.print(".");
-                        if (i != 0 && i % 100 == 0) {
-                            System.out.println();
-                        }
-                        i++;
-                    } catch (JsonSyntaxException e) {
-                        if (line.length() > 2000) {
-                            line = line.substring(0, 2000);
-                        }
-                        logger.log(Level.INFO, "\nMalformed Trace {0}: {1}", new Object[]{i, line});
-                    }
-                }
-            });
-            System.out.println();
-        } catch (IOException ex) {
-            logger.log(Level.SEVERE, null, ex);
-        }
-        return traces;
-    }
-
     public static List<Method> groupByMethods(List<Trace> traces) {
         Map<String, List<Occurrence>> methodNameHasOccurrences = new HashMap<>();
         Set<String> staticMethods = new HashSet<>();
@@ -124,10 +41,9 @@ public class TraceReader {
                     TraceReference traceReference = (TraceReference) trace;
                     occurrence = new OccurrenceReference(traceReference.getIndex(), trace.getInstance(), trace.getStartTime(), trace.getEndTime());
                 } else {
-                    List<Parameter> parameters = new ArrayList<>();
-                    trace.getParameters().forEach((parameter) -> {
-                        parameters.add(new Parameter(parameter.getType(), parameter.getData()));
-                    });
+                    List<Parameter> parameters = trace.getParameters().stream()
+                            .map(parameter -> new Parameter(parameter.getType(), parameter.getData()))
+                            .collect(Collectors.toList());
                     occurrence = new OccurrenceConcrete(trace.getInstance(), trace.getReturn().getData(), parameters, trace.getStartTime(), trace.getEndTime());
                 }
                 try {
@@ -144,11 +60,9 @@ public class TraceReader {
                 logger.log(Level.INFO, "Trace discarted: {0}", trace);
             }
         }
-        List<Method> methods = new ArrayList<>();
-        methodNameHasOccurrences.entrySet().forEach((entry) -> {
-            boolean isStatic = staticMethods.contains(entry.getKey());
-            methods.add(new Method(entry.getKey(), isStatic, entry.getValue()));
-        });
+        List<Method> methods = methodNameHasOccurrences.entrySet().stream().parallel()
+                .map(entry -> new Method(entry.getKey(), staticMethods.contains(entry.getKey()), entry.getValue()))
+                .collect(Collectors.toList());
         return methods;
     }
 }
diff --git a/src/main/java/br/ufrgs/inf/prosoft/memoizeit/OccurrenceReference.java b/src/main/java/br/ufrgs/inf/prosoft/memoizeit/OccurrenceReference.java
index 16c648f..d5cbc8f 100644
--- a/src/main/java/br/ufrgs/inf/prosoft/memoizeit/OccurrenceReference.java
+++ b/src/main/java/br/ufrgs/inf/prosoft/memoizeit/OccurrenceReference.java
@@ -57,7 +57,7 @@ public class OccurrenceReference extends Occurrence {
         Object returnValue = null;
         List<Parameter> parameters = new ArrayList<>();
         if (traceConcrete != null) {
-            returnValue = traceConcrete.getReturn();
+            returnValue = traceConcrete.getReturn().getData();
             parameters = traceConcrete.getParameters().stream()
                     .map(parameter -> new Parameter(parameter.getType(), parameter.getData()))
                     .collect(Collectors.toList());