You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by pp...@apache.org on 2010/07/28 01:44:55 UTC

svn commit: r979914 - in /openjpa/tools/trunk/openjpa-tools/src/main/java/org/apache/openjpa/tools: MigrationTool.java util/CommandProcessor.java util/Option.java

Author: ppoddar
Date: Tue Jul 27 23:44:55 2010
New Revision: 979914

URL: http://svn.apache.org/viewvc?rev=979914&view=rev
Log:
OPENJPA-1747: Use OpenJPA core libraries for command-line processing

Removed:
    openjpa/tools/trunk/openjpa-tools/src/main/java/org/apache/openjpa/tools/util/CommandProcessor.java
    openjpa/tools/trunk/openjpa-tools/src/main/java/org/apache/openjpa/tools/util/Option.java
Modified:
    openjpa/tools/trunk/openjpa-tools/src/main/java/org/apache/openjpa/tools/MigrationTool.java

Modified: openjpa/tools/trunk/openjpa-tools/src/main/java/org/apache/openjpa/tools/MigrationTool.java
URL: http://svn.apache.org/viewvc/openjpa/tools/trunk/openjpa-tools/src/main/java/org/apache/openjpa/tools/MigrationTool.java?rev=979914&r1=979913&r2=979914&view=diff
==============================================================================
--- openjpa/tools/trunk/openjpa-tools/src/main/java/org/apache/openjpa/tools/MigrationTool.java (original)
+++ openjpa/tools/trunk/openjpa-tools/src/main/java/org/apache/openjpa/tools/MigrationTool.java Tue Jul 27 23:44:55 2010
@@ -20,6 +20,7 @@ package org.apache.openjpa.tools;
 
 import java.io.File;
 import java.io.FileInputStream;
+import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.PrintStream;
@@ -29,6 +30,7 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Properties;
 import java.util.Set;
 import java.util.logging.ConsoleHandler;
 import java.util.logging.FileHandler;
@@ -44,10 +46,9 @@ import javax.xml.transform.TransformerFa
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
+import org.apache.openjpa.lib.util.Options;
 import org.apache.openjpa.tools.action.Actions;
-import org.apache.openjpa.tools.util.CommandProcessor;
 import org.apache.openjpa.tools.util.LogRecordFormatter;
-import org.apache.openjpa.tools.util.Option;
 import org.w3c.dom.Attr;
 import org.w3c.dom.Comment;
 import org.w3c.dom.Document;
@@ -126,58 +127,22 @@ public class MigrationTool  {
     private LogRecordFormatter _formatter;
 
     public static void main(String[] args) throws Exception {
+    	new MigrationTool().run(args);
     }
     
     public void run(String[] args) throws Exception {
-        // sets up command processing
-        CommandProcessor cp = new CommandProcessor();
-        Option<String> inputOption    = cp.register(String.class, true,  true, "-input","-i");
-        Option<String> outputOption   = cp.register(String.class, false, true, "-output","-o");
-        Option<String> errorOption    = cp.register(String.class, false, true, "-error","-err");
-        Option<String> rulebase = cp.register(String.class, false, true, "-rules");
-        rulebase.setDefault(DEFAULT_ACTIONS);
-        Option<Boolean> verbose = cp.register(Boolean.class, false, false, "-verbose","-v");
-        
-        inputOption.setDescription("Hibernate XML file.");
-        outputOption.setDescription("Output file name. Defaults to standard console.");
-        errorOption.setDescription("Error output file name. Add a + sign at the end " +
-            "to append to an existing file. Defaults to standard error console.");
-        rulebase.setDescription("Rules specification XML file. Defaults to " + DEFAULT_ACTIONS);
-        verbose.setDescription("Prints detailed trace. Defaults to false.");
-        
-        cp.setAllowsUnregisteredOption(false);
-        if (!cp.validate(args)) {
-            System.err.println(cp.usage(MigrationTool.class));
-            System.exit(1);
-        } else {
-            cp.setFrom(args);
-        }
-        _input = getInputStream(cp.getValue(inputOption));
-        _ouput = getOutputStream(cp.getValue(outputOption));
-        _rulebase  = getInputStream(cp.getValue(rulebase));
-        
         _logger = Logger.getLogger(getClass().getPackage().getName());
-        Handler handler = null;
         _formatter = new LogRecordFormatter();
-        _formatter.setSource(cp.getValue(inputOption));
-        
-        if (!cp.isSet(errorOption)) {
-            handler = new ConsoleHandler();
-        } else {
-            String errorOutput = cp.getValue(errorOption);
-            if (errorOutput.endsWith("+")) {
-                handler = new FileHandler(errorOutput.substring(errorOutput.length()-1), true);
-            } else {
-                handler = new FileHandler(errorOutput, false);
-            }
-        }
-        _logger.setUseParentHandlers(false);
-        handler.setFormatter(_formatter);
-        _logger.addHandler(handler);
-       _logger.setLevel(cp.isSet(verbose) ? Level.INFO : Level.WARNING);
         
-       
-       buildRepository(_rulebase);
+    	Properties defaults = new Properties();
+    	defaults.setProperty("output", "System.out");
+    	defaults.setProperty("error",  "System.err");
+    	defaults.setProperty("actions", DEFAULT_ACTIONS);
+    	defaults.setProperty("verbose", "false");
+    	
+        Options options = new Options(defaults);
+    	options.setFromCmdLine(args);
+    	options = options.setInto(this);
         
         DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
         factory.setValidating(false);
@@ -203,6 +168,42 @@ public class MigrationTool  {
         _ouput.close();
     }
     
+    public void setInput(String input) {
+    	_input = getInputStream(input);
+        _formatter.setSource(input);
+    }
+    
+    public void setOutput(String output) {
+    	if ("System.out".equals(output)) {
+    		_ouput = System.out;
+    	} else {
+    		_ouput = getOutputStream(output);
+    	}
+    }
+    
+    public void setError(String errorOutput) throws IOException {
+        Handler handler = null;
+        if ("System.err".equals(errorOutput)) {
+        	handler = new ConsoleHandler();
+        } else if (errorOutput.endsWith("+")) {
+            handler = new FileHandler(errorOutput.substring(errorOutput.length()-1), true);
+        } else {
+            handler = new FileHandler(errorOutput, false);
+        }
+        _logger.setUseParentHandlers(false);
+        handler.setFormatter(_formatter);
+        _logger.addHandler(handler);
+    }
+    
+    public void setActions(String actions) throws Exception {
+    	_rulebase = getInputStream(actions);
+    	buildRepository(_rulebase);
+    }
+    
+    public void setVerbose(boolean verbose) {
+        _logger.setLevel(verbose ? Level.INFO : Level.WARNING);
+    }
+    
     /**
      * Builds a repository of actions by parsing the rule base - a XML specification of rules.
      *