From b85b9752850f67be4f2ac8e08791f95624ee6eb4 Mon Sep 17 00:00:00 2001 From: Victor Rodriguez Doncel Date: Fri, 10 Jul 2015 11:30:44 +0200 Subject: [PATCH] command line parameters --- web/lib/commons-cli-1.3.1.jar | Bin 0 -> 52988 bytes web/nbproject/build-impl.xml | 2 + web/nbproject/genfiles.properties | 4 +- web/nbproject/project.properties | 4 +- web/nbproject/project.xml | 4 + web/src/java/pgn2rdf/chess/Main.java | 96 ++++++++++++++----- web/src/java/pgn2rdf/files/GameUploader.java | 9 +- 7 files changed, 86 insertions(+), 33 deletions(-) create mode 100644 web/lib/commons-cli-1.3.1.jar diff --git a/web/lib/commons-cli-1.3.1.jar b/web/lib/commons-cli-1.3.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..c3e7a1f47f87c077f26a890594a1b978e13cec11 GIT binary patch literal 52988 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 literal 0 HcmV?d00001 diff --git a/web/nbproject/build-impl.xml b/web/nbproject/build-impl.xml index 348056f..7edaf65 100644 --- a/web/nbproject/build-impl.xml +++ b/web/nbproject/build-impl.xml @@ -1028,6 +1028,7 @@ exists or setup the property manually. For example like this: + @@ -1063,6 +1064,7 @@ exists or setup the property manually. For example like this: + diff --git a/web/nbproject/genfiles.properties b/web/nbproject/genfiles.properties index 9588b6e..2a3fc42 100644 --- a/web/nbproject/genfiles.properties +++ b/web/nbproject/genfiles.properties @@ -3,6 +3,6 @@ build.xml.script.CRC32=466dc714 build.xml.stylesheet.CRC32=651128d4@1.68.1.1 # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. -nbproject/build-impl.xml.data.CRC32=d06cc901 -nbproject/build-impl.xml.script.CRC32=9eadaf0a +nbproject/build-impl.xml.data.CRC32=2ac078c1 +nbproject/build-impl.xml.script.CRC32=cc1a9ee5 nbproject/build-impl.xml.stylesheet.CRC32=99ea4b56@1.68.1.1 diff --git a/web/nbproject/project.properties b/web/nbproject/project.properties index 413745b..1526a89 100644 --- a/web/nbproject/project.properties +++ b/web/nbproject/project.properties @@ -36,6 +36,7 @@ endorsed.classpath=\ ${libs.javaee-endorsed-api-6.0.classpath} excludes= file.reference.Chesspresso-lib.jar=lib/Chesspresso-lib.jar +file.reference.commons-cli-1.3.1.jar=lib/commons-cli-1.3.1.jar file.reference.commons-codec-1.6.jar=lib/commons-codec-1.6.jar file.reference.commons-compress-1.2.jar=lib/commons-compress-1.2.jar file.reference.commons-csv-1.0.jar=lib/commons-csv-1.0.jar @@ -110,7 +111,8 @@ javac.classpath=\ ${file.reference.xercesImpl-2.11.0.jar}:\ ${file.reference.xercesImpl.jar}:\ ${file.reference.xml-apis-1.4.01.jar}:\ - ${file.reference.servlet-api.jar} + ${file.reference.servlet-api.jar}:\ + ${file.reference.commons-cli-1.3.1.jar} # Space-separated list of extra javac options javac.compilerargs= javac.debug=true diff --git a/web/nbproject/project.xml b/web/nbproject/project.xml index d32bc05..83c369b 100644 --- a/web/nbproject/project.xml +++ b/web/nbproject/project.xml @@ -130,6 +130,10 @@ ${file.reference.servlet-api.jar} WEB-INF/lib + + ${file.reference.commons-cli-1.3.1.jar} + WEB-INF/lib + diff --git a/web/src/java/pgn2rdf/chess/Main.java b/web/src/java/pgn2rdf/chess/Main.java index 2ef6467..7c75b7d 100644 --- a/web/src/java/pgn2rdf/chess/Main.java +++ b/web/src/java/pgn2rdf/chess/Main.java @@ -1,50 +1,102 @@ package pgn2rdf.chess; +import java.io.File; import java.io.IOException; +import java.io.PrintWriter; import java.nio.file.Files; import java.nio.file.Paths; import javax.xml.parsers.DocumentBuilderFactory; import org.apache.jena.riot.Lang; import org.apache.log4j.BasicConfigurator; +import org.apache.commons.cli.BasicParser; +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.CommandLineParser; +import org.apache.commons.cli.HelpFormatter; +import org.apache.commons.cli.Options; +import org.apache.commons.cli.Option; +import org.apache.commons.io.FileUtils; +import org.apache.log4j.Logger; +import org.apache.log4j.varia.NullAppender; +import pgn2rdf.files.GameUploader; +import pgn2rdf.files.RDFStore; /** * http://stackoverflow.com/questions/15906842/solr-4-2-1-sslinitializationexception * - * Important for debugging with Glassfish and Netbeans: http://www.javahispano.org/java-ee/post/2433388 + * Important for debugging with Glassfish and Netbeans: + * http://www.javahispano.org/java-ee/post/2433388 + * * @author Victor */ public class Main { public static boolean initialized = false; - + public static void main(String[] args) throws IOException { BasicConfigurator.configure(); - System.out.println("Hello world"); - String input = new String(Files.readAllBytes(Paths.get("samples/test.pgn"))); - String rdf = PGNProcessor.getRDF(input, Lang.TTL); - System.out.println(rdf); + Logger.getRootLogger().removeAllAppenders(); + Logger.getRootLogger().addAppender(new NullAppender()); + + StringBuilder sb = new StringBuilder(); + CommandLineParser clparser = null; + CommandLine cl = null; + try { + Options options = new Options(); + options.addOption("help", false, "shows this help (Help)"); + options.addOption("add", true, "Transforms, expands and uploads a PGN file"); + options.addOption("transform", true, "Transforms, a PGN file"); + options.addOption("out", true, "Specifies output file"); + options.addOption("count", false, "Counts the number of games"); + clparser = new BasicParser(); + cl = clparser.parse(options, args); + if (cl.hasOption("help")) { + System.out.println("RDFChess command line tool"); + new HelpFormatter().printHelp(Main.class.getCanonicalName(), options); + } + if (cl.hasOption("count")) { + int total =RDFStore.countGames(); + System.out.println(total); + } + if (cl.hasOption("add")) { + String sfile = cl.getOptionValue("add"); + GameUploader.uploadPGN(sfile); + } + if (cl.hasOption("transform")) { + String sfile = cl.getOptionValue("transform"); + String sout = cl.getOptionValue("output"); + String input = new String(Files.readAllBytes(Paths.get(sfile))); + String rdf = PGNProcessor.getRDF(input, Lang.TTL); + if (sout.isEmpty()) { + System.out.println(rdf); + } else { + FileUtils.writeStringToFile(new File(sout), rdf); + } + } + } catch (Exception e) { + System.err.println("error"); + } + } - public static void init() throws Exception { System.out.println("Initializing RDFChess"); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); /*if (initialized == true) { - return; - } + return; + } + + SSLContextBuilder builder = new SSLContextBuilder(); + builder.loadTrustMaterial(null, new TrustSelfSignedStrategy()); + SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory( + builder.build()); + CloseableHttpClient httpclient = HttpClients.custom().setSSLSocketFactory( + sslsf).build(); - SSLContextBuilder builder = new SSLContextBuilder(); - builder.loadTrustMaterial(null, new TrustSelfSignedStrategy()); - SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory( - builder.build()); - CloseableHttpClient httpclient = HttpClients.custom().setSSLSocketFactory( - sslsf).build(); - - DefaultHttpClient httpClient = new DefaultHttpClient(); - httpClient.getConnectionManager().getSchemeRegistry() - .register(new Scheme("https", 443, - SSLSocketFactory.getSystemSocketFactory())); - initialized = true; - */ + DefaultHttpClient httpClient = new DefaultHttpClient(); + httpClient.getConnectionManager().getSchemeRegistry() + .register(new Scheme("https", 443, + SSLSocketFactory.getSystemSocketFactory())); + initialized = true; + */ } } diff --git a/web/src/java/pgn2rdf/files/GameUploader.java b/web/src/java/pgn2rdf/files/GameUploader.java index f5324f3..8c37dda 100644 --- a/web/src/java/pgn2rdf/files/GameUploader.java +++ b/web/src/java/pgn2rdf/files/GameUploader.java @@ -20,15 +20,8 @@ import java.util.Iterator; import java.util.Set; import org.apache.commons.io.FileUtils; -import org.apache.commons.io.IOUtils; import org.apache.jena.riot.Lang; import org.apache.jena.riot.RDFDataMgr; -import static pgn2rdf.chess.ChessECOManager.getChildren; -import static pgn2rdf.chess.ChessECOManager.getLibraryOfCongress; -import static pgn2rdf.chess.ChessECOManager.getMoves; -import static pgn2rdf.chess.ChessECOManager.getName; -import static pgn2rdf.chess.ChessECOManager.getParent; -import static pgn2rdf.chess.ChessECOManager.getSeeAlso; import pgn2rdf.chess.PGNProcessor; import static pgn2rdf.files.ChessGameIterator.getMoves; import static pgn2rdf.files.PGNFolderParser.MD5; @@ -99,7 +92,7 @@ private static void uploadECO(String eco) { /** * Transforms and uploads a PGN game */ - private static int uploadPGN(String filename) { + public static int uploadPGN(String filename) { String ttl = ""; int conta = 0; try {