From cf1ea6c1a28ec7bc4cc7b8cd0da8ad5f1011ac7c Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Mon, 13 Mar 2017 12:58:54 -0400 Subject: split --- dslog/Logdir.java | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 dslog/Logdir.java (limited to 'dslog/Logdir.java') diff --git a/dslog/Logdir.java b/dslog/Logdir.java new file mode 100644 index 0000000..90661bb --- /dev/null +++ b/dslog/Logdir.java @@ -0,0 +1,77 @@ +package dslog; + +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.SortedMap; +import java.util.Map; +import java.util.TreeMap; + +class Logdir { + public static class LogSet { + public String name; + public String dslog = "␕"; + public String dsevents = "␕"; + public String pdplog = "␕"; + + public String toString() { + return name+" "+dslog+"/"+dsevents+"/"+pdplog; + } + } + + private static LogSet getSet(Map sets, String name) { + LogSet set; + synchronized (sets) { + set = sets.get(name); + if (set == null) { + set = new LogSet(); + set.name = name; + sets.put(name, set); + } + } + return set; + } + public static SortedMap opendir(String dirname) throws IOException { + SortedMap logsets = new TreeMap(); + List errs = new ArrayList(); + 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(); + } + }); + return logsets; + } +} -- cgit v1.2.3