From 8deda5a91ff3de167e80d805e8856a74d661fb9c Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Sun, 12 Mar 2017 21:09:32 -0400 Subject: speed, aggregate --- dslog/Main.java | 57 ++++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 42 insertions(+), 15 deletions(-) diff --git a/dslog/Main.java b/dslog/Main.java index f95be77..40851bc 100644 --- a/dslog/Main.java +++ b/dslog/Main.java @@ -1,38 +1,65 @@ package dslog; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; class Main { public static void dslog2csv(String[] args) throws IOException { for (String filename : args) { System.out.println("Filename: "+filename); - DslogReader file = new DslogReader(new FileInputStream(filename)); + DslogReader file = new DslogReader(Files.newInputStream(Paths.get(filename))); System.out.println("Format Version: "+file.version); System.out.println("Start Time: "+file.startTime); CsvWriter.Dslog2CSV(file, System.out); } } + public static class LogSet { + public DslogReader dslog; + public DseventsReader dsevents; + public PdplogReader pdplog; + } + + private static LogSet getSet(Map sets, String name) { + LogSet set; + synchronized (sets) { + set = sets.get(name); + if (set == null) { + set = new LogSet(); + sets.put(name, set); + } + } + return set; + } + public static void main(String[] args) throws IOException { for (String dirname : args) { - for (File file : (new File(dirname)).listFiles()) { + Map logsets = new HashMap(); + List errs = new ArrayList(); + Files.list(Paths.get(dirname)).parallel().forEach(filepath->{ try { - if (file.getName().endsWith(".dslog")) { - DslogReader dslog = new DslogReader(new FileInputStream(file)); - System.out.println(file.getName()+" : "+dslog.version+" : "+dslog.startTime); - } else if (file.getName().endsWith(".dsevents")) { - DseventsReader dsevents = new DseventsReader(new FileInputStream(file)); - System.out.println(file.getName()+" : "+dsevents.version+" : "+dsevents.startTime); - } else if (file.getName().endsWith(".pdplog")) { - PdplogReader pdplog = new PdplogReader(new FileInputStream(file)); - System.out.println(file.getName()+" : "+pdplog.version); + String filename = filepath.getFileName().toString(); + if (filename.endsWith(".dslog")) { + String setname = filename.substring(0, filename.lastIndexOf('.')); + getSet(logsets, setname).dslog = new DslogReader(Files.newInputStream(filepath)); + } else if (filename.endsWith(".dsevents")) { + String setname = filename.substring(0, filename.lastIndexOf('.')); + getSet(logsets, setname).dsevents = new DseventsReader(Files.newInputStream(filepath)); + } else if (filename.endsWith(".pdplog")) { + String setname = filename.substring(0, filename.lastIndexOf('.')); + getSet(logsets, setname).pdplog = new PdplogReader(Files.newInputStream(filepath)); } } catch (Exception e) { - (new IOException("Could not read file: "+file.toString(), e)).printStackTrace(); + synchronized (errs) { + errs.add(new IOException("Could not read file: "+filepath.toString(), e)); + } } - } + }); } } } -- cgit v1.2.3