trace

added TraceReference representation, gson, traces path,

11/30/2018 12:27:47 PM

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