123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249 |
- /*
- * Copyright (C) 2015 iZc
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
- package de.nplusc.izc.Utilities.WPCMgr;
- import java.io.FileNotFoundException;
- import java.util.HashMap;
- import org.apache.commons.cli.CommandLine;
- import org.apache.commons.cli.CommandLineParser;
- import org.apache.commons.cli.DefaultParser;
- import org.apache.commons.cli.HelpFormatter;
- import org.apache.commons.cli.Option;
- import org.apache.commons.cli.OptionBuilder;
- import org.apache.commons.cli.OptionGroup;
- import org.apache.commons.cli.Options;
- import org.apache.commons.cli.ParseException;
- import org.apache.logging.log4j.Level;
- import org.apache.logging.log4j.LogManager;
- import org.apache.logging.log4j.Logger;
- import org.apache.logging.log4j.core.LoggerContext;
- import org.apache.logging.log4j.core.config.LoggerConfig;
- /**
- *
- * @author LH
- */
- public class Main
- {
- /*
- ProgressBar progressBar = ConsoleProgressBar.on(System.out)
- .withFormat("[:bar] :percent% :elapsed/:total ETA: :eta")
- .withTotalSteps(500);
- */
- private static Logger l;
- public static void main(String[] args)
- {
- CommandLineParser parser = new DefaultParser();
- Options options = new Options();
- OptionGroup modes = new OptionGroup();
-
- options.addOption("v", "verbose", false, "Enables verbose logging");
- modes.addOption(OptionBuilder.withLongOpt("process")
- .withDescription("Process FOLDER")
- .create("p"));
- options.addOption(OptionBuilder.withLongOpt("folder")
- .withDescription("Sets the current WPCache to FOLDER")
- .hasArg()
- .withArgName("FOLDER")
- .create("f"));
- modes.addOption(OptionBuilder.withLongOpt("initDirectory")
- .withDescription("init selected wpcache that converts into TARGET")
- .hasArg()
- .withArgName("TARGET")
- .create("i"));
- modes.addOption(OptionBuilder.withLongOpt("addScreen")
- .withDescription("add SCREEN with given settings (\"id,xpos,ypos,width,height\") to the screen registry of the selected cache, allows multiple screens to be defined at once. existing Screens with the same ID get overwritten"+
- "Alternative Sybtax for screen is \"id,width,height\" to get a screen at default position of 0,0")
- .hasArgs(Option.UNLIMITED_VALUES)
- .withArgName("SCREEN")
- .create());
- options.addOptionGroup(modes);
- try
- {
- CommandLine cl = parser.parse(options, args);
- Main.setupLogging(cl.hasOption("verbose"));
- String folder = "XXX";
- if (cl.hasOption("folder"))
- {
- folder = cl.getOptionValue("folder");
- }
- else
- {
- throw new ParseException("Folder undefined");
- }
- l.trace(folder);
- if (cl.hasOption("initDirectory"))
- {
- String initArg = cl.getOptionValue("initDirectory");
- WPCUtils.initCache(folder,initArg);
- }
- else
- {
- if (cl.hasOption("addScreen"))
- {
- String[] screendefs = cl.getOptionValues("addScreen");
-
- HashMap<String,Object> cfg = WPCUtils.getConfig(folder);
- for (String screendef : screendefs)
- {
- String[] screen = screendef.split(",");
- int x=0,y=0;
- int w=0,h=0;
- try{
- if(screen.length==5)
- {
- x=Integer.valueOf(screen[1]);
- y=Integer.valueOf(screen[2]);
- w=Integer.valueOf(screen[3]);
- h=Integer.valueOf(screen[4]);
- }
- else if (screen.length==3)
- {
- w=Integer.valueOf(screen[1]);
- h=Integer.valueOf(screen[2]);
- }
- else
- {
- throw new ParseException("Malformed screen string: parameter count wrong @ "+screendef);
- }
- WPCUtils.addMonitor(cfg,screen[0], x, y, w, h);
- }
- catch(NumberFormatException ex)
- {
- throw new ParseException("Malformed screen string: Invalid number giveen @ "+screendef);
- }
- }
- WPCUtils.saveConfig(folder, cfg);
- }
- else
- {
- if(cl.hasOption("process"))
- {
- Synchronizer.main(folder);
- }
- else
- {
- throw new ParseException("No PARAMS");
- }
- }
-
- }
- }
- catch (ParseException ex)
- {
- String msg = ex.getMessage();
- System.err.println("Failed to parse the commandline");
- if(msg!=null)
- {
- System.err.println(msg);
- }
- else
- {
- System.err.println("No further details given");
- }
-
- HelpFormatter formatter = new HelpFormatter();
- formatter.printHelp("wpcmgr", options);
- System.exit(0);
- }
- catch (FileNotFoundException ex)
- {
- String msg = ex.getMessage();
- System.err.println("Failed to parse the commandline, invalid cachedir");
- if(msg!=null)
- {
- System.err.println(msg);
- }
- else
- {
- System.err.println("No further details given");
- }
- HelpFormatter formatter = new HelpFormatter();
- formatter.printHelp("wpcmgr", options);
- System.exit(0);
- }
-
- /*
- System.out.println(args.length);
- if (args.length>0)
- {
- System.out.println(args[0]);
- if(args[0].equals("--help")||args[0].equals("-h")||args[0].equals("/?"))
- {
- printHelp();
- }
- if(args.length>2)
- {
- System.out.println(args[1]);
- System.out.println(args[2]);
- switch (args[0])
- {
- case "--wpcprocess":
- Synchronizer.main(new String[]{args[1],args[2]});
- break;
- case "--initDirectory":
-
- break;
- default:
- printHelp();
- break;
- }
- }
- return;
- }
- printHelp();*/
- }
-
- private static void printHelp()
- {
- System.out.println("Cmdline usage of WPC-Mgr");
- System.out.println("wpc-mgr.jar [mode] <values>");
- System.out.println("Modes and its values");
- System.out.println("--wpcprocess : Processes the given cacheDictory");
- System.out.println("usage: --wpcprocess P:\\ath\\to\\CacheDir screenWidthxScreenHeight");
- System.out.println("--initDirectory : initializes a CacheDirectory for being used by wpcprocess");
- System.out.println("P:\\ath\\to\\CacheDir");
- System.out.println("T:\\arged\\Directory\\Of\\ProcessedFiles");
- System.out.println("No parameter:");
- System.out.println("currently help; later :starts in GUI-Mode to manage the last opened Cache");
-
-
- }
-
- private static void setupLogging(boolean verbose)
- {
- l=LogManager.getLogger(Main.class.getName());
- LoggerContext cx = (LoggerContext) LogManager.getContext(false);
- org.apache.logging.log4j.core.config.Configuration config = cx.getConfiguration();
- LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME);
- LoggerConfig externalloggerConfig = config.getLoggerConfig("External");
- if (verbose)
- {
-
- loggerConfig.setLevel(Level.TRACE);
- externalloggerConfig.setLevel(Level.TRACE);
- }
- else
- {
- loggerConfig.setLevel(Level.INFO);
- externalloggerConfig.setLevel(Level.INFO);
- }
- cx.updateLoggers();
- }
- }
|