summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@lukeshu.com>2017-03-13 20:05:32 -0400
committerLuke Shumaker <lukeshu@lukeshu.com>2017-03-13 20:05:32 -0400
commit0413955b60cd292550df19068d4f380b7de6fc86 (patch)
tree9095ccb76e8ac6e422f8109ce23f9a1ec77908b1
parent4b4eb340a373c05ac38c6bd12c9c66fa920604f0 (diff)
simplify
-rw-r--r--dslog/DseventsReader.java2
-rw-r--r--dslog/DslogReader.java2
-rw-r--r--dslog/Logdir.java101
-rw-r--r--dslog/PdplogReader.java2
-rw-r--r--dslog/Versioned.java12
5 files changed, 68 insertions, 51 deletions
diff --git a/dslog/DseventsReader.java b/dslog/DseventsReader.java
index 371b9b3..2914aa1 100644
--- a/dslog/DseventsReader.java
+++ b/dslog/DseventsReader.java
@@ -8,7 +8,7 @@ import java.time.Instant;
import java.util.Iterator;
import java.util.NoSuchElementException;
-public class DseventsReader implements Closeable, Iterator<DseventsReader.Event> {
+public class DseventsReader implements Versioned, Closeable, Iterator<DseventsReader.Event> {
public static class Event {
public Instant time;
public String message;
diff --git a/dslog/DslogReader.java b/dslog/DslogReader.java
index 5de3ba6..cc6f0e9 100644
--- a/dslog/DslogReader.java
+++ b/dslog/DslogReader.java
@@ -10,7 +10,7 @@ import java.util.Iterator;
import java.util.NoSuchElementException;
import java.util.stream.IntStream;
-public class DslogReader implements Closeable, Iterator<DslogReader.Entry> {
+public class DslogReader implements Versioned, Closeable, Iterator<DslogReader.Entry> {
public static class Entry {
public Instant time;
diff --git a/dslog/Logdir.java b/dslog/Logdir.java
index b798757..ea7683b 100644
--- a/dslog/Logdir.java
+++ b/dslog/Logdir.java
@@ -2,74 +2,79 @@ package dslog;
import java.io.IOException;
import java.nio.file.Files;
+import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
-import java.util.SortedMap;
import java.util.Map;
+import java.util.SortedMap;
import java.util.TreeMap;
+import java.util.function.Supplier;
class Logdir {
public static class LogSet {
- public String name;
- public String dslog = "␕";
- public String dsevents = "␕";
- public String pdplog = "␕";
+ public final String name;
+ public LogSet(String name) {
+ this.name = name;
+ }
+ public Path dslogPath, dseventsPath, pdplogPath;
public String toString() {
- return name+" "+dslog+"/"+dsevents+"/"+pdplog;
+ return name+" "+verstr(this::dslog)+"/"+verstr(this::dsevents)+"/"+verstr(this::pdplog);
+ }
+
+ private static String verstr(Versioned.Supplier getter) {
+ try (Versioned thing = getter.get()) {
+ if (thing == null) {
+ return "␕";
+ }
+ return ""+thing.version();
+ } catch (IOException e) {
+ return "☠";
+ }
+ }
+
+ public DslogReader dslog() throws IOException {
+ if (dslogPath == null) {
+ return null;
+ }
+ return new DslogReader(Files.newInputStream(dslogPath));
+ }
+ public DseventsReader dsevents() throws IOException {
+ if (dseventsPath == null) {
+ return null;
+ }
+ return new DseventsReader(Files.newInputStream(dseventsPath));
+ }
+ public PdplogReader pdplog() throws IOException {
+ if (pdplogPath == null) {
+ return null;
+ }
+ return new PdplogReader(Files.newInputStream(pdplogPath));
}
}
- private static LogSet getSet(Map<String, LogSet> sets, String name) {
+ private static LogSet getSet(Map<String, LogSet> sets, String filename) {
+ String setname = filename.substring(0, filename.lastIndexOf('.'));
LogSet set;
- synchronized (sets) {
- set = sets.get(name);
- if (set == null) {
- set = new LogSet();
- set.name = name;
- sets.put(name, set);
- }
+ set = sets.get(setname);
+ if (set == null) {
+ set = new LogSet(setname);
+ sets.put(set.name, set);
}
return set;
}
public static SortedMap<String, LogSet> opendir(String dirname) throws IOException {
SortedMap<String, LogSet> logsets = new TreeMap<String, LogSet>();
List<Exception> errs = new ArrayList<Exception>();
- Files.list(Paths.get(dirname)).parallel().forEach(filepath->{
- try {
- String filename = filepath.getFileName().toString();
- if (filename.endsWith(".dslog")) {
- String setname = filename.substring(0, filename.lastIndexOf('.'));
- try (DslogReader dslog = new DslogReader(Files.newInputStream(filepath))) {
- getSet(logsets, setname).dslog = ""+dslog.version();
- } catch (Exception e) {
- getSet(logsets, setname).pdplog = "☠";
- throw e;
- }
- } else if (filename.endsWith(".dsevents")) {
- String setname = filename.substring(0, filename.lastIndexOf('.'));
- try (DseventsReader dsevents = new DseventsReader(Files.newInputStream(filepath))) {
- getSet(logsets, setname).dsevents = ""+dsevents.version();
- } catch (Exception e) {
- getSet(logsets, setname).pdplog = "☠";
- throw e;
- }
- } else if (filename.endsWith(".pdplog")) {
- String setname = filename.substring(0, filename.lastIndexOf('.'));
- try (PdplogReader pdplog = new PdplogReader(Files.newInputStream(filepath))) {
- getSet(logsets, setname).pdplog = ""+pdplog.version();
- } catch (Exception e) {
- getSet(logsets, setname).pdplog = "☠";
- throw e;
- }
- }
- } catch (Exception e) {
- e = new IOException("Could not read file: "+filepath.toString(), e);
- synchronized (errs) {
- errs.add(e);
- }
- e.printStackTrace();
+ Files.list(Paths.get(dirname)).forEach(filepath->{
+ String filename = filepath.getFileName().toString();
+ if (filename.endsWith(".dslog")) {
+ getSet(logsets, filename).dslogPath = filepath;
+ } else if (filename.endsWith(".dsevents")) {
+ getSet(logsets, filename).dseventsPath = filepath;
+ } else if (filename.endsWith(".pdplog")) {
+ getSet(logsets, filename).pdplogPath = filepath;
}
});
return logsets;
diff --git a/dslog/PdplogReader.java b/dslog/PdplogReader.java
index ae87b32..20dbd95 100644
--- a/dslog/PdplogReader.java
+++ b/dslog/PdplogReader.java
@@ -5,7 +5,7 @@ import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
-public class PdplogReader implements Closeable {
+public class PdplogReader implements Versioned, Closeable {
/*============================================================*\
|| Primitive IO ||
diff --git a/dslog/Versioned.java b/dslog/Versioned.java
new file mode 100644
index 0000000..1bed0f5
--- /dev/null
+++ b/dslog/Versioned.java
@@ -0,0 +1,12 @@
+package dslog;
+
+import java.io.IOException;
+import java.io.Closeable;
+
+interface Versioned extends Closeable {
+ public int version() throws IOException;
+
+ public static interface Supplier {
+ public Versioned get() throws IOException;
+ }
+}