trace
Changes
pom.xml 8(+8 -0)
Details
pom.xml 8(+8 -0)
diff --git a/pom.xml b/pom.xml
index 64cef84..8a55bc5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,4 +10,12 @@
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
+ <dependencies>
+ <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ <version>2.8.5</version>
+ </dependency>
+ </dependencies>
</project>
\ No newline at end of file
diff --git a/src/main/java/br/ufrgs/inf/prosoft/trace/Trace.java b/src/main/java/br/ufrgs/inf/prosoft/trace/Trace.java
index 53d3118..07f64a5 100644
--- a/src/main/java/br/ufrgs/inf/prosoft/trace/Trace.java
+++ b/src/main/java/br/ufrgs/inf/prosoft/trace/Trace.java
@@ -11,22 +11,18 @@ import java.util.List;
*
* @author romulo
*/
-public class Trace {
+public abstract class Trace {
private final String i;
private final List<String> m;
- private final Return r;
private final String n;
- private final List<Parameter> p;
private final long s;
private final long e;
- public Trace(String instance, List<String> modifiers, Return returnValue, String name, List<Parameter> parameters, long startTime, long endTime) {
+ public Trace(String instance, List<String> modifiers, String name, long startTime, long endTime) {
this.i = instance;
this.m = modifiers;
- this.r = returnValue;
this.n = name;
- this.p = parameters;
this.s = startTime;
this.e = endTime;
}
@@ -39,17 +35,13 @@ public class Trace {
return m;
}
- public Return getReturn() {
- return r;
- }
-
public String getName() {
return n;
}
- public List<Parameter> getParameters() {
- return p;
- }
+ public abstract Return getReturn();
+
+ public abstract List<Parameter> getParameters();
public long getStartTime() {
return s;
diff --git a/src/main/java/br/ufrgs/inf/prosoft/trace/TraceConcrete.java b/src/main/java/br/ufrgs/inf/prosoft/trace/TraceConcrete.java
new file mode 100644
index 0000000..d84bab2
--- /dev/null
+++ b/src/main/java/br/ufrgs/inf/prosoft/trace/TraceConcrete.java
@@ -0,0 +1,34 @@
+/*
+ * 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 TraceConcrete extends Trace {
+
+ private final Return r;
+ private final List<Parameter> p;
+
+ public TraceConcrete(String instance, List<String> modifiers, Return returnValue, String name, List<Parameter> parameters, long startTime, long endTime) {
+ super(instance, modifiers, name, startTime, endTime);
+ this.r = returnValue;
+ this.p = parameters;
+ }
+
+ @Override
+ public Return getReturn() {
+ return this.r;
+ }
+
+ @Override
+ 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
new file mode 100644
index 0000000..8ca2952
--- /dev/null
+++ b/src/main/java/br/ufrgs/inf/prosoft/trace/TraceReference.java
@@ -0,0 +1,43 @@
+/*
+ * 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 TraceReference extends Trace {
+
+ private int index;
+
+ public TraceReference(int index, String instance, List<String> modifiers, String name, long startTime, long endTime) {
+ super(instance, modifiers, name, startTime, endTime);
+ this.index = index;
+ }
+
+ public void setIndex(int index) {
+ this.index = index;
+ }
+
+ public int getIndex() {
+ return index;
+ }
+
+ @Override
+ public Return getReturn() {
+ TraceConcrete traceConcrete = Traces.getTraceConcrete(this.index);
+ return traceConcrete.getReturn();
+ }
+
+ @Override
+ public List<Parameter> getParameters() {
+ TraceConcrete traceConcrete = Traces.getTraceConcrete(this.index);
+ return traceConcrete.getParameters();
+ }
+
+}
diff --git a/src/main/java/br/ufrgs/inf/prosoft/trace/Traces.java b/src/main/java/br/ufrgs/inf/prosoft/trace/Traces.java
new file mode 100644
index 0000000..b0f81c2
--- /dev/null
+++ b/src/main/java/br/ufrgs/inf/prosoft/trace/Traces.java
@@ -0,0 +1,44 @@
+/*
+ * 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 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.NoSuchElementException;
+import java.util.stream.Stream;
+
+/**
+ *
+ * @author romulo
+ */
+public class Traces {
+
+ public static String PATH = "./traces";
+
+ public static TraceConcrete getTraceConcrete(int index) {
+ TraceConcrete traceConcrete = null;
+ try {
+ Stream<String> lines = Files.lines(Paths.get(Traces.PATH));
+ Gson gson = new Gson();
+ try {
+ String reference = lines.skip(index).findFirst().get();
+ traceConcrete = gson.fromJson(reference, TraceConcrete.class);
+ return traceConcrete;
+ } 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 traceConcrete;
+ }
+
+}