public static void main()

in src/main/java/org/apache/xmlbeans/impl/inst2xsd/Inst2Xsd.java [36:225]


    public static void main(String[] args)
    {
        if (args==null || args.length == 0)
        {
            printHelp();
            System.exit(0);
            return;
        }

        Set<String> flags = new HashSet<>();
        flags.add("h");
        flags.add("help");
        flags.add("usage");
        flags.add("license");
        flags.add("version");
        flags.add("verbose");
        flags.add("validate");

        Set<String> opts = new HashSet<>();
        opts.add("design");
        opts.add("simple-content-types");
        opts.add("enumerations");
        opts.add("outDir");
        opts.add("outPrefix");

        CommandLine cl = new CommandLine(args, flags, opts);
        Inst2XsdOptions inst2XsdOptions = new Inst2XsdOptions();

        if (cl.getOpt("license") != null)
        {
            CommandLine.printLicense();
            System.exit(0);
            return;
        }

        if (cl.getOpt("version") != null)
        {
            CommandLine.printVersion();
            System.exit(0);
            return;
        }

        if (cl.getOpt("h") != null || cl.getOpt("help") != null || cl.getOpt("usage") != null)
        {
            printHelp();
            System.exit(0);
            return;
        }

        String[] badopts = cl.getBadOpts();
        if (badopts.length > 0)
        {
            for (int i = 0; i < badopts.length; i++)
                System.out.println("Unrecognized option: " + badopts[i]);
            printHelp();
            System.exit(0);
            return;
        }

        String design = cl.getOpt("design");
        if (design==null)
        {
            // default
        }
        else if (design.equals("vb"))
        {
            inst2XsdOptions.setDesign(Inst2XsdOptions.DESIGN_VENETIAN_BLIND);
        }
        else if (design.equals("rd"))
        {
            inst2XsdOptions.setDesign(Inst2XsdOptions.DESIGN_RUSSIAN_DOLL);
        }
        else if (design.equals("ss"))
        {
            inst2XsdOptions.setDesign(Inst2XsdOptions.DESIGN_SALAMI_SLICE);
        }
        else
        {
            printHelp();
            System.exit(0);
            return;
        }

        String simpleContent = cl.getOpt("simple-content-types");
        if (simpleContent==null)
        {
            //default
        }
        else if (simpleContent.equals("smart"))
        {
            inst2XsdOptions.setSimpleContentTypes(Inst2XsdOptions.SIMPLE_CONTENT_TYPES_SMART);
        }
        else if (simpleContent.equals("string"))
        {
            inst2XsdOptions.setSimpleContentTypes(Inst2XsdOptions.SIMPLE_CONTENT_TYPES_STRING);
        }
        else
        {
            printHelp();
            System.exit(0);
            return;
        }

        String enumerations = cl.getOpt("enumerations");
        if (enumerations==null)
        {
            // default
        }
        else if (enumerations.equals("never"))
        {
            inst2XsdOptions.setUseEnumerations(Inst2XsdOptions.ENUMERATION_NEVER);
        }
        else
        {
            try
            {
                int intVal = Integer.parseInt(enumerations);
                inst2XsdOptions.setUseEnumerations(intVal);
            }
            catch (NumberFormatException e)
            {
                printHelp();
                System.exit(0);
                return;
            }
        }

        File outDir = new File( cl.getOpt("outDir")==null ? "." : cl.getOpt("outDir"));

        String outPrefix = cl.getOpt("outPrefix");
        if (outPrefix==null)
            outPrefix = "schema";

        inst2XsdOptions.setVerbose((cl.getOpt("verbose") != null));
        boolean validate = cl.getOpt("validate")!=null;

        File[] xmlFiles = cl.filesEndingWith(".xml");
        XmlObject[] xmlInstances = new XmlObject[xmlFiles.length];

        if ( xmlInstances.length==0 )
        {
            printHelp();
            System.exit(0);
            return;
        }

        int i = 0;
        try
        {
            for (i = 0; i < xmlFiles.length; i++)
            {
                xmlInstances[i] = XmlObject.Factory.parse(xmlFiles[i]);
            }
        }
        catch (XmlException e)
        {
            System.err.println("Invalid xml file: '" + xmlFiles[i].getName() + "'. " + e.getMessage());
            return;
        }
        catch (IOException e)
        {
            System.err.println("Could not read file: '" + xmlFiles[i].getName() + "'. " + e.getMessage());
            return;
        }

        SchemaDocument[] schemaDocs = inst2xsd(xmlInstances, inst2XsdOptions);

        try
        {
            for (i = 0; i < schemaDocs.length; i++)
            {
                SchemaDocument schema = schemaDocs[i];

                if (inst2XsdOptions.isVerbose())
                    System.out.println("----------------------\n\n" + schema);

                schema.save(new File(outDir, outPrefix + i + ".xsd"), new XmlOptions().setSavePrettyPrint());
            }
        }
        catch (IOException e)
        {
            System.err.println("Could not write file: '" + outDir + File.pathSeparator +  outPrefix + i + ".xsd" + "'. " + e.getMessage());
            return;
        }

        if (validate)
        {
            validateInstances(schemaDocs, xmlInstances);
        }
    }