/* * Copyright 2011 cruxframework.org. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package org.cruxframework.crux.tools.schema; import java.io.File; import java.util.Map; import org.cruxframework.crux.tools.parameters.ConsoleParameter; import org.cruxframework.crux.tools.parameters.ConsoleParametersProcessingException; import org.cruxframework.crux.tools.parameters.ConsoleParametersProcessor; /** * @author Thiago da Rosa de Bustamante * */ public class SchemaGenerator { /** * * @param projectBaseDir * @param outputDir * @param webDir * @param generateDoc */ public static void generateSchemas(File projectBaseDir, File outputDir, File webDir, boolean generateDoc) { CruxSchemaGenerator generator = CruxSchemaGeneratorFactory.createSchemaGenerator(projectBaseDir, outputDir, webDir); generator.generateSchemas(); generator.generateCatalog(); if (generateDoc) { generator.generateDocumentation(); } } /** * * @param projectBaseDir * @param destDir * @param webDir * @param generateDoc */ public static void generateSchemas(String projectBaseDir, String destDir, String webDir, boolean generateDoc) { generateSchemas(new File(projectBaseDir), new File(destDir), webDir!=null?new File(webDir):null, generateDoc); } /** * * @param args */ public static void main(String[] args) { try { try { ConsoleParametersProcessor parametersProcessor = createParametersProcessor(); Map<String, ConsoleParameter> parameters = parametersProcessor.processConsoleParameters(args); if (parameters.containsKey("-help") || parameters.containsKey("-h")) { parametersProcessor.showsUsageScreen(); } else { String webDir = null; if (parameters.containsKey("webDir")) { webDir = parameters.get("webDir").getValue(); } SchemaGenerator.generateSchemas(parameters.get("projectBaseDir").getValue(), parameters.get("outputDir").getValue(), webDir, parameters.containsKey("-generateDoc")); } System.exit(0); } catch (ConsoleParametersProcessingException e) { System.out.println("Program aborted"); } } catch (Exception e) { e.printStackTrace(); } System.exit(1); } /** * @return */ private static ConsoleParametersProcessor createParametersProcessor() { ConsoleParametersProcessor parametersProcessor = new ConsoleParametersProcessor("SchemaGenerator"); parametersProcessor.addSupportedParameter(new ConsoleParameter("projectBaseDir", "The project folder.")); parametersProcessor.addSupportedParameter(new ConsoleParameter("outputDir", "The folder where the files will be created.")); parametersProcessor.addSupportedParameter(new ConsoleParameter("webDir", "The project web root folder.", false, false)); parametersProcessor.addSupportedParameter(new ConsoleParameter("-generateDoc", "Generate also an HTML documentation for the libraries.", false, true)); parametersProcessor.addSupportedParameter(new ConsoleParameter("-help", "Display the usage screen.", false, true)); parametersProcessor.addSupportedParameter(new ConsoleParameter("-h", "Display the usage screen.", false, true)); return parametersProcessor; } }