001: package org.objectweb.celtix.tools;
002:
003: import java.io.File;
004: import java.util.HashSet;
005: import java.util.Set;
006:
007: import org.objectweb.celtix.common.i18n.Message;
008: import org.objectweb.celtix.tools.common.ProcessorEnvironment;
009: import org.objectweb.celtix.tools.common.ToolConstants;
010: import org.objectweb.celtix.tools.common.ToolException;
011: import org.objectweb.celtix.tools.common.toolspec.ToolRunner;
012: import org.objectweb.celtix.tools.common.toolspec.ToolSpec;
013: import org.objectweb.celtix.tools.common.toolspec.parser.BadUsageException;
014: import org.objectweb.celtix.tools.common.toolspec.parser.CommandDocument;
015: import org.objectweb.celtix.tools.common.toolspec.parser.ErrorVisitor;
016: import org.objectweb.celtix.tools.processors.xsd2.XSDToWSDLProcessor;
017:
018: public class XSDToWSDL extends AbstractCeltixToolContainer {
019:
020: static final String TOOL_NAME = "xsd2wsdl";
021:
022: private static String[] args;
023:
024: public XSDToWSDL(ToolSpec toolspec) throws Exception {
025: super (TOOL_NAME, toolspec);
026: }
027:
028: private Set getArrayKeys() {
029: return new HashSet<String>();
030: }
031:
032: public void execute(boolean exitOnFinish) {
033: XSDToWSDLProcessor processor = new XSDToWSDLProcessor();
034: try {
035: super .execute(exitOnFinish);
036: if (!hasInfoOption()) {
037: ProcessorEnvironment env = new ProcessorEnvironment();
038: env.setParameters(getParametersMap(getArrayKeys()));
039: if (isVerboseOn()) {
040: env.put(ToolConstants.CFG_VERBOSE, Boolean.TRUE);
041: }
042: env.put(ToolConstants.CFG_CMD_ARG, args);
043: validate(env);
044: processor.setEnvironment(env);
045: processor.process();
046: }
047: } catch (ToolException ex) {
048: System.err.println("Error : " + ex.getMessage());
049: if (ex.getCause() instanceof BadUsageException) {
050: getInstance().printUsageException(TOOL_NAME,
051: (BadUsageException) ex.getCause());
052: }
053: System.err.println();
054: if (isVerboseOn()) {
055: ex.printStackTrace();
056: }
057: } catch (Exception ex) {
058: System.err.println("Error : " + ex.getMessage());
059: System.err.println();
060: if (isVerboseOn()) {
061: ex.printStackTrace();
062: }
063: }
064: }
065:
066: private void validate(ProcessorEnvironment env)
067: throws ToolException {
068: String outdir = (String) env.get(ToolConstants.CFG_OUTPUTDIR);
069: if (outdir != null) {
070: File dir = new File(outdir);
071: if (!dir.exists()) {
072: Message msg = new Message("DIRECTORY_NOT_EXIST", LOG,
073: outdir);
074: throw new ToolException(msg);
075: }
076: if (!dir.isDirectory()) {
077: Message msg = new Message("NOT_A_DIRECTORY", LOG,
078: outdir);
079: throw new ToolException(msg);
080: }
081: }
082: }
083:
084: public static void main(String[] pargs) {
085: args = pargs;
086: try {
087: ToolRunner.runTool(XSDToWSDL.class, XSDToWSDL.class
088: .getResourceAsStream(ToolConstants.TOOLSPECS_BASE
089: + "xsd2wsdl.xml"), false, args);
090: } catch (BadUsageException ex) {
091: getInstance().printUsageException(TOOL_NAME, ex);
092: } catch (Exception ex) {
093: System.err.println("Error : " + ex.getMessage());
094: System.err.println();
095: ex.printStackTrace();
096: }
097: }
098:
099: public void checkParams(ErrorVisitor errors) throws ToolException {
100: CommandDocument doc = super .getCommandDocument();
101:
102: if (!doc.hasParameter("xsdurl")) {
103: errors.add(new ErrorVisitor.UserError(
104: "XSD URL has to be specified"));
105: }
106: if (errors.getErrors().size() > 0) {
107: Message msg = new Message("PARAMETER_MISSING", LOG);
108: throw new ToolException(msg, new BadUsageException(
109: getUsage(), errors));
110: }
111: }
112:
113: }
|