/** * Load a named model from the classpath * @param name the model name * @return the model */ public static Model loadModel(String name) { String filename = Util.getFilename(MODEL, name); InputStream is = Model.class.getClassLoader().getResourceAsStream(filename); if (is == null) { throw new IllegalArgumentException("Model definition file '" + filename + "' cannot be found"); } Model model = null; try { model = new InterMineModelParser().process(new InputStreamReader(is)); } catch (Exception e) { throw new RuntimeException("Error parsing model definition file '" + filename + "'", e); } return model; } }
private ClassDescriptor parseClass(String xml, String packageName) throws Exception { return (ClassDescriptor) parser .generateClassDescriptors(new StringReader(xml), packageName) .iterator().next(); }
public void testConflictingAttributes() throws Exception { String modelStr = "<model name=\"testmodel\" package=\"org.intermine.model.testmodel\"><class name=\"org.intermine.model.testmodel.Secretary\" is-interface=\"false\"><attribute name=\"name\" type=\"java.lang.String\"/></class></model>"; Model model = parser.process(new StringReader(modelStr)); String addition = "<class name=\"org.intermine.model.testmodel.Secretary\" is-interface=\"false\"><attribute name=\"name\" type=\"java.lang.Integer\"/></class>"; Set additionClds = parser.generateClassDescriptors(new StringReader(addition), model.getPackageName()); try { ModelMerger.mergeModel(model, additionClds); fail("Expected ModelMergerException"); } catch (ModelMergerException e) { //e.printStackTrace(); } }
public void setUp() throws Exception { parser = new InterMineModelParser(); }
public void testMergeClassReplacingInheritance() throws Exception { String modelStr = "<model name=\"testmodel\" package=\"package.name\">" + "<class name=\"A\" extends=\"B\" is-interface=\"false\"></class>" + "<class name=\"B\" is-interface=\"false\"></class>" + "<class name=\"C\" is-interface=\"false\"></class>" + "</model>"; Model model = parser.process(new StringReader(modelStr)); String addition = "<class name=\"A\" extends=\"C\" is-interface=\"false\"></class>"; ClassDescriptor cld1 = model.getClassDescriptorByName("A"); ClassDescriptor cld2 = parseClass(addition, ""); ClassDescriptor res = ModelMerger.mergeClass(cld1, cld2, model, Collections.singleton(cld2)); Set supers = new HashSet(); supers.add("C"); assertEquals(supers, res.getSuperclassNames()); }
public void testAddAttribute() throws Exception { String modelStr = "<model name=\"testmodel\" package=\"org.intermine.model.testmodel\"><class name=\"org.intermine.model.testmodel.Secretary\" is-interface=\"false\"><attribute name=\"name\" type=\"java.lang.String\"/></class></model>"; Model model = parser.process(new StringReader(modelStr)); String addition = "<class name=\"org.intermine.model.testmodel.Secretary\" is-interface=\"false\"><attribute name=\"age\" type=\"java.lang.Integer\"/></class>"; Set additionClds = parser.generateClassDescriptors(new StringReader(addition), model.getPackageName()); String expected = "<model name=\"testmodel\" package=\"org.intermine.model.testmodel\"><class name=\"org.intermine.model.testmodel.Secretary\" is-interface=\"false\"><attribute name=\"name\" type=\"java.lang.String\"/><attribute name=\"age\" type=\"java.lang.Integer\"/></class></model>"; //assertXMLEqual(expected, xml); assertEquals(parser.process(new StringReader(expected)).getClassDescriptors(), ModelMerger.mergeModel(model, additionClds).getClassDescriptors()); }
public void setUp() throws Exception { parser = new InterMineModelParser(); }
public void testProcess() throws Exception { Model model = parser.process(new StringReader(getModelXml())); Model expected = new Model("testmodel", "org.intermine.model.testmodel", getExpectedClds()); assertEquals(expected, model); }
/** * Load a named model from the classpath * @param name the model name * @return the model */ public static Model loadModel(String name) { String filename = Util.getFilename(MODEL, name); InputStream is = Model.class.getClassLoader().getResourceAsStream(filename); if (is == null) { throw new IllegalArgumentException("Model definition file '" + filename + "' cannot be found"); } Model model = null; try { model = new InterMineModelParser().process(new InputStreamReader(is)); } catch (Exception e) { throw new RuntimeException("Error parsing model definition file '" + filename + "'", e); } return model; } }
public void testIsInterfaceMismatch() throws Exception { String modelStr = "<model name=\"testmodel\" package=\"org.intermine.model.testmodel\">" + "<class name=\"org.intermine.model.testmodel.Company\" is-interface=\"false\">" + "</class>" + "</model>"; Model model = parser.process(new StringReader(modelStr)); // Merge class with differing is-interface attribute String addition = "<class name=\"org.intermine.model.testmodel.Company\" is-interface=\"true\">" + "</class>"; Set additionClds = parser.generateClassDescriptors(new StringReader(addition), model.getPackageName()); try { ModelMerger.mergeModel(model, additionClds); fail("Expected ModelMergerException"); } catch (ModelMergerException err) { } }
/** * {@inheritDoc} */ @Override public void execute() { InterMineModelParser parser = new InterMineModelParser(); try { Model merged = ModelFileMerger.mergeModelFromFiles(inputModelFile, additionsFiles, parser); FileWriter writer = new FileWriter(outputModelFile); writer.write(merged.toString()); writer.close(); } catch (MetaDataException e) { throw new BuildException("Failed to parse model from input files", e); } catch (IOException e) { throw new BuildException("failed to write model file: " + outputModelFile, e); } } }
public void testGenerateClassDescriptors() throws Exception { Model model = parser.process(new StringReader(getModelXml())); assertEquals(getExpectedClds(), model.getClassDescriptors()); }
+ "</class>"; cld2 = (ClassDescriptor) parser.generateClassDescriptors(new StringReader(addition), "org.intermine.model.testmodel").iterator().next(); try { ModelMerger.mergeCollections(cld1, cld2); + "</class>"; cld2 = (ClassDescriptor) parser.generateClassDescriptors( new StringReader(addition), "org.intermine.model.testmodel").iterator().next(); try {
public void testExecute() throws Exception { ClassLoader cl = getClass().getClassLoader(); File output = File.createTempFile("output", ".xml"); ModelMergerTask task = new ModelMergerTask(); task.setAdditionsFiles(Collections.singletonList("xml/ModelMergerTaskTestAdditions.xml")); task.setInputModelFile(new File(cl.getResource("xml/ModelMergerTaskTestInput.xml").getPath())); task.setOutputFile(output); task.execute(); InterMineModelParser parser = new InterMineModelParser(); Model result = parser.process(new FileReader(output)); Model exp = parser.process(new InputStreamReader(cl.getResourceAsStream("xml/ModelMergerTaskTestExpected.xml"))); assertEquals(exp, result); } }
+ "<class name=\"Ai\" is-interface=\"true\"></class>" + "</model>"; Model model = parser.process(new StringReader(modelStr)); + "<class name=\"B\" extends=\"C\" is-interface=\"false\"></class>" + "</model>"; Set additionClds = parser.generateClassDescriptors(new StringReader( addition), model.getPackageName()); + "<class name=\"Ai\" is-interface=\"true\"></class>" + "</model>"; Set dodgyClds = parser.generateClassDescriptors(new StringReader(dodgyStr), model.getPackageName()); + "<class name=\"Ai\" is-interface=\"true\"></class>" + "</model>"; Set expectedClds = parser.generateClassDescriptors(new StringReader(dodgyStr), model.getPackageName());
/** * {@inheritDoc} */ @Override public void execute() { InterMineModelParser parser = new InterMineModelParser(); try { Model merged = ModelFileMerger.mergeModelFromFiles(inputModelFile, additionsFiles, parser); FileWriter writer = new FileWriter(outputModelFile); writer.write(merged.toString()); writer.close(); } catch (MetaDataException e) { throw new BuildException("Failed to parse model from input files", e); } catch (IOException e) { throw new BuildException("failed to write model file: " + outputModelFile, e); } } }
+ "</class>"; cld2 = (ClassDescriptor) parser.generateClassDescriptors( new StringReader(addition), "org.intermine.model.testmodel").iterator().next(); try {
throw new BuildException("Exception while creating ObjectStore", e); InterMineModelParser imModelParser = new InterMineModelParser(); Model oldModel = null; try { Reader fileReader = new FileReader(oldModelLocation); oldModel = imModelParser.process(fileReader); } catch (FileNotFoundException fnfe) { throw new BuildException("File of the previous model not found ", fnfe);
public void testInheritanceChain() throws Exception { String modelStr = "<model name=\"testmodel\" package=\"org.intermine.model.testmodel\">" + "<class name=\"A\" extends=\"C\" is-interface=\"false\"></class>" + "<class name=\"C\" is-interface=\"false\"></class>" + "</model>"; Model model = parser.process(new StringReader(modelStr)); String addition = "<model name=\"testmodel\" package=\"org.intermine.model.testmodel\">" + "<class name=\"A\" extends=\"B\" is-interface=\"false\"></class>" + "<class name=\"B\" extends=\"C\" is-interface=\"false\"></class>" + "</model>"; Set additionClds = parser.generateClassDescriptors(new StringReader(addition), model.getPackageName()); String expected = "<model name=\"testmodel\" package=\"org.intermine.model.testmodel\">" + "<class name=\"A\" extends=\"B\" is-interface=\"false\"></class>" + "<class name=\"B\" extends=\"C\" is-interface=\"false\"></class>" + "<class name=\"C\" is-interface=\"false\"></class>" + "</model>"; assertEquals(parser.process(new StringReader(expected)).getClassDescriptors(), ModelMerger.mergeModel(model, additionClds).getClassDescriptors()); }
private void updateModel () { BufferedReader r = null; try { r = requester.requestURL(getUrl() + MODEL_URL, ContentType.XML); ModelParser m = new InterMineModelParser(); model = m.process(r); } catch (ModelParserException e) { LOG.error("Error reading remote model", e); } finally { if (r != null) { try { r.close(); } catch (IOException e) { LOG.error("Error closing connection", e); } } } }