diff options
Diffstat (limited to 'src/main/java/eu')
| -rw-r--r-- | src/main/java/eu/mulk/aendggner/AendGgner.java | 53 |
1 files changed, 47 insertions, 6 deletions
diff --git a/src/main/java/eu/mulk/aendggner/AendGgner.java b/src/main/java/eu/mulk/aendggner/AendGgner.java index e510efb..c4efd45 100644 --- a/src/main/java/eu/mulk/aendggner/AendGgner.java +++ b/src/main/java/eu/mulk/aendggner/AendGgner.java @@ -1,13 +1,22 @@ package eu.mulk.aendggner; +import java.io.BufferedReader; import java.io.IOException; +import java.nio.file.Files; import java.nio.file.Path; import java.util.List; import java.util.concurrent.Callable; +import java.util.logging.LogManager; import org.apache.tika.config.TikaConfig; import org.apache.tika.exception.TikaException; import org.apache.tika.io.TikaInputStream; import org.apache.tika.metadata.Metadata; +import org.apache.tika.parser.AutoDetectParser; +import org.apache.tika.parser.ParseContext; +import org.apache.tika.parser.Parser; +import org.apache.tika.parser.ParsingReader; +import org.jboss.logging.Logger; +import org.xml.sax.SAXException; import picocli.CommandLine; import picocli.CommandLine.Command; import picocli.CommandLine.Parameters; @@ -19,6 +28,8 @@ import picocli.CommandLine.Parameters; description = "Displays German amendment acts in a user-friendly, consolidated way.") public class AendGgner implements Callable<Integer> { + private static final Logger log = Logger.getLogger(AendGgner.class); + @Parameters(index = "0", description = "The base text to modify.") private Path baseFile; @@ -31,19 +42,49 @@ public class AendGgner implements Callable<Integer> { } @Override - public final Integer call() throws TikaException, IOException { - var tika = new TikaConfig(); + public final Integer call() throws TikaException, IOException, SAXException { + setupLogging(); + + log.debugf("Logging configured."); + + TikaConfig tika; + try (var configResource = + this.getClass().getResourceAsStream("/eu/mulk/aendggner/tika-config.xml")) { + tika = new TikaConfig(configResource); + } for (var file : patches) { var metadata = new Metadata(); - metadata.set(Metadata.RESOURCE_NAME_KEY, file.toString()); + metadata.set(Metadata.RESOURCE_NAME_KEY, file.getFileName().toString()); + try (var is = TikaInputStream.get(file)) { - var mimetype = tika.getDetector().detect( - TikaInputStream.get(file), metadata); - System.out.printf("File %s is %s.\n", file, mimetype); + var mimetype = tika.getDetector().detect(TikaInputStream.get(file), metadata); + log.infof("File %s is %s.", file, mimetype); + } + + var parser = new AutoDetectParser(tika); + try (var in = Files.newInputStream(file); + var reader = + new BufferedReader( + new ParsingReader(parser, in, metadata, makeParseContext(parser)))) { + log.infof("%s: %d lines of text.", file, reader.lines().count()); + // reader.lines().forEachOrdered(x -> log.infof("%s: %s", file, x)); } } return 0; } + + private static ParseContext makeParseContext(Parser parser) { + var parseContext = new ParseContext(); + parseContext.set(Parser.class, parser); + return parseContext; + } + + private static void setupLogging() throws IOException { + try (var loggingProperties = + AendGgner.class.getResourceAsStream("/eu/mulk/aendggner/logging.properties")) { + LogManager.getLogManager().readConfiguration(loggingProperties); + } + } } |
