trace

Details

diff --git a/src/main/java/br/ufrgs/inf/prosoft/trace/reader/Traces.java b/src/main/java/br/ufrgs/inf/prosoft/trace/reader/Traces.java
index e8984e6..87c6505 100644
--- a/src/main/java/br/ufrgs/inf/prosoft/trace/reader/Traces.java
+++ b/src/main/java/br/ufrgs/inf/prosoft/trace/reader/Traces.java
@@ -5,12 +5,18 @@
  */
 package br.ufrgs.inf.prosoft.trace.reader;
 
+import br.ufrgs.inf.prosoft.trace.Parameter;
+import br.ufrgs.inf.prosoft.trace.Return;
 import br.ufrgs.inf.prosoft.trace.TraceConcrete;
+import br.ufrgs.inf.prosoft.trace.TraceParameter;
+import br.ufrgs.inf.prosoft.trace.TraceReturn;
 import com.google.gson.Gson;
 import com.google.gson.JsonSyntaxException;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.NoSuchElementException;
 import java.util.stream.Stream;
 
@@ -42,4 +48,42 @@ public class Traces {
         return traceConcrete;
     }
 
+    public static List<Parameter> getTraceParameter(int index) {
+        try {
+            Stream<String> lines = Files.lines(Paths.get(Traces.PATH));
+            Gson gson = new Gson();
+            try {
+                String reference = lines.skip(index).findFirst().get();
+                TraceParameter traceParameter = gson.fromJson(reference, TraceParameter.class);
+                return traceParameter.getParameters();
+            } catch (NoSuchElementException ex) {
+                System.err.println("[Trace] Wrong index of trace " + index);
+            } catch (JsonSyntaxException ex) {
+                System.err.println("[Trace] Fail to parse JSON trace " + index);
+            }
+        } catch (IOException ex) {
+            System.err.println("[Trace] Fail to read traces file");
+        }
+        return new ArrayList<>();
+    }
+
+    public static Return getTraceReturn(int index) {
+        try {
+            Stream<String> lines = Files.lines(Paths.get(Traces.PATH));
+            Gson gson = new Gson();
+            try {
+                String reference = lines.skip(index).findFirst().get();
+                TraceReturn traceReturn = gson.fromJson(reference, TraceReturn.class);
+                return traceReturn.getReturn();
+            } catch (NoSuchElementException ex) {
+                System.err.println("[Trace] Wrong index of trace " + index);
+            } catch (JsonSyntaxException ex) {
+                System.err.println("[Trace] Fail to parse JSON trace " + index);
+            }
+        } catch (IOException ex) {
+            System.err.println("[Trace] Fail to read traces file");
+        }
+        return null;
+    }
+
 }
diff --git a/src/main/java/br/ufrgs/inf/prosoft/trace/TraceParameter.java b/src/main/java/br/ufrgs/inf/prosoft/trace/TraceParameter.java
new file mode 100644
index 0000000..60ea63a
--- /dev/null
+++ b/src/main/java/br/ufrgs/inf/prosoft/trace/TraceParameter.java
@@ -0,0 +1,26 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package br.ufrgs.inf.prosoft.trace;
+
+import java.util.List;
+
+/**
+ *
+ * @author romulo
+ */
+public class TraceParameter {
+
+    private final List<Parameter> p;
+
+    public TraceParameter(List<Parameter> p) {
+        this.p = p;
+    }
+
+    public List<Parameter> getParameters() {
+        return this.p;
+    }
+
+}
diff --git a/src/main/java/br/ufrgs/inf/prosoft/trace/TraceReference.java b/src/main/java/br/ufrgs/inf/prosoft/trace/TraceReference.java
index 6c7fbc3..deb9de8 100644
--- a/src/main/java/br/ufrgs/inf/prosoft/trace/TraceReference.java
+++ b/src/main/java/br/ufrgs/inf/prosoft/trace/TraceReference.java
@@ -31,14 +31,12 @@ public class TraceReference extends Trace {
 
     @Override
     public Return getReturn() {
-        TraceConcrete traceConcrete = Traces.getTraceConcrete(this.index);
-        return traceConcrete.getReturn();
+        return Traces.getTraceReturn(this.index);
     }
 
     @Override
     public List<Parameter> getParameters() {
-        TraceConcrete traceConcrete = Traces.getTraceConcrete(this.index);
-        return traceConcrete.getParameters();
+        return Traces.getTraceParameter(this.index);
     }
 
 }
diff --git a/src/main/java/br/ufrgs/inf/prosoft/trace/TraceReturn.java b/src/main/java/br/ufrgs/inf/prosoft/trace/TraceReturn.java
new file mode 100644
index 0000000..aec82c0
--- /dev/null
+++ b/src/main/java/br/ufrgs/inf/prosoft/trace/TraceReturn.java
@@ -0,0 +1,23 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package br.ufrgs.inf.prosoft.trace;
+
+/**
+ *
+ * @author romulo
+ */
+public class TraceReturn {
+
+    private final Return r;
+
+    public TraceReturn(Return r) {
+        this.r = r;
+    }
+
+    public Return getReturn() {
+        return this.r;
+    }
+}