private Set<ReferenceDescriptor> getReferences() { Set<ReferenceDescriptor> references = new HashSet<ReferenceDescriptor>(); ReferenceDescriptor rfd1 = new ReferenceDescriptor("rfd1", "String", "reverse1"); ReferenceDescriptor rfd2 = new ReferenceDescriptor("rfd2", "Integer", "reverse2"); references.add(rfd1); references.add(rfd2); return references; }
private static ReferenceDescriptor cloneReferenceDescriptor(ReferenceDescriptor ref) { return new ReferenceDescriptor(ref.getName(), ref.getReferencedClassName(), ref.getReverseReferenceFieldName()); }
private static ReferenceDescriptor cloneReferenceDescriptor(ReferenceDescriptor ref) { return new ReferenceDescriptor(ref.getName(), ref.getReferencedClassName(), ref.getReverseReferenceFieldName()); }
public void testRevereseReferenceNotReciprocal() throws Exception { // rfd1 points to Class2 but has reverse-reference that points to another field in Class1 ReferenceDescriptor rfd1 = new ReferenceDescriptor("rfd1", "package.name.Class2", "rfd2"); ReferenceDescriptor rfdOther1 = new ReferenceDescriptor("rfdOther1", "package.name.Class2", "rfd2"); ReferenceDescriptor rfd2 = new ReferenceDescriptor("rfd2", "package.name.Class1", "rfdOther1"); Set<ReferenceDescriptor> refs1 = new HashSet<ReferenceDescriptor>(Arrays.asList(rfd1, rfdOther1)); Set<ReferenceDescriptor> refs2 = Collections.singleton(rfd2); ClassDescriptor cld1 = new ClassDescriptor("package.name.Class1", null, false, ClassDescriptorFactory.NO_ATTRS, refs1, ClassDescriptorFactory.NO_COLLS); ClassDescriptor cld2 = new ClassDescriptor("package.name.Class2", null, false, ClassDescriptorFactory.NO_ATTRS, refs2, ClassDescriptorFactory.NO_COLLS); Model model = new Model("model", "package.name", Arrays.asList(cld1, cld2)); // this no longer throws an exception , instead creates the model but adds a problem assertEquals(1, model.getProblems().size()); }
public void testRelationTypeOneToOne() throws Exception { ReferenceDescriptor ref1 = new ReferenceDescriptor("ref1", "package.name.Class1", "ref2"); ReferenceDescriptor ref2 = new ReferenceDescriptor("ref2", "package.name.Class1", null); ClassDescriptor cld = new ClassDescriptor("package.name.Class1", null, false, ClassDescriptorFactory.NO_ATTRS, Arrays.asList(ref1, ref2), ClassDescriptorFactory.NO_COLLS); new Model("model1", "package.name", Collections.singleton(cld)); assertEquals(FieldDescriptor.ONE_ONE_RELATION, ref1.relationType()); }
public void testGetIndirectionTableNameRef() throws Exception { CollectionDescriptor col1 = new CollectionDescriptor("col1", "package.name.Class2", "ref1"); Set cols = new HashSet(Arrays.asList(new Object[] {col1})); ClassDescriptor cld1 = new ClassDescriptor("package.name.Class1", null, false, new HashSet(), new HashSet(), cols); ReferenceDescriptor ref1 = new ReferenceDescriptor("ref1", "package.name.Class1", null); Set refs = new HashSet(Arrays.asList(new Object[] {ref1})); ClassDescriptor cld2 = new ClassDescriptor("package.name.Class2", null, false, new HashSet(), refs, new HashSet()); Set clds = new HashSet(Arrays.asList(new Object[] {cld1, cld2})); new Model("test", "package.name", clds); try { DatabaseUtil.getIndirectionTableName(col1); fail("Expected IllegalArgumentException"); } catch (IllegalArgumentException e) { } }
public void testGenerateReferenceDescriptor() throws Exception { ReferenceDescriptor rfd1 = new ReferenceDescriptor("rfd1", "Class2", null); Set refs = new HashSet(Collections.singleton(rfd1)); ClassDescriptor cld1 = new ClassDescriptor("Class1", null, false, new HashSet(), refs, new HashSet()); ClassDescriptor cld2 = new ClassDescriptor("Class2", null, false, new HashSet(), new HashSet(), new HashSet()); Model model = new Model("model", "", new HashSet(Arrays.asList(new Object[] {cld1, cld2}))); String expected = INDENT + "// Ref: Class1.rfd1" + ENDL + INDENT + "protected org.intermine.model.InterMineObject rfd1;" + ENDL + INDENT + "public Class2 getRfd1() { if (rfd1 instanceof org.intermine.objectstore.proxy.ProxyReference) { return ((Class2) ((org.intermine.objectstore.proxy.ProxyReference) rfd1).getObject()); }; return (Class2) rfd1; }" + ENDL + INDENT + "public void setRfd1(final Class2 rfd1) { this.rfd1 = rfd1; }" + ENDL + INDENT + "public void proxyRfd1(final org.intermine.objectstore.proxy.ProxyReference rfd1) { this.rfd1 = rfd1; }" + ENDL + INDENT + "public org.intermine.model.InterMineObject proxGetRfd1() { return rfd1; }" + ENDL + ENDL; assertEquals(mo.generate(rfd1, true) + "\n" + expected, expected, mo.generate(rfd1, true)); }
public void testEquals() throws Exception { ReferenceDescriptor ref1 = new ReferenceDescriptor("rfd1", "Class2", "rfd1"); ReferenceDescriptor ref2 = new ReferenceDescriptor("rfd1", "Class2", "rfd1"); ReferenceDescriptor ref3 = new ReferenceDescriptor("rfd2", "Class2", "rfd1"); ReferenceDescriptor ref5 = new ReferenceDescriptor("rfd1", "Class3", "rfd1"); ReferenceDescriptor ref6 = new ReferenceDescriptor("rfd1", "Class2", "rfd2"); assertEquals(ref1, ref2); assertEquals(ref1.hashCode(), ref2.hashCode()); assertFalse(ref1.equals(ref3)); assertFalse(ref1.equals(ref5)); assertFalse(ref1.equals(ref6)); }
public void testToString() throws Exception { ReferenceDescriptor ref = new ReferenceDescriptor("ref", "package.name.Class1", null); String expected = "<reference name=\"ref\" referenced-type=\"Class1\"/>"; assertEquals(ref.toString(), expected); ref = new ReferenceDescriptor("ref", "package.name.Class1", "reverseRef"); expected = "<reference name=\"ref\" referenced-type=\"Class1\" reverse-reference=\"reverseRef\"/>"; assertEquals(ref.toString(), expected); } }
public void testGenerateToString() throws Exception { AttributeDescriptor atd1 = new AttributeDescriptor("inty", "int"); AttributeDescriptor atd2 = new AttributeDescriptor("str", "java.lang.String"); AttributeDescriptor atd3 = new AttributeDescriptor("integery", "java.lang.Integer"); ReferenceDescriptor rfd1 = new ReferenceDescriptor("rfd1", "package.name.Class2", null); CollectionDescriptor cod1 = new CollectionDescriptor("cod1", "package.name.Class2", null); Set<AttributeDescriptor> atts = new LinkedHashSet(Arrays.asList(atd1, atd2, atd3)); Set<ReferenceDescriptor> refs = new LinkedHashSet(Arrays.asList(rfd1)); Set<CollectionDescriptor> cols = new LinkedHashSet(Arrays.asList(cod1)); ClassDescriptor cld1 = new ClassDescriptor("package.name.Class1", null, false, atts, refs, cols); ClassDescriptor cld2 = new ClassDescriptor("package.name.Class2", null, false, new HashSet(), new HashSet(), new HashSet()); Model model = new Model("model", "package.name", new LinkedHashSet(Arrays.asList(cld1, cld2))); String expected = INDENT + "@Override public String toString() { return \"Class1 [id=\" + id + \", integery=\" + integery + \", inty=\" + inty + \", rfd1=\" + (rfd1 == null ? \"null\" : (rfd1.getId() == null ? \"no id\" : rfd1.getId().toString())) + \", str=\" + (str == null ? \"null\" : \"\\\"\" + str + \"\\\"\") + \"]\"; }" + ENDL; assertEquals(expected, mo.generateToString(cld1)); }
public void testGetType() throws Exception { AttributeDescriptor atd1 = new AttributeDescriptor("atd1", "java.lang.String"); assertEquals("java.lang.String", mo.getType(atd1)); ReferenceDescriptor rfd1 = new ReferenceDescriptor("rfd1", "package.name.Class2", null); CollectionDescriptor cod1 = new CollectionDescriptor("cod1", "package.name.Class2", null); Set refs = new HashSet(Collections.singleton(rfd1)); Set cols = new HashSet(Collections.singleton(cod1)); ClassDescriptor cld1 = new ClassDescriptor("package.name.Class1", null, false, new HashSet(), refs, cols); ClassDescriptor cld2 = new ClassDescriptor("package.name.Class2", null, false, new HashSet(), new HashSet(), new HashSet()); Model model = new Model("model", "package.name", new HashSet(Arrays.asList(new Object[] {cld1, cld2}))); assertEquals("package.name.Class2", mo.getType(rfd1)); assertEquals("java.util.Set<package.name.Class2>", mo.getType(cod1)); }
public void testMultiInheritanceLegalRef() throws Exception { ReferenceDescriptor ref1 = new ReferenceDescriptor("atd1", "package.name.Class2", null); ReferenceDescriptor ref2 = new ReferenceDescriptor("atd1", "package.name.Class2", null); Set<ReferenceDescriptor> refs1 = Collections.singleton(ref1); Set<ReferenceDescriptor> refs2 = Collections.singleton(ref2); ClassDescriptor cld1 = new ClassDescriptor("package.name.Class1", null, true, noAttrs, refs1, noColls); ClassDescriptor cld2 = new ClassDescriptor("package.name.Class2", null, true, noAttrs, refs2, noColls); ClassDescriptor cld3 = makeClass("package.name.Class3", "package.name.Class1 package.name.Class2"); new Model("model", "package.name", Arrays.asList(cld1, cld2, cld3)); ReferenceDescriptor rd = cld3.getReferenceDescriptorByName("atd1", true); assertEquals("package.name.Class2", rd.getReferencedClassName()); }
public void testRelationTypeUnidirectional() throws Exception { ReferenceDescriptor ref = new ReferenceDescriptor("ref1", "package.name.Class1", null); ClassDescriptor cld = new ClassDescriptor("package.name.Class1", null, false, ClassDescriptorFactory.NO_ATTRS, Collections.singleton(ref), ClassDescriptorFactory.NO_COLLS); new Model("model1", "package.name", Collections.singleton(cld)); assertEquals(FieldDescriptor.N_ONE_RELATION, ref.relationType()); }
public void testRelationTypeManyToOne() throws Exception { CollectionDescriptor col = new CollectionDescriptor("col1", "package.name.Class1", null); ReferenceDescriptor ref = new ReferenceDescriptor("ref1", "package.name.Class1", "col1"); Set<CollectionDescriptor> cols = Collections.singleton(col); Set<ReferenceDescriptor> refs = Collections.singleton(ref); ClassDescriptor cld = new ClassDescriptor("package.name.Class1", null, false, ClassDescriptorFactory.NO_ATTRS, refs, cols); new Model("model1", "package.name", Collections.singleton(cld)); assertEquals(FieldDescriptor.N_ONE_RELATION, ref.relationType()); }
public void testRelationTypeOneToMany() throws Exception { CollectionDescriptor col = new CollectionDescriptor("col1", "package.name.Class1", "ref1"); ReferenceDescriptor ref = new ReferenceDescriptor("ref1", "package.name.Class1", null); Set<CollectionDescriptor> cols = Collections.singleton(col); Set<ReferenceDescriptor> refs = Collections.singleton(ref); ClassDescriptor cld = new ClassDescriptor("package.name.Class1", null, false, noAttrs, refs, cols); new Model("model1", "package.name", Collections.singleton(cld)); assertEquals(FieldDescriptor.ONE_N_RELATION, col.relationType()); }
public void testMultiInheritanceIllegalAttRef() throws Exception { AttributeDescriptor attr = new AttributeDescriptor("collision", "float"); ReferenceDescriptor ref = new ReferenceDescriptor("collision", "package.name.Class2", null); Set<AttributeDescriptor> attrs = Collections.singleton(attr); Set<ReferenceDescriptor> refs = Collections.singleton(ref); ClassDescriptor cld1 = new ClassDescriptor("package.name.Class1", null, true, noAttrs, refs, noColls); ClassDescriptor cld2 = new ClassDescriptor("package.name.Class2", null, true, attrs, noRefs, noColls); ClassDescriptor cld3 = makeClass("package.name.Class3", "package.name.Class1 package.name.Class2"); try { new Model("model", "package.name", Arrays.asList(cld1, cld2, cld3)); fail("Expected: MetaDataException"); } catch (MetaDataException e) { } }
public void testReferencedClassNotSet() throws Exception { ReferenceDescriptor rfd1 = new ReferenceDescriptor("rfd1", "Class2", null); Set<ReferenceDescriptor> references = Collections.singleton(rfd1); // cld1 has a ReferenceDescriptor that points to Class2 new ClassDescriptor("Class1", null, false, ClassDescriptorFactory.NO_ATTRS, references, ClassDescriptorFactory.NO_COLLS); new ClassDescriptor("Class2", null, false, ClassDescriptorFactory.NO_ATTRS, ClassDescriptorFactory.NO_REFS, ClassDescriptorFactory.NO_COLLS); try { rfd1.getReferencedClassDescriptor(); fail("Expected IllegalStateException, model has not yet been set"); } catch (IllegalStateException e) { } }
public void testMultiInheritanceIllegalRefCol() throws Exception { CollectionDescriptor coll = new CollectionDescriptor("atd1", "package.name.Class2", null); ReferenceDescriptor ref = new ReferenceDescriptor("atd1", "package.name.Class2", null); Set<CollectionDescriptor> colls = Collections.singleton(coll); Set<ReferenceDescriptor> refs = Collections.singleton(ref); ClassDescriptor cld1 = new ClassDescriptor("package.name.Class1", null, true, noAttrs, noRefs, colls); ClassDescriptor cld2 = new ClassDescriptor("package.name.Class2", null, true, noAttrs, refs, noColls); ClassDescriptor cld3 = makeClass("package.name.Class3", "package.name.Class1 package.name.Class2"); try { new Model("model", "package.name", Arrays.asList(cld1, cld2, cld3)); fail("Expected: MetaDataException"); } catch (MetaDataException e) { } }
public void testGetReferencedClass() throws Exception { ReferenceDescriptor rfd1 = new ReferenceDescriptor("rfd1", "package.name.Class2", null); Set<ReferenceDescriptor> references = Collections.singleton(rfd1); // cld1 has a ReferenceDescriptor that points to Class2 ClassDescriptor cld1 = new ClassDescriptor("package.name.Class1", null, false, ClassDescriptorFactory.NO_ATTRS, references, ClassDescriptorFactory.NO_COLLS); ClassDescriptor cld2 = cldFac.makeClass("Class2"); new Model("model", "package.name", Arrays.asList(cld1, cld2)); try { ClassDescriptor refCld = rfd1.getReferencedClassDescriptor(); assertTrue("ClassDescriptor was null", refCld != null); assertTrue("Expected ClassDescriptor to be Class2", refCld.getName().equals("package.name.Class2")); } catch (IllegalStateException e) { fail("Should have returned a ClassDescriptor"); } }
public void testSetClassDescriptor() throws Exception { ClassDescriptor cld = cldFac.makeClass("Class1"); ReferenceDescriptor rfd = new ReferenceDescriptor("name", "String", "String"); try { rfd.setClassDescriptor(cld); } catch (IllegalStateException e) { fail("should have been able set ClassDescriptor"); } try { rfd.setClassDescriptor(cld); fail("Expected: IllegalStateException, ClassDescriptor already set"); } catch (IllegalStateException e) { } }