Author: wkeil
Date: Sun Dec 20 13:59:56 2015
New Revision: 1721028

URL: http://svn.apache.org/viewvc?rev=1721028&view=rev
Log:
DMAP-186: Some arguments like debug/log won't work in Java Console 

Task-Url: https://issues.apache.org/jira/browse/DMAP-186

Added:
    
devicemap/trunk/clients/1.0/java/console/src/main/java/org/apache/devicemap/console/DeviceMapConsole.java
      - copied, changed from r1721024, 
devicemap/trunk/clients/1.0/java/console/src/main/java/org/apache/devicemap/console/Main.java
Removed:
    
devicemap/trunk/clients/1.0/java/console/src/main/java/org/apache/devicemap/console/Main.java

Copied: 
devicemap/trunk/clients/1.0/java/console/src/main/java/org/apache/devicemap/console/DeviceMapConsole.java
 (from r1721024, 
devicemap/trunk/clients/1.0/java/console/src/main/java/org/apache/devicemap/console/Main.java)
URL: 
http://svn.apache.org/viewvc/devicemap/trunk/clients/1.0/java/console/src/main/java/org/apache/devicemap/console/DeviceMapConsole.java?p2=devicemap/trunk/clients/1.0/java/console/src/main/java/org/apache/devicemap/console/DeviceMapConsole.java&p1=devicemap/trunk/clients/1.0/java/console/src/main/java/org/apache/devicemap/console/Main.java&r1=1721024&r2=1721028&rev=1721028&view=diff
==============================================================================
--- 
devicemap/trunk/clients/1.0/java/console/src/main/java/org/apache/devicemap/console/Main.java
 (original)
+++ 
devicemap/trunk/clients/1.0/java/console/src/main/java/org/apache/devicemap/console/DeviceMapConsole.java
 Sun Dec 20 13:59:56 2015
@@ -18,6 +18,14 @@
  */
 package org.apache.devicemap.console;
 
+import io.airlift.airline.Arguments;
+import io.airlift.airline.Cli;
+import io.airlift.airline.Cli.CliBuilder;
+import io.airlift.airline.Command;
+import io.airlift.airline.Help;
+import io.airlift.airline.Option;
+import io.airlift.airline.OptionType;
+
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileReader;
@@ -36,124 +44,195 @@ import org.apache.devicemap.loader.impl.
  * @author Werner Keil
  * @version 1.1.1
  */
