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;
+ }
+}