/** * Creates a wrapper model class that contains all model classes as list of objects. This class is * used for storing test data */ private void generateWrapperClassForTestData( List<String> generatedClassNames, StringTemplateGroup templateGroup) { Model model = new Model(); model.setName("TestData"); model.setDescription( "Class used to store all the test data. This should not be used for any development"); List<ModelField> modelFields = new ArrayList<ModelField>(); model.setFields(modelFields); for (String className : generatedClassNames) { ModelField aParam = new ModelField(); aParam.setName(this.getNameGenerator().applyMethodNamingPolicy(className) + "List"); aParam.setParamType(this.getDataTypeMappingProvider().getListReturnTypeSignature(className)); modelFields.add(aParam); } List<String> imports = new ArrayList<String>(); imports.addAll(this.config.getDefaultModelImports()); imports.addAll(this.getDataTypeMappingProvider().getListIncludes()); for (ModelField param : model.getFields()) { for (String importDef : param .getFieldDefinition(this.getDataTypeMappingProvider(), config, nameGenerator) .getImportDefinitions()) { if (!imports.contains(importDef)) { imports.add(importDef); } } } StringTemplate template = templateGroup.getInstanceOf(MODEL_OBJECT_TEMPLATE); template.setAttribute("fields", model.getFields()); template.setAttribute("imports", imports); template.setAttribute("annotationPackageName", languageConfig.getAnnotationPackageName()); template.setAttribute("extends", config.getDefaultModelBaseClass()); template.setAttribute(PACKAGE_NAME, config.getModelPackageName()); template.setAttribute("className", model.getGenratedClassName()); File aFile = new File( languageConfig.getModelClassLocation() + model.getGenratedClassName() + languageConfig.getClassFileExtension()); writeFile(aFile, template.toString(), "Wrapper class for test data file"); }
/** @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here Model model; String insertstmt; String insertmodel = "", insertspecies = "", insertcompartment = "", insertfunction = "", insertunitdef = "", insertunits = "", insertreaction = "", insertreactant = "", insertproduct = ""; String insertmodifier = "", insertklaw = "", insertrules = "", insertconstraint = "", insertdelay = "", inserttrigger = "", insertevent = "", inserteventassign = "", insertparameter = ""; String insertstatement = ""; String server, user, password, dbname, filepath; String Filedata = ""; String cwd = System.getProperty("user.dir"); if (args.length == 0) { server = "localhost"; user = "******"; password = "******"; dbname = "sbmldb2"; /** * Path to extract the SBML files from database, where cwd is * "github\db2sbml\dbtosbml_standalone_Project\dbtosbml" so add a folder in this directory and * mention folder name instead of extractedbm folder */ filepath = cwd + "\\extractedbm\\"; } else { server = args[0]; user = args[1]; password = args[2]; dbname = args[3]; filepath = args[4]; } try { Filedata = readFileAsString(cwd + "\\sbmldbschema.sql"); } catch (Exception e) { e.printStackTrace(); } Mysqlconn sql = new Mysqlconn(server, user, password, dbname); // String modelids.getId() = "MorrisonAllegra" ; ASTNode math = null; int level = 0, version = 0; ArrayList<modellist> modelidlist = sql.getmodels(); insertstatement = "LOCK TABLES `model` WRITE,`species` WRITE,`compartment` WRITE,`functiondefinition` WRITE,"; insertstatement = insertstatement + "`listofunitdefinitions` WRITE,`listofunits` WRITE,`reaction` WRITE,`simplespeciesreference` WRITE,"; insertstatement = insertstatement + "`modifierspeciesreference` WRITE,`kineticlaw` WRITE,`parameter` WRITE,`sbmlconstraint` WRITE,"; insertstatement = insertstatement + "`event` WRITE,`sbmltrigger` WRITE,`delay` WRITE,`eventassignment` WRITE,`rules` WRITE" + ";"; for (modellist modelids : modelidlist) { ArrayList<modellist> modellevel = sql.getmodeldetails(modelids.getId()); for (modellist modellv : modellevel) { level = modellv.getlevel(); version = modellv.getversion(); } SBMLDocument doc = new SBMLDocument(level, version); ArrayList<modellist> modellists = sql.getmodeldetails(modelids.getId()); if (!modellists.isEmpty()) insertmodel = insertmodel + "\nInsert Into model (id, name,SBML_level,version,notes,annotation) Values"; for (modellist models : modellists) { insertmodel = insertmodel + "(\'" + models.getId() + "\',\'" + models.getName() + "\'," + models.getlevel() + "," + models.getversion() + ",\'" + models.getnotes() + "\',\'" + models.getannotation().toString() + "\'),"; model = doc.createModel(models.getId()); model.setName(models.getName()); // System.out.println("model : " + models.getId()); // model.setNotes(models.getnotes()); // there is some null exception is command line run // but run perfectly from netbeans so ommented out if (!models.getannotation().equals("")) { Annotation annot = new Annotation(models.getannotation().toString()); model.setAnnotation(annot); } doc.setModel(model); } if (!modellists.isEmpty()) { insertmodel = insertmodel.substring(0, insertmodel.length() - 1); insertmodel = insertmodel + ';'; } // insertmodel = insertmodel + "\nUNLOCK TABLES;"; // System.out.println(insertmodel); ArrayList<SpeciesList> specieslist = sql.getspecies(modelids.getId()); if (!specieslist.isEmpty()) insertspecies = insertspecies + "\nInsert Into species (id, name, compartment, initialAmount, initialConcentration,substanceUnits,hasOnlySubstanceUnits,boundaryCondition,constant,conversionFactor,model_id,annotation) Values"; for (SpeciesList species : specieslist) { insertspecies = insertspecies + "(\'" + species.getId() + "\',\'" + species.getName() + "\',\'" + species.getcompartment() + "\'," + species.getia() + "," + species.getic() + ",\'" + species.getsu() + "\'," + species.gethosu() + "," + species.getbc() + "," + species.getconstant() + "," + species.getcf() + ",\'" + modelids.getId() + "\',\'" + species.getannotation() + "\'),"; Species sp = doc.getModel().createSpecies(species.getId()); sp.setName(species.getName()); sp.setCompartment(species.getcompartment()); sp.setConstant(species.getconstant()); sp.setInitialAmount(species.getia()); sp.setInitialConcentration(species.getic()); sp.setHasOnlySubstanceUnits(species.gethosu()); if (doc.getModel().getLevel() == 3) sp.setConversionFactor(species.getcf()); sp.setBoundaryCondition(species.getbc()); sp.setSubstanceUnits(species.getsu()); if (!species.getannotation().equals("")) { Annotation annot = new Annotation(species.getannotation().toString()); sp.setAnnotation(annot); } // doc.getModel().addSpecies(sp) ; } if (!specieslist.isEmpty()) { insertspecies = insertspecies.substring(0, insertspecies.length() - 1); insertspecies = insertspecies + ';'; } ArrayList<CompartmentList> complist = sql.getcompartments(modelids.getId()); if (!complist.isEmpty()) insertcompartment = insertcompartment + "\nInsert Into compartment (id, name,constant,model_id,spacialDimensions,size,units) Values"; for (CompartmentList comp : complist) { insertcompartment = insertcompartment + "(\'" + comp.getId() + "\',\'" + comp.getName() + "\'," + comp.getconstant() + ",\'" + modelids.getId() + "\'," + comp.getspatialdimensions() + "," + comp.getsize() + "," + comp.getunits() + "\'),"; Compartment c = doc.getModel().createCompartment(comp.getId()); c.setName(comp.getName()); c.setConstant(comp.getconstant()); c.setSize(comp.getsize()); c.setSpatialDimensions(comp.getspatialdimensions()); if (comp.getspatialdimensions() != 0) c.setUnits(comp.getunits()); // doc.getModel().addSpecies(sp) ; } if (!complist.isEmpty()) { insertcompartment = insertcompartment.substring(0, insertcompartment.length() - 1); insertcompartment = insertcompartment + ';'; } ArrayList<functionList> funclist = sql.getfunctions(modelids.getId()); if (!funclist.isEmpty()) insertfunction = insertfunction + "\nInsert Into functiondefinition (id, xmlns,model_id) Values"; for (functionList func : funclist) { insertfunction = insertfunction + "(\'" + func.getId() + "\',\'" + func.getxmlns() + "\',\'" + modelids.getId() + "\'),"; FunctionDefinition fd = doc.getModel().createFunctionDefinition(func.getId()); try { math = ASTNode.parseFormula(func.getxmlns()); fd.setMath(math); } catch (Exception e) { e.printStackTrace(); } } if (!funclist.isEmpty()) { insertfunction = insertfunction.substring(0, insertfunction.length() - 1); insertfunction = insertfunction + ';'; } ArrayList<unitList> unitlist = sql.getunitlist(modelids.getId()); if (!unitlist.isEmpty()) insertunitdef = insertunitdef + "\nInsert Into listofunitdefinitions (id,name,model_id) Values"; for (unitList units : unitlist) { insertunitdef = insertunitdef + "(\'" + units.getId() + "\',\'" + units.getName() + "\',\'" + modelids.getId() + "\'),"; UnitDefinition ud = doc.getModel().createUnitDefinition(units.getId()); ud.setName(units.getName()); ArrayList<unitList> unitdeflist = sql.getunitdef(units.getId()); if (!unitdeflist.isEmpty()) insertunits = insertunits + "\nInsert Into listofunits (listofunitdefinitions_id,kind, scale,exponent,multiplier) Values"; for (unitList unitdef : unitdeflist) { insertunits = insertunits + "(\'" + units.getId() + "\',\'" + unitdef.getkind() + "\'," + unitdef.getscale() + "," + unitdef.getexponent() + "," + unitdef.getmultiplier() + "),"; Unit u = ud.createUnit(Unit.Kind.valueOf(unitdef.getkind())); u.setScale(unitdef.getscale()); u.setExponent(unitdef.getexponent()); u.setMultiplier(unitdef.getmultiplier()); } // doc.getModel().addSpecies(sp) ; if (!unitdeflist.isEmpty()) { insertunits = insertunits.substring(0, insertunits.length() - 1); insertunits = insertunits + ';'; } } if (!unitlist.isEmpty()) { insertunitdef = insertunitdef.substring(0, insertunitdef.length() - 1); insertunitdef = insertunitdef + ';'; } ArrayList<reactionList> reactionlist = sql.getreactons(modelids.getId()); if (!reactionlist.isEmpty()) insertreaction = insertreaction + "\nInsert Into reaction (id,name, reversible,fast,model_id,compartment,annotation) Values"; for (reactionList reaction : reactionlist) { insertreaction = insertreaction + "(\'" + reaction.getId() + "\',\'" + reaction.getName() + "\'," + reaction.getreversible() + "," + reaction.getfast() + ",\'" + modelids.getId() + "\',\'" + reaction.getcompartment() + "\',\'" + reaction.getannotation() + "\'),"; Reaction rn = doc.getModel().createReaction(reaction.getId()); rn.setName(reaction.getName()); if (doc.getModel().getLevel() == 3) rn.setCompartment(reaction.getcompartment()); rn.setFast(reaction.getfast()); rn.setReversible(reaction.getreversible()); if (!reaction.getannotation().equals("")) { Annotation annot = new Annotation(reaction.getannotation().toString()); rn.setAnnotation(annot); } ArrayList<reactionList> reactantlist = sql.getreactants(reaction.getId()); if (!reactantlist.isEmpty()) insertreactant = insertreactant + "\nInsert Into simplespeciesreference (reaction_id,species, sboTerm,stoichiometry,speciestype,constant) Values"; for (reactionList reactant : reactantlist) { insertreactant = insertreactant + "(\'" + reaction.getId() + "\',\'" + reactant.getspecies() + "\',\'" + reactant.getsboTerm() + "\'," + reactant.getstoichometry() + "," + reactant.getconstant() + ",\'reactants\'),"; SpeciesReference rt = new SpeciesReference(); rt.setName(reactant.getspecies()); rt.setSpecies(reactant.getspecies()); // rt.setSBOTerm(reactant.getsboTerm()); rt.setStoichiometry(reactant.getstoichometry()); // rt.setConstant(reactant.getconstant()); rn.addReactant(rt); } if (!reactantlist.isEmpty()) { insertreactant = insertreactant.substring(0, insertreactant.length() - 1); insertreactant = insertreactant + ';'; } ArrayList<reactionList> productlist = sql.getproducts(reaction.getId()); if (!productlist.isEmpty()) insertproduct = insertproduct + "\nInsert Into simplespeciesreference (reaction_id,species, sboTerm,stoichiometry,constant,speciestype) Values"; for (reactionList product : productlist) { insertproduct = insertproduct + "(\'" + reaction.getId() + "\',\'" + product.getspecies() + "\',\'" + product.getsboTerm() + "\'," + product.getstoichometry() + "," + product.getconstant() + ",\'products\'),"; SpeciesReference pr = new SpeciesReference(); pr.setName(product.getspecies()); pr.setSpecies(product.getspecies()); // pr.setSBOTerm(product.getsboTerm()); pr.setStoichiometry(product.getstoichometry()); // pr.setConstant(product.getconstant()); rn.addProduct(pr); } if (!productlist.isEmpty()) { insertproduct = insertproduct.substring(0, insertproduct.length() - 1); insertproduct = insertproduct + ';'; } ArrayList<reactionList> modifierlist = sql.getmodifiers(reaction.getId()); if (!modifierlist.isEmpty()) insertmodifier = insertmodifier + "\nInsert Into modifierspeciesreference (reaction_id,species, sboTerm,speciestype) Values"; for (reactionList modifier : modifierlist) { insertmodifier = insertmodifier + "(\'" + reaction.getId() + "\',\'" + modifier.getspecies() + "\',\'" + modifier.getsboTerm() + "\',\'modifiers\'),"; ModifierSpeciesReference m = new ModifierSpeciesReference(); m.setName(modifier.getspecies()); m.setSpecies(modifier.getspecies()); // m.setSBOTerm(modifier.getsboTerm()); rn.addModifier(m); } if (!modifierlist.isEmpty()) { insertmodifier = insertmodifier.substring(0, insertmodifier.length() - 1); insertmodifier = insertmodifier + ';'; } ArrayList<reactionList> klawlist = sql.getkineticlaws(reaction.getId()); if (!klawlist.isEmpty()) insertklaw = insertklaw + "\nInsert Into kineticlaw (reaction_id,kid, math,annotation) Values"; for (reactionList klaw : klawlist) { insertklaw = insertklaw + "(\'" + reaction.getId() + "\',\'" + klaw.getId() + "\',\'" + klaw.getmath() + "\',\'" + klaw.getannotation() + "\'),"; KineticLaw kl = rn.createKineticLaw(); try { math = ASTNode.parseFormula(klaw.getmath()); kl.setMath(math); if (!klaw.getannotation().equals("")) { Annotation annot = new Annotation(klaw.getannotation().toString()); kl.setAnnotation(annot); } } catch (Exception e) { e.printStackTrace(); } } if (!klawlist.isEmpty()) { insertklaw = insertklaw.substring(0, insertklaw.length() - 1); insertklaw = insertklaw + ';'; } } if (!reactionlist.isEmpty()) { insertreaction = insertreaction.substring(0, insertreaction.length() - 1); insertreaction = insertreaction + ';'; } ArrayList<parameterList> paralist = sql.getparameters(modelids.getId()); if (!paralist.isEmpty()) insertparameter = insertparameter + "\nInsert Into parameter (id,name,value,units,constant,model_id) Values"; for (parameterList para : paralist) { insertparameter = insertparameter + "(\'" + para.getId() + "\',\'" + para.getName() + "\'," + para.getvalue() + "," + para.getunits() + "," + para.getconstant() + ",\'" + modelids.getId() + "\'),"; Parameter par = doc.getModel().createParameter(para.getId()); par.setName(para.getId()); par.setConstant(para.getconstant()); par.setUnits(para.getunits()); par.setValue(para.getvalue()); } if (!paralist.isEmpty()) { insertparameter = insertparameter.substring(0, insertparameter.length() - 1); insertparameter = insertparameter + ';'; } ArrayList<constraintList> conslist = sql.getconstraints(modelids.getId()); if (!conslist.isEmpty()) insertconstraint = insertconstraint + "\nInsert Into sbmlconstraint (math,message,model_id) Values"; for (constraintList constraint : conslist) { insertconstraint = insertconstraint + "(\'" + constraint.getmath() + "\',\'" + constraint.getmessage() + "\',\'" + modelids.getId() + "\'),"; Constraint cons = doc.getModel().createConstraint(); try { math = ASTNode.parseFormula(constraint.getmath()); cons.setMath(math); cons.setMessage(constraint.getmessage()); } catch (Exception e) { e.printStackTrace(); } } if (!conslist.isEmpty()) { insertconstraint = insertconstraint.substring(0, insertconstraint.length() - 1); insertconstraint = insertconstraint + ';'; } ArrayList<eventsList> eventlist = sql.getevents(modelids.getId()); if (!eventlist.isEmpty()) insertevent = insertevent + "\nInsert Into event (id,name,UseValuesFromTriggerTime,model_id) Values"; for (eventsList events : eventlist) { insertevent = insertevent + "(\'" + events.getId() + "\',\'" + events.getName() + "\'," + events.getuservalues() + ",\'" + modelids.getId() + "\'),"; Event ev = doc.getModel().createEvent(events.getId()); ev.setName(events.getName()); // ev.setUseValuesFromTriggerTime(events.getuservalues()); ArrayList<eventsList> triggerlist = sql.gettriggers(events.getId()); if (!triggerlist.isEmpty()) inserttrigger = inserttrigger + "\nInsert Into sbmltrigger (event_id,initialvalue,persisent,math) Values"; for (eventsList triggers : triggerlist) { Trigger tr = doc.getModel().createTrigger(); try { math = ASTNode.parseFormula(triggers.getmath()); tr.setMath(math); tr.setInitialValue(triggers.getinitialval()); tr.setPersistent(triggers.getpersistent()); } catch (Exception e) { e.printStackTrace(); } } if (!triggerlist.isEmpty()) { inserttrigger = inserttrigger.substring(0, insertmodel.length() - 1); inserttrigger = inserttrigger + ';'; } ArrayList<eventsList> delaylist = sql.getdelays(events.getId()); if (!delaylist.isEmpty()) insertdelay = insertdelay + "\nInsert Into delay (event_id,math) Values"; for (eventsList delays : delaylist) { Delay d = doc.getModel().createDelay(); try { math = ASTNode.parseFormula(delays.getmath()); d.setMath(math); } catch (Exception e) { e.printStackTrace(); } } if (!delaylist.isEmpty()) { insertdelay = insertdelay.substring(0, insertdelay.length() - 1); insertdelay = insertdelay + ';'; } ArrayList<eventsList> evasslist = sql.geteventassignments(events.getId()); if (!evasslist.isEmpty()) inserteventassign = inserteventassign + "\nInsert Into eventassignment (event_id,variable,math) Values"; for (eventsList evassign : evasslist) { EventAssignment ea = doc.getModel().createEventAssignment(); try { math = ASTNode.parseFormula(evassign.getmath()); ea.setMath(math); } catch (Exception e) { e.printStackTrace(); } } if (!evasslist.isEmpty()) { inserteventassign = inserteventassign.substring(0, inserteventassign.length() - 1); inserteventassign = inserteventassign + ';'; } } if (!eventlist.isEmpty()) { insertevent = insertevent.substring(0, insertevent.length() - 1); insertevent = insertevent + ';'; } ArrayList<ruleslist> rulelist = sql.getrules(modelids.getId()); if (!rulelist.isEmpty()) insertrules = insertrules + "\nInsert Into rules (id,math,ruletype,model_id) Values"; for (ruleslist rules : rulelist) { insertrules = insertrules + "(\'" + rules.getId() + "\',\'" + rules.getmath() + "\',\'" + rules.getruletype() + "\',\'" + modelids.getId() + "\'),"; if (rules.getruletype().equals("assignmentrule")) { Rule r = doc.getModel().createAssignmentRule(); r.setMetaId(rules.getId()); try { math = ASTNode.parseFormula(rules.getmath()); r.setMath(math); } catch (Exception e) { e.printStackTrace(); } } } if (!rulelist.isEmpty()) { insertrules = insertrules.substring(0, insertrules.length() - 1); insertrules = insertrules + ';'; } SBMLWriter writer = new SBMLWriter(); try { String Path = filepath + modelids.getId() + ".xml"; writer.write(doc, Path); DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); Document document = documentBuilder.parse(Path); Element root = document.getDocumentElement(); Element newdataset = document.createElement("dataset"); root.appendChild(newdataset); ArrayList<dataset> datasetlist = sql.getdataset(modelids.getId()); for (dataset ds : datasetlist) { // System.out.println(ds.getexpcond()); Element name = document.createElement("experimentalcondition"); name.setAttribute("bioelement", ds.getbioel()); name.setAttribute("name", ds.getName()); name.setAttribute("descr", ds.getdescr()); name.setAttribute("expcond", ds.getexpcond()); name.setAttribute("value", String.valueOf(ds.getvalue())); name.setAttribute("type", ds.gettype()); name.setAttribute("uri", ds.geturi()); newdataset.appendChild(name); } root.appendChild(newdataset); DOMSource source = new DOMSource(document); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.setOutputProperty(OutputKeys.METHOD, "xml"); transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4"); StreamResult result = new StreamResult(filepath + modelids.getId() + "d.xml"); transformer.transform(source, result); System.out.println( "Files : " + modelids.getId() + ".xml and " + modelids.getId() + "d.xml have been generated successfully !!!"); } catch (Exception e) { e.printStackTrace(); } insertstatement = insertstatement + "\n\n" + insertmodel + "\n" + insertspecies + "\n" + insertcompartment + "\n" + insertfunction; insertstatement = insertstatement + "\n" + insertparameter + "\n" + insertreaction + "\n" + insertreactant + "\n" + insertproduct; insertstatement = insertstatement + "\n" + insertmodifier + "\n" + insertklaw + "\n" + insertunitdef + "\n" + insertunits; insertstatement = insertstatement + "\n" + insertrules + "\n" + insertconstraint + "\n" + insertevent + "\n" + inserttrigger + "\n" + insertdelay + "\n" + inserteventassign; insertcompartment = ""; insertmodel = ""; insertspecies = ""; // System.out.println("document : " + doc); } insertstatement = insertstatement + "\nUNLOCK TABLES;"; Filedata = Filedata + "\n\n\n" + insertstatement; try { wrtireStringToFile(Filedata, filepath + "sbmldb.sql"); } catch (IOException e) { e.printStackTrace(); } // System.out.println(insertstatement); }
@Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { tags.add(qName); if (debug) { System.out.println("Start Element: " + qName + " parent: " + getParent()); } dumpAttrs(attributes); lastText = ""; if (qName.equalsIgnoreCase("object") && (getParent().equals("model") || getParent().equals("component"))) { pushHandler(new ObjectHandler(isService)); } else if (qName.equalsIgnoreCase(ParamHandler.TOP_TAG) && getParent().equals("object") && !isAnyChildOf("profile")) { ObjectHandler oh = (ObjectHandler) getHandler(); pushHandler(new ParamHandler((oh != null ? oh.getParam().getName() : ""))); } else if (qName.equalsIgnoreCase(DatatypeHandler.TOP_TAG) && getParent().equals("dm:document")) { pushHandler(new DatatypeHandler()); } else if (qName.equalsIgnoreCase(BibiliographyHandler.TOP_TAG) && getParent().equals("dm:document")) { pushHandler(new BibiliographyHandler()); } else if (qName.equalsIgnoreCase("component")) { if (getParent().equals("import")) { String n = attributes.getValue("name"); dumpTags(); if (n != null) { // TODO really import or maybe do nothing } } else if (getParent().equals("model")) { dumpTags(); String path = attributes.getValue("path"); String ref = attributes.getValue("ref"); if (ref != null && path != null) { List<Parameter> cs = components.get(ref); if (cs != null) { for (Parameter p : cs) { // copy parameters Parameter pc = p.clone(); pc.setName(path + pc.getName()); Parameter.Add(pc); } } } } else { dumpTags(); currentComponent = attributes.getValue("name"); pushHandler(new ComponentHandler()); } } else if (qName.equalsIgnoreCase("model")) { try { isService = attributes.getValue("isService").equals("true"); } catch (NullPointerException e) { } Model.setName(attributes.getValue("name")); } else if (qName.equalsIgnoreCase("import")) { String fname = attributes.getValue("file"); InputStream is = streamProvider.getStream(dirDefault + fname); if (is == null) { String fnameBase = fname.substring(0, fname.length() - 4); fname = fnameBase + "-0.xml"; is = streamProvider.getStream(dirDefault + fname); } try { Parse(is, fname); } catch (Exception e) { e.printStackTrace(); System.out.println("EXCEPTION: (import " + fname + ") " + e.getMessage()); } } else if (qName.equalsIgnoreCase("profile")) { pushHandler(new NullHandler(qName)); } else if (getParent().equals("")) { handlers.clear(); } else { } DefaultHandler h = getHandler(); if (h != null) { h.startElement(uri, localName, qName, attributes); } }
public Model toMavenModel() { Model model = new Model(); model.setBuild(new Build()); model.setDescription(description); model.setUrl(url); model.setName(projectId.getArtifact()); model.setGroupId(projectId.getGroup()); model.setVersion(projectId.getVersion()); model.setArtifactId(projectId.getArtifact()); model.setModelVersion("4.0.0"); // parent if (parent != null) { model.setParent(parent); } model.setPackaging(packaging); if (properties != null) { Properties modelProperties = new Properties(); for (Property p : properties) { modelProperties.setProperty(p.getKey(), p.getValue()); } model.setProperties(modelProperties); } // Add jar repository urls. if (null != repositories) { for (String repoUrl : repositories.getRepositories()) { Repository repository = new Repository(); repository.setId(Integer.toString(repoUrl.hashCode())); repository.setUrl(repoUrl); model.addRepository(repository); } } // Add dependency management if (overrides != null) { DependencyManagement depMan = new DependencyManagement(); for (Id dep : overrides) { Dependency dependency = new Dependency(); dependency.setGroupId(dep.getGroup()); dependency.setArtifactId(dep.getArtifact()); dependency.setVersion(dep.getVersion()); // JVZ: We need to parse these dependency.setType("jar"); if (null != dep.getClassifier()) { dependency.setClassifier(dep.getClassifier()); } depMan.addDependency(dependency); } model.setDependencyManagement(depMan); } // Add project dependencies. if (deps != null) { for (Id dep : deps) { Dependency dependency = new Dependency(); dependency.setGroupId(dep.getGroup()); dependency.setArtifactId(dep.getArtifact()); dependency.setVersion(dep.getVersion()); // JVZ: We need to parse these dependency.setType("jar"); if (null != dep.getClassifier()) { dependency.setClassifier(dep.getClassifier()); } model.addDependency(dependency); } } if (modules != null) { model.setModules(modules); } if (pluginOverrides != null) { PluginManagement management = new PluginManagement(); management.setPlugins(pluginOverrides); model.getBuild().setPluginManagement(management); } if (plugins != null) { model.getBuild().setPlugins(plugins); } // Optional source dirs customization. if (dirs != null) { Build build = new Build(); String srcDir = dirs.get("src"); String testDir = dirs.get("test"); if (null != srcDir) build.setSourceDirectory(srcDir); if (null != testDir) build.setTestSourceDirectory(testDir); model.setBuild(build); } if (null != scm) { Scm scm = new Scm(); scm.setConnection(this.scm.getConnection()); scm.setDeveloperConnection(this.scm.getDeveloperConnection()); scm.setUrl(this.scm.getUrl()); model.setScm(scm); } return model; }
public ResourceMethod generateMethod( Endpoint endPoint, Resource resource, DataTypeMappingProvider dataTypeMapper, NamingPolicyProvider nameGenerator) { if (method == null) { method = new ResourceMethod(); // add method description method.setTitle(this.getSummary()); method.setDescription(this.getNotes()); // add method name // get resource path for making web service call /** * Logic for method names 1. remove all path parameters 2. Remove format path parameter 3. For * POST add save 4. For PUT add update 5. For DELETE add delete 6. For GET add get 7. * Concatenate rest of the path with init caps 8. */ String inputobjectName = nameGenerator.getInputObjectName( resource.generateClassName(nameGenerator), endPoint.getPath()); String[] pathElements = endPoint.getPath().split("/"); StringBuilder urlPath = new StringBuilder(""); if (pathElements != null) { for (int i = 0; i < pathElements.length; i++) { String pathElement = pathElements[i]; if (pathElement != null && pathElement.length() > 0) { int position = pathElement.indexOf("{"); if (urlPath.length() > 0) { urlPath.append("+"); } if (position < 0) { urlPath.append("\"/" + pathElement + "\""); } else if (position == 0) { urlPath.append("\"/\"+" + pathElement.substring(1, pathElement.length() - 1)); } else { urlPath.append("\"/" + pathElement.replace("{format}", "json") + "\""); } } } } method.setResourcePath(endPoint.getPath()); method.setName(nameGenerator.getMethodName(endPoint.getPath(), this.getNickname())); // create method argument /** * 1. API token need not be included as that is always added to the calls as HTTP headers 2. * We need to handle auth token specially, hence need to differentiate that 3. Query * parameters needs to be added as query string hence need to separate them out 4. Post * parameters are usually WordnikObjects, hence we need to handle them separately */ List<String> argNames = new ArrayList<String>(); if (this.getParameters() != null) { List<MethodArgument> arguments = new ArrayList<MethodArgument>(); List<MethodArgument> queryParams = new ArrayList<MethodArgument>(); List<MethodArgument> pathParams = new ArrayList<MethodArgument>(); List<MethodArgument> headerParams = new ArrayList<MethodArgument>(); method.setArguments(arguments); method.setQueryParameters(queryParams); method.setPathParameters(pathParams); method.setHeaderParameters(headerParams); for (ModelField modelField : this.getParameters()) { if (!argNames.contains(modelField.getName())) { argNames.add(modelField.getName()); MethodArgument anArgument = new MethodArgument(); anArgument.setAllowedValues(modelField.getAllowedValuesString()); // check if arguments has auth token if (modelField.getParamType().equalsIgnoreCase(PARAM_TYPE_HEADER) && modelField.getName().equals(AUTH_TOKEN_PARAM_NAME)) { method.setAuthToken(true); anArgument.setName(AUTH_TOKEN_ARGUMENT_NAME); anArgument.setDataType( dataTypeMapper.getClassType(MethodArgument.ARGUMENT_STRING, true)); anArgument.setDescription(modelField.getDescription()); anArgument.setRequired(modelField.isRequired()); anArgument.setDefaultValue(modelField.getDefaultValue()); arguments.add(anArgument); headerParams.add(anArgument); } else if (modelField.getParamType().equalsIgnoreCase(PARAM_TYPE_HEADER) && modelField.getName().equals(API_KEY_PARAM_NAME)) { anArgument.setName(API_KEY_PARAM_NAME); anArgument.setDataType( dataTypeMapper.getClassType(MethodArgument.ARGUMENT_STRING, true)); anArgument.setRequired(true); arguments.add(anArgument); headerParams.add(anArgument); } else if (modelField.getParamType().equalsIgnoreCase(PARAM_TYPE_PATH) && !modelField.getName().equalsIgnoreCase(FORMAT_PARAM_NAME)) { anArgument.setName(modelField.getName()); anArgument.setDataType( dataTypeMapper.getClassType(MethodArgument.ARGUMENT_STRING, true)); anArgument.setDescription(modelField.getDescription()); anArgument.setRequired(true); // always true anArgument.setDefaultValue(modelField.getDefaultValue()); arguments.add(anArgument); pathParams.add(anArgument); } else if (modelField.getParamType().equalsIgnoreCase(PARAM_TYPE_QUERY)) { anArgument.setName(modelField.getName()); anArgument.setDataType( dataTypeMapper.getClassType(MethodArgument.ARGUMENT_STRING, true)); anArgument.setDescription(modelField.getDescription()); anArgument.setRequired(modelField.isRequired()); anArgument.setDefaultValue(modelField.getDefaultValue()); queryParams.add(anArgument); arguments.add(anArgument); } else if (modelField.getParamType().equalsIgnoreCase(PARAM_TYPE_BODY)) { if (modelField.getName() == null) { modelField.setName(POST_PARAM_NAME); } anArgument.setName(modelField.getName()); anArgument.setDataType(dataTypeMapper.getClassType(modelField.getDataType(), false)); anArgument.setDescription(modelField.getDescription()); anArgument.setRequired(modelField.isRequired()); anArgument.setDefaultValue(modelField.getDefaultValue()); arguments.add(anArgument); method.setPostObject(true); } if (modelField.isAllowMultiple() && dataTypeMapper.isPrimitiveType(modelField.getDataType())) { anArgument.setDataType( dataTypeMapper.getListReturnTypeSignature( dataTypeMapper.getClassType(modelField.getDataType(), false))); } anArgument.setInputModelClassArgument(inputobjectName, nameGenerator); } } } // check if input model with the given name is already generated for some other path boolean inputModelAlreadyGenerated = false; if (alreadyGeneratedModels.containsKey(inputobjectName)) { if (!alreadyGeneratedModels.get(inputobjectName).equals(endPoint.getPath())) { inputModelAlreadyGenerated = true; } } // check for number of arguments, if we have more than 4 then send the arguments as input // object if (method.getArguments() != null && method.getArguments().size() > ARG_COUNT_FOR_INPUT_MODEL && !inputModelAlreadyGenerated) { List<MethodArgument> arguments = new ArrayList<MethodArgument>(); Model modelforMethodInput = new Model(); modelforMethodInput.setName(inputobjectName); List<ModelField> fields = new ArrayList<ModelField>(); for (MethodArgument argument : method.getArguments()) { if (!argument.getName().equals(POST_PARAM_NAME)) { ModelField aModelField = new ModelField(); aModelField.setAllowedValues(argument.getAllowedValues()); aModelField.setDescription(argument.getDescription()); aModelField.setName(argument.getName()); aModelField.setParamType(argument.getDataType()); fields.add(aModelField); } else { arguments.add(argument); } } modelforMethodInput.setFields(fields); MethodArgument anArgument = new MethodArgument(); anArgument.setDataType(inputobjectName); anArgument.setName(nameGenerator.applyMethodNamingPolicy(inputobjectName)); arguments.add(anArgument); method.setArguments(arguments); method.setInputModel(modelforMethodInput); alreadyGeneratedModels.put(inputobjectName, endPoint.getPath()); } List<String> argumentDefinitions = new ArrayList<String>(); List<String> argumentNames = new ArrayList<String>(); if (method.getArguments() != null && method.getArguments().size() > 0) { for (MethodArgument arg : method.getArguments()) { if (!arg.getName().equalsIgnoreCase(FORMAT_PARAM_NAME)) { argumentDefinitions.add( dataTypeMapper.getArgumentDefinition(arg.getDataType(), arg.getName())); argumentNames.add(arg.getName()); } } method.setArgumentDefinitions(argumentDefinitions); method.setArgumentNames(argumentNames); } // get method type method.setMethodType(this.getHttpMethod()); // get return value String returnType = dataTypeMapper.getClassType(responseClass, false); if ("".equals(returnType)) { method.setHasResponseValue(false); } else { method.setHasResponseValue(true); } // set the original response name, this is used in identifying if the respone is single valued // or multi valued method.setReturnValueFromOperationJson(responseClass); method.setReturnValue(dataTypeMapper.getClassType(responseClass, false)); method.setReturnClassName(dataTypeMapper.getGenericType(responseClass)); // if this is a list return type if (method .getReturnClassName() .equals(dataTypeMapper.getListReturnTypeSignature(responseClass))) { String returnValueTypeName = method.getReturnValue(); Model listWrapperModel = new Model(); listWrapperModel.setName(nameGenerator.getListWrapperName(returnValueTypeName)); List<ModelField> fields = new ArrayList<ModelField>(); ModelField aModelField = new ModelField(); aModelField.setName(nameGenerator.applyMethodNamingPolicy(returnValueTypeName)); aModelField.setParamType(responseClass); fields.add(aModelField); listWrapperModel.setFields(fields); method.setListWrapperModel(listWrapperModel); } // get description string for exception method.setExceptionDescription(calculateExceptionMessage()); } return method; }