-public class Main {
-
-    public static void main(String[] args) throws Exception {
-
-        System.out.println("DeviceMap Java Console " + 
Main.class.getPackage().getImplementationVersion());
-        
-        if(args.length == 0) {
-            System.out.println("Usage: -h for help");
-        }
-
-        String loaderPath = null;
-        LoaderOption option = LoaderOption.UNINITIALIZED;
-        String parameter = null;
-        boolean debug = false;
-        Level debugLevel = Level.OFF;
-
-        for (int i = 0; i < args.length; i++) {
-            if (args[i].equals("-f")) {
-                option = LoaderOption.FOLDER;
-                if (args.length > (++i)) {
-                    loaderPath = args[i];
-                }
-            } else if (args[i].equals("-u")) {
-                option = LoaderOption.URL;
-                if (args.length > (++i)) {
-                    loaderPath = args[i];
-                }
-            } else if (args[i].equals("-j")) {
-                option = LoaderOption.JAR;
-            } else if (args[i].equals("-l")) {
-                debug = true;
-                if (args.length > (++i)) {
-                    debugLevel = Level.parse(args[i]);
-                }
-            } else if (args[i].startsWith("-h") || args[i].startsWith("--h")) {
-                System.out.println("Usage: " + Main.class.getName() + " 
[OPTIONS] [FILE|STRING]\n");
-                System.out.println("  -f <path>            load DeviceMap 
resouces from folder or \"default\"");
-                System.out.println("  -j                   load DeviceMap 
resouces from jar file in classpath");
-                System.out.println("  -u <url>             load DeviceMap 
resouces from URL or \"default\"");
-                System.out.println("  -l <level>           log level set to 
<level>");
-                System.out.println("  FILE                 text file of 
strings");
-                System.out.println("  STRING               test string");
-
-                return;
-            } //[test string] | [test file]
-            else if(!args[i].isEmpty()) {
-                parameter = args[i];
-                System.out.println(parameter);
-            }
-        }
-        
-        if(debug) {
-            
Logger.getLogger(DeviceMapClient.class.getName()).setLevel(debugLevel);
-            Logger.getLogger(DDRLoader.class.getName()).setLevel(debugLevel);
-            for (Handler h : 
Logger.getLogger(DeviceMapClient.class.getName()).getParent().getHandlers()) {
-                if (h instanceof ConsoleHandler) {
-                  h.setLevel(debugLevel);
-                }
-            }
-        }
-
-        if ("default".equals(loaderPath)) {
-            loaderPath = null;
-        }
-
-        DeviceMapClient client = new DeviceMapClient();
-        final long start = System.currentTimeMillis();
-        client.initDeviceData(option, loaderPath);
-        long diff = System.currentTimeMillis() - start;
-
-        System.out.println("Loaded " + client.getDeviceCount() + " devices 
with " + client.getPatternCount() +
-                " patterns and " + client.getNodeCount() + " nodes in " + diff 
+ "ms");
-
-        final String test = "Mozilla/5.0 (Linux; U; Android 2.2; en; HTC Aria 
A6380 Build/ERE27) AppleWebKit/540.13+ (KHTML, like Gecko) Version/3.1 Mobile 
Safari/524.15.0";
-        long startn = System.nanoTime();
-        Device device = client.classifyDevice(test);
-        long diffn = (System.nanoTime() - startn) / 1000;
-
-        System.out.println("Test lookup: '" + device.getId() + "' time: " + 
diffn + "usec");
-
-        if (parameter == null) {
-        } else if ((new File(parameter)).exists()) {
-            System.out.println("Text file: " + parameter);
-
-            int count = 0;
-            int total = 0;
-
-            BufferedReader in = new BufferedReader(new FileReader(parameter));
-            String line;
-
-            while ((line = in.readLine()) != null) {
-                System.out.println("Text: '" + line + "'");
-                startn = System.nanoTime();
-                device = client.classifyDevice(line);
-                diffn = System.nanoTime() - startn;
-                total += diffn;
-                count++;
-
-                System.out.println("Text lookup " + count + ": '" + 
device.getId() + "' time: " + (diffn / 1000) + "usec");
-            }
-
-            in.close();
-
-            if (count == 0) {
-                count = 1;
-            }
-
-            total /= count;
-
-            System.out.println("TOTAL lookups: " + count + ", average time: " 
+ (total / 1000) + "usec");
-        } else {
-            System.out.println("Text: '" + parameter + "'");
-
-            startn = System.nanoTime();
-            device = client.classifyDevice(parameter);
-            diffn = System.nanoTime() - startn;
-            System.out.println("Text lookup: '" + device.getId() + "' time: " 
+ (diffn / 1000) + "usec");
-            System.out.println("DeviceMap JSON => " + device.toString());
-        }
-    }
+public class DeviceMapConsole {
+       private static final String APP_NAME = "DeviceMap Java Console";
+       private final static Logger LOG = 
Logger.getLogger(DeviceMapConsole.class.getName());
+
+       private static boolean isVerbose;
+
+       static class ToolCommand implements Runnable {
+               @Option(type = OptionType.GLOBAL, name = "-v", description = 
"Verbose mode")
+               public boolean verbose;
+
+               public void run() {
+                       System.out.println(APP_NAME);
+               }
+       }
+
+       @Command(name = "classify", description = "Classify User Agent")
+       public static final class Classify extends ToolCommand {
+               @Option(name = "-i", description = "Input file")
+               public String inFile;
+
+           @Arguments(description = "User Agent String to test")
+        public String userAgent;
+           
+               @Override
+               public void run() {
+                       if (inFile != null && inFile.length() > 0) {
+                               LOG.info(getClass().getSimpleName() + " " + 
inFile);
+                       } else {
+                               LOG.info(getClass().getSimpleName());
+                       }
+
+                       isVerbose = verbose;
+
+                       if (verbose) {
+                               LOG.info("UA: " + userAgent + " ("  + verbose + 
")");
+                       }
+               }
+       }
+
+       public static void main(String[] args) throws Exception {
+
+               System.out.println(APP_NAME + " "
+                               + 
DeviceMapConsole.class.getPackage().getImplementationVersion());
+               
+               try {
+                       @SuppressWarnings("unchecked")
+                       CliBuilder<Runnable> builder = 
Cli.<Runnable>builder(DeviceMapConsole.class.getSimpleName())
+                               .withDescription("Unicode CLDR Importer Tool")
+                               .withDefaultCommand(Help.class)
+                               .withCommands(Help.class, Classify.class)
+                               //.withCommands(Help.class, Write.class)
+                               ;
+                       Cli<Runnable> toolParser = builder.build();
+                       toolParser.parse(args).run();   
+               } catch (Exception e) {
+                       LOG.severe(e.getMessage());
+               }
+               
+               /*
+               if (args.length == 0) {
+                       System.out.println("Usage: -h for help");
+               }
+
+
+               String loaderPath = null;
+               LoaderOption option = LoaderOption.UNINITIALIZED;
+               String parameter = null;
+               boolean debug = false;
+               Level debugLevel = Level.OFF;
+
+               for (int i = 0; i < args.length; i++) {
+                       if (args[i].equals("-f")) {
+                               option = LoaderOption.FOLDER;
+                               if (args.length > (++i)) {
+                                       loaderPath = args[i];
+                               }
+                       } else if (args[i].equals("-u")) {
+                               option = LoaderOption.URL;
+                               if (args.length > (++i)) {
+                                       loaderPath = args[i];
+                               }
+                       } else if (args[i].equals("-j")) {
+                               option = LoaderOption.JAR;
+                       } else if (args[i].equals("-l")) {
+                               debug = true;
+                               if (args.length > (++i)) {
+                                       debugLevel = Level.parse(args[i]);
+                               }
+                       } else if (args[i].startsWith("-h") || 
args[i].startsWith("--h")) {
+                               System.out.println("Usage: " + 
DeviceMapConsole.class.getName()
+                                               + " [OPTIONS] [FILE|STRING]\n");
+                               System.out
+                                               .println("  -f <path>           
 load DeviceMap resouces from folder or \"default\"");
+                               System.out
+                                               .println("  -j                  
 load DeviceMap resouces from jar file in classpath");
+                               System.out
+                                               .println("  -u <url>            
 load DeviceMap resouces from URL or \"default\"");
+                               System.out
+                                               .println("  -l <level>          
 log level set to <level>");
+                               System.out
+                                               .println("  FILE                
 text file of strings");
+                               System.out.println("  STRING               test 
string");
+
+                               return;
+                       } // [test string] | [test file]
+                       else if (!args[i].isEmpty()) {
+                               parameter = args[i];
+                               System.out.println(parameter);
+                       }
+               }
+
+               if (debug) {
+                       
Logger.getLogger(DeviceMapClient.class.getName()).setLevel(
+                                       debugLevel);
+                       
Logger.getLogger(DDRLoader.class.getName()).setLevel(debugLevel);
+                       for (Handler h : 
Logger.getLogger(DeviceMapClient.class.getName())
+                                       .getParent().getHandlers()) {
+                               if (h instanceof ConsoleHandler) {
+                                       h.setLevel(debugLevel);
+                               }
+                       }
+               }
+
+               if ("default".equals(loaderPath)) {
+                       loaderPath = null;
+               }
+
+               DeviceMapClient client = new DeviceMapClient();
+               final long start = System.currentTimeMillis();
+               client.initDeviceData(option, loaderPath);
+               long diff = System.currentTimeMillis() - start;
+
+               System.out.println("Loaded " + client.getDeviceCount()
+                               + " devices with " + client.getPatternCount()
+                               + " patterns and " + client.getNodeCount() + " 
nodes in "
+                               + diff + "ms");
+
+               final String test = "Mozilla/5.0 (Linux; U; Android 2.2; en; 
HTC Aria A6380 Build/ERE27) AppleWebKit/540.13+ (KHTML, like Gecko) Version/3.1 
Mobile Safari/524.15.0";
+               long startn = System.nanoTime();
+               Device device = client.classifyDevice(test);
+               long diffn = (System.nanoTime() - startn) / 1000;
+
+               System.out.println("Test lookup: '" + device.getId() + "' time: 
"
+                               + diffn + "usec");
+
+               if (parameter == null) {
+               } else if ((new File(parameter)).exists()) {
+                       System.out.println("Text file: " + parameter);
+
+                       int count = 0;
+                       int total = 0;
+
+                       BufferedReader in = new BufferedReader(new 
FileReader(parameter));
+                       String line;
+
+                       while ((line = in.readLine()) != null) {
+                               System.out.println("Text: '" + line + "'");
+                               startn = System.nanoTime();
+                               device = client.classifyDevice(line);
+                               diffn = System.nanoTime() - startn;
+                               total += diffn;
+                               count++;
+
+                               System.out
+                                               .println("Text lookup " + count 
+ ": '"
+                                                               + 
device.getId() + "' time: " + (diffn / 1000)
+                                                               + "usec");
+                       }
+
+                       in.close();
+
+                       if (count == 0) {
+                               count = 1;
+                       }
+
+                       total /= count;
+
+                       System.out.println("TOTAL lookups: " + count + ", 
average time: "
+                                       + (total / 1000) + "usec");
+               } else {
+                       System.out.println("Text: '" + parameter + "'");
+
+                       startn = System.nanoTime();
+                       device = client.classifyDevice(parameter);
+                       diffn = System.nanoTime() - startn;
+                       System.out.println("Text lookup: '" + device.getId() + 
"' time: "
+                                       + (diffn / 1000) + "usec");
+                       System.out.println("DeviceMap JSON => " + 
device.toString());
+               }
+               */
+       }
 }


Reply via email to