/** * Create getters and setters methods for this class and super classes */ protected void createPropertyMethods() { AbstractClassMetaData acmd = inputCmd; do { createPropertyMethods(acmd); acmd = acmd.getSuperAbstractClassMetaData(); } while (acmd != null); }
/** * Creates fields for the properties of this class and super classes. */ protected void createPropertyFields() { AbstractClassMetaData acmd = inputCmd; do { createPropertyFields(acmd); acmd = acmd.getSuperAbstractClassMetaData(); } while (acmd != null); }
/** * Constructs a list containing the class meta data of {@link #cmd} and all * its superclasses. We add to the beginning of the list as we iterate up so * the class at the top of the hierarchy is returned first. */ private LinkedList<AbstractClassMetaData> buildClassMetaDataList() { LinkedList<AbstractClassMetaData> stack = Utils.newLinkedList(); AbstractClassMetaData curCmd = cmd; while (curCmd != null) { stack.addFirst(curCmd); curCmd = curCmd.getSuperAbstractClassMetaData(); } return stack; }
/** * * Performs various checks to see if the schema is read only (i.e. schema should not be * created, updated, or deleted when the application starts up, regardless of whether schema * creation is enabled). * * @param acmd the metadata object of the JPA entity * @param checkHierarchy generally, we don't need to check the hierarchy if we're creating fields, but * if we're creating tables, we need to check the parent to see if the parent object * is read only * @return {@code true} if the schema is read only. */ public static boolean isReadOnlySchema(AbstractClassMetaData acmd, boolean checkHierarchy) { boolean isReadOnlySchema = false; do { isReadOnlySchema = isReadOnlySchemaInternal(acmd); acmd = acmd.getSuperAbstractClassMetaData(); } while (!isReadOnlySchema && checkHierarchy && acmd != null); return isReadOnlySchema; }
/** * * Performs various checks to see if the schema is read only (i.e. schema should not be * created, updated, or deleted when the application starts up, regardless of whether schema * creation is enabled). * * @param acmd the metadata object of the JPA entity * @param checkHierarchy generally, we don't need to check the hierarchy if we're creating fields, but * if we're creating tables, we need to check the parent to see if the parent object * is read only * @return {@code true} if the schema is read only. */ public static boolean isReadOnlySchema(AbstractClassMetaData acmd, boolean checkHierarchy) { boolean isReadOnlySchema = false; do { isReadOnlySchema = isReadOnlySchemaInternal(acmd); acmd = acmd.getSuperAbstractClassMetaData(); } while (!isReadOnlySchema && checkHierarchy && acmd != null); return isReadOnlySchema; }
private List<AbstractMemberMetaData> findAllFields() { List<AbstractMemberMetaData> allFields = new ArrayList<AbstractMemberMetaData>(); // Load up fields from this class AbstractMemberMetaData[] membersInThisClass = cmd.getManagedMembers(); if (membersInThisClass != null) allFields.addAll(Arrays.asList(membersInThisClass)); // Load up fields from MappedSuperclasses in class hierarchy AbstractClassMetaData superClassMD = cmd.getSuperAbstractClassMetaData(); while (superClassMD != null && superClassMD.getInheritanceMetaData().getStrategy() == InheritanceStrategy.SUBCLASS_TABLE) { AbstractMemberMetaData[] membersInSuperClass = superClassMD.getManagedMembers(); if (membersInSuperClass != null) allFields.addAll(Arrays.asList(membersInSuperClass)); superClassMD = superClassMD.getSuperAbstractClassMetaData(); } return allFields; }
private List<AbstractMemberMetaData> findAllFields() { List<AbstractMemberMetaData> allFields = new ArrayList<AbstractMemberMetaData>(); // Load up fields from this class AbstractMemberMetaData[] membersInThisClass = cmd.getManagedMembers(); if (membersInThisClass != null) allFields.addAll(Arrays.asList(membersInThisClass)); // Load up fields from MappedSuperclasses in class hierarchy AbstractClassMetaData superClassMD = cmd.getSuperAbstractClassMetaData(); while (superClassMD != null && superClassMD.getInheritanceMetaData().getStrategy() == InheritanceStrategy.SUBCLASS_TABLE) { AbstractMemberMetaData[] membersInSuperClass = superClassMD.getManagedMembers(); if (membersInSuperClass != null) allFields.addAll(Arrays.asList(membersInSuperClass)); superClassMD = superClassMD.getSuperAbstractClassMetaData(); } return allFields; }
/** * Utility to navigate the inheritance hierarchy to find the base class that defines the primary keys for this tree. * This has the assumption that there is no supertable, and will go up until it finds the superclass which has PK fields but no classes above. * @param cmd AbstractClassMetaData for this class * @param clr The ClassLoaderResolver * @return The AbstractClassMetaData for the class defining the primary keys */ private AbstractClassMetaData getClassWithPrimaryKeyForClass(AbstractClassMetaData cmd, ClassLoaderResolver clr) { if (cmd == null) { return null; } // Base class should have primary key fields. Note that in JPA that is not necessarily correct but why // anyone would put other things in the root but not the PK is beyond my limited understanding if (cmd.getSuperAbstractClassMetaData() == null) { // No more superclasses, so just return the last one return cmd; } if (cmd.getNoOfPrimaryKeyMembers() > 0 && cmd.getSuperAbstractClassMetaData().getNoOfPrimaryKeyMembers() == 0) { // This class has PK members but the superclass doesn't, so return this return cmd; } return getClassWithPrimaryKeyForClass(cmd.getSuperAbstractClassMetaData(), clr); }
public Set<Attribute<? super X, ?>> getAttributes() { Set<Attribute<? super X, ?>> set = new HashSet<Attribute<? super X,?>>(); set.addAll(attributes.values()); if (cmd.getSuperAbstractClassMetaData() != null) { // Relay to the supertype Class supercls = model.getClassLoaderResolver().classForName(cmd.getSuperAbstractClassMetaData().getFullClassName()); ManagedType supertype = model.managedType(supercls); Set<Attribute<? super X, ?>> superattrs = supertype.getAttributes(); set.addAll(superattrs); } return set; }
public Attribute<? super X, ?> getAttribute(String attr) { AttributeImpl<X, ?> theAttr = (AttributeImpl<X, ?>) attributes.get(attr); if (theAttr == null) { if (cmd.getSuperAbstractClassMetaData() != null) { // Relay to the supertype Class supercls = model.getClassLoaderResolver().classForName(cmd.getSuperAbstractClassMetaData().getFullClassName()); ManagedType supertype = model.managedType(supercls); return supertype.getAttribute(attr); } throw new IllegalArgumentException("Attribute " + attr + " was not found in class"); } return theAttr; }
if (cmd.getSuperAbstractClassMetaData() == null) { sObjectNames.add(tableName.getForceApiName());
public IdentifiableType<? super X> getSupertype() { AbstractClassMetaData superCmd = cmd.getSuperAbstractClassMetaData(); Class superCls = ((MetamodelImpl)model).getClassLoaderResolver().classForName(superCmd.getFullClassName()); return (IdentifiableType<? super X>)model.managedType(superCls); }
public static boolean isNewOrSuperclassTableInheritanceStrategy(AbstractClassMetaData cmd) { while (cmd != null) { AbstractClassMetaData pcmd = cmd.getSuperAbstractClassMetaData(); if (pcmd == null) { return cmd.getInheritanceMetaData().getStrategy() == InheritanceStrategy.NEW_TABLE; } else if (cmd.getInheritanceMetaData().getStrategy() != InheritanceStrategy.SUPERCLASS_TABLE) { return false; } cmd = pcmd; } return false; }
AbstractClassMetaData superCmd = cmd.getSuperAbstractClassMetaData(); if (superCmd != null) { return getParentPkMemberMetaDataForClass(superCmd, mmgr, clr);
AbstractClassMetaData superCmd = theCmd.getSuperAbstractClassMetaData(); if (superCmd != null)
&& acmd.getInheritanceMetaData().getStrategy() == InheritanceStrategy.SUPERCLASS_TABLE) { AbstractClassMetaData sacmd; while ((sacmd = acmd.getSuperAbstractClassMetaData()) != null) { acmd = sacmd; if (acmd.getTable() != null) {
&& acmd.getInheritanceMetaData().getStrategy() == InheritanceStrategy.SUPERCLASS_TABLE) { AbstractClassMetaData sacmd; while ((sacmd = acmd.getSuperAbstractClassMetaData()) != null) { acmd = sacmd; if (acmd.getTable() != null) {
private void updateListOfMissingFields() { for (AbstractMemberMetaData ammd : findAllFields()) { validateColumn(ammd, storeManager.getOMFContext()); AbstractClassMetaData relatedEntity = storeManager.getMetaDataManager().getMetaDataForEntityName(ammd.getType().getSimpleName()); if (relatedEntity != null && relatedEntity.isEmbeddedOnly()) { // Add all embedded fields to embedding entity for (AbstractMemberMetaData eammd : ammd.getEmbeddedMetaData().getMemberMetaData()) { addFieldToListIfAbsent(eammd, storeManager); } } else { addFieldToListIfAbsent(ammd, storeManager); } } // If there is a discriminator column add that too if (cmd.getSuperAbstractClassMetaData() == null && cmd.getDiscriminatorMetaData() != null && cmd.getDiscriminatorMetaData().getColumnMetaData() != null) { ColumnMetaData colmd = cmd.getDiscriminatorMetaData().getColumnMetaData(); addFieldToListIfAbsent(new ForceMemberMetaData(colmd, colmd.getName()) { @Override public Class<?> getType() { return String.class; } }, storeManager); } }
private void updateListOfMissingFields() { for (AbstractMemberMetaData ammd : findAllFields()) { validateColumn(ammd, storeManager.getOMFContext()); AbstractClassMetaData relatedEntity = storeManager.getMetaDataManager().getMetaDataForEntityName(ammd.getType().getSimpleName()); if (relatedEntity != null && relatedEntity.isEmbeddedOnly()) { // Add all embedded fields to embedding entity for (AbstractMemberMetaData eammd : ammd.getEmbeddedMetaData().getMemberMetaData()) { addFieldToListIfAbsent(eammd, storeManager); } } else { addFieldToListIfAbsent(ammd, storeManager); } } // If there is a discriminator column add that too if (cmd.getSuperAbstractClassMetaData() == null && cmd.getDiscriminatorMetaData() != null && cmd.getDiscriminatorMetaData().getColumnMetaData() != null) { ColumnMetaData colmd = cmd.getDiscriminatorMetaData().getColumnMetaData(); addFieldToListIfAbsent(new ForceMemberMetaData(colmd, colmd.getName()) { @Override public Class<?> getType() { return String.class; } }, storeManager); } }
AbstractClassMetaData superCmd = cmd.getSuperAbstractClassMetaData(); if (superCmd != null)