}
return workingDir;
}
public static void main(String[] args2) throws Exception {
EOGeneratorModel eogeneratorModel = new EOGeneratorModel();
eogeneratorModel.setPackageDirs(Boolean.TRUE);
eogeneratorModel.setExtension("java");
List<String> argsList = new LinkedList<String>();
for (String arg : args2) {
argsList.add(arg);
}
File workingDir = workingDir(argsList);
if (argsList.size() >= 2 && "-config".equals(argsList.get(0))) {
BufferedReader br = new BufferedReader(new FileReader(PathUtils.getAbsolutePath(argsList.get(1), workingDir)));
try {
StringBuilder sb = new StringBuilder();
String configLine;
while ((configLine = br.readLine()) != null) {
sb.append(configLine.replaceFirst("\\\\$", ""));
}
eogeneratorModel.readFromString(sb.toString(), workingDir);
}
finally {
br.close();
}
}
if (workingDir == null) {
workingDir = workingDir(argsList);
}
boolean loadModelGroup = false;
File modelGroupFolder = workingDir == null ? new File(".") : workingDir;
List<String> modelPaths = new LinkedList<String>();
List<String> entityList = new LinkedList<String>();
boolean force = false;
boolean useStdout = false;
for (int argNum = 0; argNum < argsList.size(); argNum++) {
String arg = argsList.get(argNum);
if ("-model".equalsIgnoreCase(arg)) {
modelPaths.add(Veogen.path(workingDir, argsList.get(++argNum)));
}
else if ("-modelgroup".equalsIgnoreCase(arg)) {
modelGroupFolder = new File(Veogen.path(workingDir, argsList.get(++argNum)));
loadModelGroup = true;
}
else if ("-templateDir".equalsIgnoreCase(arg)) {
eogeneratorModel.setTemplateDir(Veogen.path(workingDir, argsList.get(++argNum)));
}
else if ("-superclassTemplate".equalsIgnoreCase(arg)) {
eogeneratorModel.setJavaTemplate(argsList.get(++argNum));
}
else if ("-subclassTemplate".equalsIgnoreCase(arg)) {
eogeneratorModel.setSubclassJavaTemplate(argsList.get(++argNum));
}
else if ("-javaTemplate".equalsIgnoreCase(arg)) {
eogeneratorModel.setJavaTemplate(argsList.get(++argNum));
}
else if ("-subclassJavaTemplate".equalsIgnoreCase(arg)) {
eogeneratorModel.setSubclassJavaTemplate(argsList.get(++argNum));
}
else if ("-extension".equalsIgnoreCase(arg)) {
eogeneratorModel.setExtension(argsList.get(++argNum));
}
else if ("-java".equalsIgnoreCase(arg)) {
eogeneratorModel.setJava(Boolean.TRUE);
}
else if ("-javaClient".equalsIgnoreCase(arg)) {
eogeneratorModel.setJavaClient(Boolean.TRUE);
}
else if ("-destination".equalsIgnoreCase(arg)) {
eogeneratorModel.setDestination(Veogen.path(workingDir, argsList.get(++argNum)));
}
else if ("-subclassDestination".equalsIgnoreCase(arg)) {
eogeneratorModel.setSubclassDestination(Veogen.path(workingDir, argsList.get(++argNum)));
}
else if ("-prefix".equalsIgnoreCase(arg)) {
eogeneratorModel.setPrefix(argsList.get(++argNum));
}
else if ("-superclassPackage".equalsIgnoreCase(arg)) {
eogeneratorModel.setSuperclassPackage(argsList.get(++argNum));
}
else if ("-verbose".equalsIgnoreCase(arg)) {
eogeneratorModel.setVerbose(Boolean.TRUE);
}
else if ("-java14".equalsIgnoreCase(arg)) {
eogeneratorModel.setJava14(true);
}
else if ("-generate".equalsIgnoreCase(arg)) {
String modelName = argsList.get(++argNum);
eogeneratorModel.addModel(new EOModelReference(new Path(modelName)));
}
else if ("-loadModelGroup".equalsIgnoreCase(arg)) {
loadModelGroup = true;
}
else if ("-force".equalsIgnoreCase(arg)) {
force = true;
}
else if ("-workingDir".equalsIgnoreCase(arg)) {
argNum ++;
}
else if ("-config".equalsIgnoreCase(arg)) {
argNum ++;
}
else if ("-stdout".equalsIgnoreCase(arg))
useStdout = true;
else {
entityList.add(arg);
}
}
if (eogeneratorModel.getModels() == null || eogeneratorModel.getModels().isEmpty()) {
for (String modelPath : modelPaths) {
eogeneratorModel.addModel(new EOModelReference(new Path(modelPath)));
}
}
if (eogeneratorModel.getDestination() == null || eogeneratorModel.getModels().size() == 0) {
System.out.println("veogen");
System.out.println(" -config /path/to/eogen");
System.out.println(" the path to an eogen file to use as the config");
System.out.println(" -model /path/to/model.eomodeld");
System.out.println(" the path to a model to add to this model group (multiples allowed)");
System.out.println(" -modelgroup /path/to/modelgroup/folder");
System.out.println(" the path that can be traversed to find models (finds dependencies), implies -loadModelGroup");
System.out.println(" -templateDir /path/containing/templates");
System.out.println(" the path to the folder that contains templates");
System.out.println(" -superclassTemplate nameOfTemplate.java");
System.out.println(" the name of the superclass template file (_File.java)");
System.out.println(" -subclassTemplate nameOfTemplate.java");
System.out.println(" the name of the subclass template file (File.java)");
System.out.println(" -extension");
System.out.println(" the file extension for generated files (default \".java + \")");
System.out.println(" -java");
System.out.println(" generate regular java output (default)");
System.out.println(" -javaClient");
System.out.println(" generate java client output");
System.out.println(" -destination /path/for/output");
System.out.println(" the path to the folder to write generated superclass output input");
System.out.println(" -subclassDestination /path/for/subclass/output");
System.out.println(" the path to the folder to write generated subclass output input");
System.out.println(" -prefix thePrefix");
System.out.println(" the prefix to prepend to superclass names (default: _)");
System.out.println(" -superclassPackage packageName");
System.out.println(" the package name to append to superclass package name (default: none)");
System.out.println(" -verbose");
System.out.println(" generate verbose output");
System.out.println(" -java14");
System.out.println(" switch to Java 1.4 templates");
System.out.println(" -generate modelName");
System.out.println(" generate source files for the model with the given name (multiples allowed).");
System.out.println(" if no explicit generate flags are specified, the items from -model will be used.");
System.out.println(" -loadModelGroup");
System.out.println(" if specified and -modelgroup is not, an implicit modelgroup folder of '.' will be used.");
System.out.println(" -workingDir");
System.out.println(" the working directory to prepend to all the provided paths");
System.out.println(" -force");
System.out.println(" force generation even if there are errors");
System.out.println(" -stdout");
System.out.println(" send output to the console instead of the filesystem");
System.out.println();
System.out.println("You must specify at least -destination and a -generate or -model.");
System.exit(0);
}
if (eogeneratorModel.getSubclassDestination() == null) {
eogeneratorModel.setSubclassDestination(eogeneratorModel.getDestination());
}
EOModelGroup modelGroup = new EOModelGroup();
Set<EOModelVerificationFailure> failures = new HashSet<EOModelVerificationFailure>();
if (loadModelGroup || modelPaths.size() == 0) {