argumentparser.java
来自「一个java 代码生成器」· Java 代码 · 共 257 行
JAVA
257 行
/**
* Copyright (c) 2002, Siddhartha P. Chandurkar siddhartha@visioncodified.com
* All rights reserved.
* Licensed under the Academic Free License version 1.1
* See the file LICENSE.TXT for details.
* LICENSE.txt is located in the directory <install-directory>\Jenerator
* of your Jenertaor Installation.
*
*/
package com.jenerator.util;
//<Imports>
import org.apache.log4j.Logger;
//</Imports>
/**
* ArgumentParser
* This class is an utility class which is responsible for parsing
* the command line arguments and validating them. If the arguments are
* not valid then it prints the appropriate message.
* @author Siddhartha P. Chandurkar
* @version 0.9.0
*/
public class ArgumentParser {
//ATTRIBUTES
//flag denoting that the Jenerator descriptor has to be generated
private boolean DESC = false;
//flag denoting that the remote interfaces for Session and Enitit beans have to be generated
private boolean REMOTE = false;
//flag denoting that the home interfaces for Session and Entity beans have to be generated
private boolean HOME = false;
//flag denoting that the bean classes for Session, Entity and Message driven beans have to be generated
private boolean BEAN = false;
//flag denoting that the Local interfaces for entity bean have to be generated
private boolean LOCAL = false;
//flag denoting that the deployment descriptor for the EJB's i.e. ejb-jar.xml have to be generated
private boolean DD = false;
//flag for generating the JUnit test classes
private boolean JUNIT = false;
//flag for generating the ant's build.xml file
private boolean ANT = false;
//flag for generating Patterns
private boolean PATTERN = false;
//flag for generating servlets
private boolean SERVLET = false;
//flag for generating JDO relates source and descriptor
private boolean JDO = false;
//flag for generating Unit Tests for classes other than EJB's
private boolean UNIT_TESTS = false;
//The log4j logger for this class
private Logger log = Logger.getLogger(com.jenerator.util.ArgumentParser.class.getName());
//METHODS
//The accessor methords for the boolean flags
public boolean isDesc() {
return DESC;
}
public boolean isRemote() {
return REMOTE;
}
public boolean isHome() {
return HOME;
}
public boolean isBean() {
return BEAN;
}
public boolean isLocal() {
return LOCAL;
}
public boolean isDD() {
return DD;
}
public boolean isJUNIT() {
return JUNIT;
}
public boolean isANT() {
return ANT;
}
public boolean isPATTERN() {
return PATTERN;
}
public boolean isSERVLET() {
return SERVLET;
}
public boolean isJDO() {
return JDO;
}
public boolean isUNIT_TESTS() {
return UNIT_TESTS;
}
/**
* parseArgs
* The method which takes the command line arguments as a parameter and parses
* the command line and also validates them
* @param String args[] The command line arguments
*/
public void parseArgs(String args[]) {
if (args.length == 0) {
printUsage();
System.exit(1);
}
log.debug("Parsing arguments");
for (int i = 0; i < args.length; i++) {
String arg = args[i];
if (arg.startsWith("-")) {
if ((arg.indexOf("d") == -1) && (arg.indexOf("D") == -1) &&
(arg.indexOf("r") == -1) && (arg.indexOf("R") == -1) &&
(arg.indexOf("h") == -1) && (arg.indexOf("H") == -1) &&
(arg.indexOf("b") == -1) && (arg.indexOf("B") == -1) &&
(arg.indexOf("l") == -1) && (arg.indexOf("L") == -1) &&
(arg.indexOf("all") == -1) && (arg.indexOf("ALL") == -1) &&
(arg.indexOf("j") == -1) && (arg.indexOf("J") == -1) &&
(arg.indexOf("m") == -1) && (arg.indexOf("M") == -1) &&
(arg.indexOf("p") == -1) && (arg.indexOf("P") == -1) &&
(arg.indexOf("s") == -1) && (arg.indexOf("S") == -1) &&
(arg.indexOf("o") == -1) && (arg.indexOf("O") == -1) &&
(arg.indexOf("c") == -1) && (arg.indexOf("C") == -1)) {
printUsage();
System.exit(1);
}
if ((arg.substring(1, arg.length()).indexOf("d") != -1) || (arg.substring(1, arg.length()).indexOf("D") != -1)) {
if (arg.length() > 2) {
log.fatal("The 'd/D' option cannot be used in combination with other options");
System.exit(1);
} else {
log.info("generation jen-desc.xml");
DESC = true;
}
return;
}//For option D/d
if ((arg.substring(1, arg.length()).indexOf("p") != -1) || (arg.substring(1, arg.length()).indexOf("P") != -1)) {
if (arg.length() > 2) {
log.fatal("The 'p/P' option cannot be used in combination with other options");
System.exit(1);
} else {
log.info("generating Patterns");
PATTERN = true;
}
return;
}//For option p/P
if ((arg.substring(1, arg.length()).indexOf("s") != -1) || (arg.substring(1, arg.length()).indexOf("S") != -1)) {
if (arg.length() > 2) {
log.fatal("The 's/S' option cannot be used in combination with other options");
System.exit(1);
} else {
log.info("generating Servlets");
SERVLET = true;
}
return;
}//For option s/S
if ((arg.substring(1, arg.length()).indexOf("all") != -1) || (arg.substring(1, arg.length()).indexOf("ALL") != -1)) {
if (arg.length() > 4) {
log.fatal("The 'all/ALL' option cannot be used in combination with other options");
System.exit(1);
} else {
log.info("generation All Except the jen-desc.xml");
REMOTE = true;
HOME = true;
BEAN = true;
DD = true;
}
return;
}//For option all/All
if ((arg.substring(1, arg.length()).indexOf("r") != -1) || (arg.substring(1, arg.length()).indexOf("R") != -1)) {
log.info("generating remote interfaces");
REMOTE = true;
}//For option r/R
if ((arg.substring(1, arg.length()).indexOf("h") != -1) || (arg.substring(1, arg.length()).indexOf("H") != -1)) {
log.info("generating home interfaces");
HOME = true;
}//For option h/H
if ((arg.substring(1, arg.length()).indexOf("b") != -1) || (arg.substring(1, arg.length()).indexOf("B") != -1)) {
log.info("generating bean classes");
BEAN = true;
}//For option b/B
if ((arg.substring(1, arg.length()).indexOf("l") != -1) || (arg.substring(1, arg.length()).indexOf("L") != -1)) {
log.info("generating local home and remote interfaces");
LOCAL = true;
}//For option l/L
if ((arg.substring(1, arg.length()).indexOf("c") != -1) || (arg.substring(1, arg.length()).indexOf("C") != -1)) {
log.info("generating Deployment Descriptor");
DD = true;
}//For option c/C
if ((arg.substring(1, arg.length()).indexOf("j") != -1) || (arg.substring(1, arg.length()).indexOf("J") != -1)) {
log.info("generating JUnit classes");
JUNIT = true;
}//For option j/J
if ((arg.substring(1, arg.length()).indexOf("m") != -1) || (arg.substring(1, arg.length()).indexOf("M") != -1)) {
log.info("generating build.xml file");
ANT = true;
}//For option m/M
if ((arg.substring(1, arg.length()).indexOf("o") != -1) || (arg.substring(1, arg.length()).indexOf("O") != -1)) {
log.info("generating JDO related source and descriptor");
JDO = true;
}//For option o/O
if ((arg.substring(1, arg.length()).indexOf("u") != -1) || (arg.substring(1, arg.length()).indexOf("U") != -1)) {
log.info("generating Unit tests for classes other than EJB's");
UNIT_TESTS = true;
}//For option o/O
} else {
log.fatal("Options should start with '-' . For Example : '-r'");
printUsage();
System.exit(1);
}
}
}//parseArgs
/**
* printUsage
* The method which prints the right usage of the command line arguments
*/
public void printUsage() {
System.err.println("usage : java com.jenerator.Jenerator (options)\n");
System.err.println("options: ");
System.err.println("-d \\ -D Generate the Descriptor for the Jenerator");
System.err.println(" Note:- This option cannot be used in combination with other options");
System.err.println("-r \\ -R Generate the Remote Interfaces");
System.err.println("-b \\ -B Generate the Bean Classes");
System.err.println("-h \\ -H Generate the Home Interfaces");
System.err.println("-l \\ -L Generate the local and local home Interfaces");
System.err.println("-c \\ -C Generate the EJB Deployment Descriptor - ejb-jar.xml");
System.err.println("-j \\ -J Generate Unit tests for EJB's");
System.err.println("-m \\ -M Generate ANT's build.xml file for the generated code");
System.err.println("-p \\ -P Generate GOF and J2EE Patterns");
System.err.println("-s \\ -S Generate Servlets");
System.err.println("-o \\ -O Generate JDO Source and the respective .jdo descriptor");
System.err.println("-all \\ -ALL Same as -rbhc | -RBHC");
System.err.println(" Note:- This option cannot be used in combination with other options");
}//printUsage
}//ArgumentParser
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?