/** * Returns a ClassDescriptor for the object referenced by this field. * @return ClassDescriptor for the referenced object * @throws IllegalStateException if model has not been set */ public ClassDescriptor getReferencedClassDescriptor() { if (!modelSet) { throw new IllegalStateException("This ReferenceDescriptor (" + getName() + ") is not yet part of a metadata Model"); } return referencedClassDesc; }
/** * Returns a ClassDescriptor for the object referenced by this field. * @return ClassDescriptor for the referenced object * @throws IllegalStateException if model has not been set */ public ClassDescriptor getReferencedClassDescriptor() { if (!modelSet) { throw new IllegalStateException("This ReferenceDescriptor (" + getName() + ") is not yet part of a metadata Model"); } return referencedClassDesc; }
/** * Gets the field in the referenced object that refers back to this class. * Note that this will be null in a unidirectional relationship, * a ReferenceDescriptor in a 1:1 and a CollectionDescriptor in a 1:N. * @return a FieldDescriptor referring back to this class. * @throws IllegalStateException if model has not been set */ public ReferenceDescriptor getReverseReferenceDescriptor() { if (!modelSet) { throw new IllegalStateException("This ReferenceDescriptor (" + getName() + ") is not yet part of a metadata Model"); } return reverseRefDesc; }
/** * Gets the field in the referenced object that refers back to this class. * Note that this will be null in a unidirectional relationship, * a ReferenceDescriptor in a 1:1 and a CollectionDescriptor in a 1:N. * @return a FieldDescriptor referring back to this class. * @throws IllegalStateException if model has not been set */ public ReferenceDescriptor getReverseReferenceDescriptor() { if (!modelSet) { throw new IllegalStateException("This ReferenceDescriptor (" + getName() + ") is not yet part of a metadata Model"); } return reverseRefDesc; }
/** * Generates code for a single reference. * * @param ref the ReferenceDescriptor * @param field true if the class should have the associated field, or false if the field is in * the superclass * @return java code */ protected String generate(ReferenceDescriptor ref, boolean field) { StringBuffer sb = new StringBuffer(); if (field) { sb.append(INDENT + "// Ref: " + ref.getClassDescriptor().getName() + "." + ref.getName() + ENDL) .append(INDENT) .append("protected org.intermine.model.InterMineObject ") .append(ref.getName()) .append(";" + ENDL); } sb.append(generateGetSet(ref, field)) .append(ENDL); return sb.toString(); }
/** * Generates code for a single reference. * * @param ref the ReferenceDescriptor * @param field true if the class should have the associated field, or false if the field is in * the superclass * @return java code */ protected String generate(ReferenceDescriptor ref, boolean field) { StringBuffer sb = new StringBuffer(); if (field) { sb.append(INDENT + "// Ref: " + ref.getClassDescriptor().getName() + "." + ref.getName() + ENDL) .append(INDENT) .append("protected org.intermine.model.InterMineObject ") .append(ref.getName()) .append(";" + ENDL); } sb.append(generateGetSet(ref, field)) .append(ENDL); return sb.toString(); }
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()); }
/** * Associate a reference with a certain tag. * @param tagName The tag we want to give this reference. * @param ref the reference. * @param profile The profile to associate this tag with. * @return A tag object. * @throws TagNameException If the name is invalid (contains illegal characters) * @throws TagNamePermissionException If this tag name is restricted. */ public synchronized Tag addTag(String tagName, ReferenceDescriptor ref, Profile profile) throws TagNameException, TagNamePermissionException { String objIdentifier = ref.getClassDescriptor().getSimpleName() + "." + ref.getName(); if (ref instanceof CollectionDescriptor) { return addTag(tagName, objIdentifier, TagTypes.COLLECTION, profile); } else { return addTag(tagName, objIdentifier, TagTypes.REFERENCE, profile); } }
/** * Associate a reference with a certain tag. * @param tagName The tag we want to give this reference. * @param ref the reference. * @param profile The profile to associate this tag with. * @return A tag object. * @throws TagNameException If the name is invalid (contains illegal characters) * @throws TagNamePermissionException If this tag name is restricted. */ public synchronized Tag addTag(String tagName, ReferenceDescriptor ref, Profile profile) throws TagNameException, TagNamePermissionException { String objIdentifier = ref.getClassDescriptor().getSimpleName() + "." + ref.getName(); if (ref instanceof CollectionDescriptor) { return addTag(tagName, objIdentifier, TagTypes.COLLECTION, profile); } else { return addTag(tagName, objIdentifier, TagTypes.REFERENCE, profile); } }
/** * Delete a tag by name from a reference-descriptor. * * @param tagName The tag to remove. * @param rd The reference descriptor to remove it from. * @param profile The profile the tag should be removed from. */ public void deleteTag(String tagName, ReferenceDescriptor rd, Profile profile) { String objIdentifier = rd.getClassDescriptor().getSimpleName() + "." + rd.getName(); if (rd instanceof CollectionDescriptor) { deleteTag(tagName, objIdentifier, TagTypes.COLLECTION, profile.getUsername()); } else { deleteTag(tagName, objIdentifier, TagTypes.REFERENCE, profile.getUsername()); } if (TagNames.IM_PUBLIC.equals(tagName)) { profile.invalidateTemplateCacheIfRequired(); } }
/** * Delete a tag by name from a reference-descriptor. * * @param tagName The tag to remove. * @param rd The reference descriptor to remove it from. * @param profile The profile the tag should be removed from. */ public void deleteTag(String tagName, ReferenceDescriptor rd, Profile profile) { String objIdentifier = rd.getClassDescriptor().getSimpleName() + "." + rd.getName(); if (rd instanceof CollectionDescriptor) { deleteTag(tagName, objIdentifier, TagTypes.COLLECTION, profile.getUsername()); } else { deleteTag(tagName, objIdentifier, TagTypes.REFERENCE, profile.getUsername()); } if (TagNames.IM_PUBLIC.equals(tagName)) { profile.invalidateTemplateCacheIfRequired(); } }
LOG.info("Querying for empty: " + cld.getUnqualifiedName() + "." + ref.getName()); Query q = new Query(); q.setDistinct(false); QueryReference qd; if (ref instanceof CollectionDescriptor) { qd = new QueryCollectionReference(qc1, ref.getName()); } else { qd = new QueryObjectReference(qc1, ref.getName()); boolean empty = !results.iterator().hasNext(); LOG.info("Query for empty " + cld.getUnqualifiedName() + "." + ref.getName() + " took " + (System.currentTimeMillis() - startTime) + "ms."); return empty;
/** * Creates a column name for the "outward" key of a many-to-many collection descriptor. * * @param col CollectionDescriptor * @param version the database version number * @return a valid column name */ public static String getOutwardIndirectionColumnName(CollectionDescriptor col, int version) { if (FieldDescriptor.M_N_RELATION != col.relationType()) { throw new IllegalArgumentException("Argument must be a CollectionDescriptor for a " + "many-to-many relation"); } if (version == 0) { ReferenceDescriptor rd = col.getReverseReferenceDescriptor(); String colName = (rd == null ? TypeUtil.unqualifiedName(col.getClassDescriptor().getName()) : rd.getName()); return StringUtil.capitalise(generateSqlCompatibleName(colName)); } else if (version == 1) { return StringUtil.capitalise(generateSqlCompatibleName(col.getName())); } else { throw new IllegalArgumentException("Database version number " + version + " not recognised"); } }
/** * Creates a column name for the "inward" key of a many-to-many collection descriptor. * * @param col CollectionDescriptor * @param version the database version number * @return a valid column name */ public static String getInwardIndirectionColumnName(CollectionDescriptor col, int version) { if (FieldDescriptor.M_N_RELATION != col.relationType()) { throw new IllegalArgumentException("Argument must be a CollectionDescriptor for a " + "many-to-many relation"); } if (version == 0) { return StringUtil.capitalise(generateSqlCompatibleName(col.getName())); } else if (version == 1) { ReferenceDescriptor rd = col.getReverseReferenceDescriptor(); String colName = (rd == null ? TypeUtil.unqualifiedName(col.getClassDescriptor().getName()) : rd.getName()); return StringUtil.capitalise(generateSqlCompatibleName(colName)); } else { throw new IllegalArgumentException("Database version number " + version + " not recognised"); } }
/** * Creates a column name for the "outward" key of a many-to-many collection descriptor. * * @param col CollectionDescriptor * @param version the database version number * @return a valid column name */ public static String getOutwardIndirectionColumnName(CollectionDescriptor col, int version) { if (FieldDescriptor.M_N_RELATION != col.relationType()) { throw new IllegalArgumentException("Argument must be a CollectionDescriptor for a " + "many-to-many relation"); } if (version == 0) { ReferenceDescriptor rd = col.getReverseReferenceDescriptor(); String colName = (rd == null ? TypeUtil.unqualifiedName(col.getClassDescriptor().getName()) : rd.getName()); return StringUtil.capitalise(generateSqlCompatibleName(colName)); } else if (version == 1) { return StringUtil.capitalise(generateSqlCompatibleName(col.getName())); } else { throw new IllegalArgumentException("Database version number " + version + " not recognised"); } }
/** * Creates a column name for the "inward" key of a many-to-many collection descriptor. * * @param col CollectionDescriptor * @param version the database version number * @return a valid column name */ public static String getInwardIndirectionColumnName(CollectionDescriptor col, int version) { if (FieldDescriptor.M_N_RELATION != col.relationType()) { throw new IllegalArgumentException("Argument must be a CollectionDescriptor for a " + "many-to-many relation"); } if (version == 0) { return StringUtil.capitalise(generateSqlCompatibleName(col.getName())); } else if (version == 1) { ReferenceDescriptor rd = col.getReverseReferenceDescriptor(); String colName = (rd == null ? TypeUtil.unqualifiedName(col.getClassDescriptor().getName()) : rd.getName()); return StringUtil.capitalise(generateSqlCompatibleName(colName)); } else { throw new IllegalArgumentException("Database version number " + version + " not recognised"); } }
for (ReferenceDescriptor desc : getAllReferenceDescriptors()) { ClassDescriptor cld = desc.getClassDescriptor(); table.addRow(new String[] {desc.getName(), terseClass(desc.getReferencedClassName()), (cld == this ? "" : "from " + terseClass(cld.getName()))});
for (ReferenceDescriptor desc : getAllReferenceDescriptors()) { ClassDescriptor cld = desc.getClassDescriptor(); table.addRow(new String[] {desc.getName(), terseClass(desc.getReferencedClassName()), (cld == this ? "" : "from " + terseClass(cld.getName()))});
throw new MetaDataException("Unable to find named reverse reference '" + reverseRefName + "' in class " + referencedClassDesc.getName() + " while processing: " + getClassDescriptor().getName() + "." + getName());