public InheritanceStrategy getStrategy() { org.datanucleus.metadata.InheritanceStrategy str = getInternal().getStrategy(); if (str == org.datanucleus.metadata.InheritanceStrategy.NEW_TABLE) { return InheritanceStrategy.NEW_TABLE; } else if (str == org.datanucleus.metadata.InheritanceStrategy.SUBCLASS_TABLE) { return InheritanceStrategy.SUBCLASS_TABLE; } else if (str == org.datanucleus.metadata.InheritanceStrategy.SUPERCLASS_TABLE) { return InheritanceStrategy.SUPERCLASS_TABLE; } return InheritanceStrategy.UNSPECIFIED; }
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; }
public String getCustomStrategy() { org.datanucleus.metadata.InheritanceStrategy str = getInternal().getStrategy(); if (str != org.datanucleus.metadata.InheritanceStrategy.NEW_TABLE && str != org.datanucleus.metadata.InheritanceStrategy.SUBCLASS_TABLE && str != org.datanucleus.metadata.InheritanceStrategy.SUPERCLASS_TABLE && str != null) { return str.toString(); } return null; }
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; }
/** * * Returns whether an entity has no schema. * An entity does not have schema if it would not directly represent an object in Force.com; * for example, if the entity is embedded or if it's a subclass of another entity * * @param acmd the metadata object of the JPA entity * @return {@code true} if the entity does not have schema */ public static boolean hasNoSchema(AbstractClassMetaData acmd) { return acmd.isEmbeddedOnly() || acmd.getInheritanceMetaData() != null && acmd.getInheritanceMetaData().getStrategy() == InheritanceStrategy.SUBCLASS_TABLE; }
public String getXMLForMetaData(InheritanceMetaData inhmd, String prefix, String indent) { StringBuilder str = new StringBuilder(); str.append(prefix).append("<inheritance strategy=\"" + inhmd.getStrategy() + "\">\n"); // Add join if (inhmd.getJoinMetaData() != null) { str.append(getXMLForMetaData(inhmd.getJoinMetaData(), prefix + indent,indent)); } // Add discriminator if (inhmd.getDiscriminatorMetaData() != null) { str.append(getXMLForMetaData(inhmd.getDiscriminatorMetaData(), prefix + indent,indent)); } // Add extensions processExtensions(inhmd.getExtensions(), str, prefix, indent); str.append(prefix).append("</inheritance>\n"); return str.toString(); }
/** * * Returns whether an entity has no schema. * An entity does not have schema if it would not directly represent an object in Force.com; * for example, if the entity is embedded or if it's a subclass of another entity * * @param acmd the metadata object of the JPA entity * @return {@code true} if the entity does not have schema */ public static boolean hasNoSchema(AbstractClassMetaData acmd) { return acmd.isEmbeddedOnly() || acmd.getInheritanceMetaData() != null && acmd.getInheritanceMetaData().getStrategy() == InheritanceStrategy.SUBCLASS_TABLE; }
if (cmd.getInheritanceMetaData().getStrategy() == InheritanceStrategy.COMPLETE_TABLE) if (superCmd != null) if (superCmd.getInheritanceMetaData().getStrategy() == InheritanceStrategy.NEW_TABLE) else if (superCmd.getInheritanceMetaData().getStrategy() == InheritanceStrategy.SUBCLASS_TABLE)
if (parentCmd != null) if (cmd.getInheritanceMetaData().getStrategy() == InheritanceStrategy.COMPLETE_TABLE) else if (parentCmd.getInheritanceMetaData().getStrategy() == InheritanceStrategy.SUBCLASS_TABLE) if (parentCmd != null) if (cmd.getInheritanceMetaData().getStrategy() == InheritanceStrategy.COMPLETE_TABLE) else if (parentCmd.getInheritanceMetaData().getStrategy() == InheritanceStrategy.SUBCLASS_TABLE)
/** * Method to return this class/field managed object as a string. * @return String version of this class/field managed object. */ public String toString() { MetaData metadata = getMetaData(); if (metadata instanceof ClassMetaData) { return Localiser.msg("035004", name, tableName != null ? tableName : "(none)", ((ClassMetaData)metadata).getInheritanceMetaData().getStrategy().toString()); } else if (metadata instanceof AbstractMemberMetaData) { return Localiser.msg("035005", name, tableName); } else { return Localiser.msg("035004", name, tableName); } } }
protected void selectFetchPlanForCandidate(SelectStatement stmt, StatementClassMapping resultClassMapping, int maxFetchDepth) { if (options.contains(OPTION_SELECT_CANDIDATE_ID_ONLY)) { SQLStatementHelper.selectIdentityOfCandidateInStatement(stmt, resultClassMapping, candidateCmd); } else if (parentMapper != null && resultClassMapping == null) { // Subquery, with no result specified, so select id only SQLStatementHelper.selectIdentityOfCandidateInStatement(stmt, resultClassMapping, candidateCmd); } else if (stmt.allUnionsForSamePrimaryTable()) { // Select fetch-plan members of the candidate (and optionally the next level of sub-objects) // Don't select next level when we are processing a subquery SQLStatementHelper.selectFetchPlanOfCandidateInStatement(stmt, resultClassMapping, candidateCmd, fetchPlan, parentMapper == null ? maxFetchDepth : 0); } else if (candidateCmd.getInheritanceMetaData() != null && candidateCmd.getInheritanceMetaData().getStrategy() == InheritanceStrategy.COMPLETE_TABLE) { // complete-table should have all fields of superclass present in all unions, so try to select fetch plan SQLStatementHelper.selectFetchPlanOfCandidateInStatement(stmt, resultClassMapping, candidateCmd, fetchPlan, parentMapper == null ? maxFetchDepth : 0); } else { // Select identity of the candidates since use different base tables SQLStatementHelper.selectIdentityOfCandidateInStatement(stmt, resultClassMapping, candidateCmd); } }
if (cmd.getInheritanceMetaData().getStrategy() != InheritanceStrategy.NEW_TABLE && cmd.getInheritanceMetaData().getStrategy() != InheritanceStrategy.COMPLETE_TABLE) throw new NucleusUserException(Localiser.msg("057003", cmd.getFullClassName(), cmd.getInheritanceMetaData().getStrategy().toString())).setFatal();
/** * Pre-initialize. * We require any supertable, and the PK to be ready before we start initialisation. * @param clr the ClassLoaderResolver */ public void preInitialize(final ClassLoaderResolver clr) { assertIsPKUninitialized(); if (cmd.getInheritanceMetaData().getStrategy() != InheritanceStrategy.COMPLETE_TABLE) { // Inheritance strategy may imply having a supertable, so identify it supertable = getSupertable(cmd, clr); if (supertable != null && !supertable.isInitialized() && !supertable.isPKInitialized()) { // Make sure that the supertable is preinitialised before we think about initialising here supertable.preInitialize(clr); } } // Initialise the PK field(s) if (!isPKInitialized()) { initializePK(clr); } }
InheritanceStrategy strat = cmd.getInheritanceMetaData().getStrategy(); } else if (strat == InheritanceStrategy.NEW_TABLE && (cmd.getSuperAbstractClassMetaData() == null || cmd.getSuperAbstractClassMetaData().getInheritanceMetaData().getStrategy() == InheritanceStrategy.SUBCLASS_TABLE)) { cmd.getInheritanceMetaData().getStrategy().toString(), cmd.getFullClassName(), getApiAdapter().getName()); throw new UnsupportedInheritanceStrategyException(unsupportedMsg);
/** * Method that adds the specified class to be managed by this table. * Will provide mapping of all persistent fields to their underlying columns, map all necessary * identity fields, and manage all "unmapped" columns that have no associated field. * where the columns are defined for each mapping. * @param theCmd ClassMetaData for the class to be managed * @param clr The ClassLoaderResolver */ public void manageClass(AbstractClassMetaData theCmd, ClassLoaderResolver clr) { if (NucleusLogger.DATASTORE_SCHEMA.isDebugEnabled()) { NucleusLogger.DATASTORE_SCHEMA.debug(Localiser.msg("057024", toString(), theCmd.getFullClassName(), theCmd.getInheritanceMetaData().getStrategy().toString())); } managingClassCurrent = theCmd.getFullClassName(); managedClassMetaData.add(theCmd); // Manage all fields of this class and all fields of superclasses that this is overriding manageMembers(theCmd, clr, theCmd.getManagedMembers()); manageMembers(theCmd, clr, theCmd.getOverriddenMembers()); // Manage all "unmapped" columns (that have no field) manageUnmappedColumns(theCmd, clr); managingClassCurrent = null; if (runCallbacksAfterManageClass) { // We need to run the callbacks now that this class is fully managed runCallBacks(clr); runCallbacksAfterManageClass = false; } }
&& acmd.getInheritanceMetaData().getStrategy() == InheritanceStrategy.SUPERCLASS_TABLE) { AbstractClassMetaData sacmd; while ((sacmd = acmd.getSuperAbstractClassMetaData()) != null) {
&& acmd.getInheritanceMetaData().getStrategy() == InheritanceStrategy.SUPERCLASS_TABLE) { AbstractClassMetaData sacmd; while ((sacmd = acmd.getSuperAbstractClassMetaData()) != null) {
if (dc == null) if (op.getClassMetaData().getInheritanceMetaData().getStrategy() == InheritanceStrategy.SUBCLASS_TABLE) throw new NucleusException(Localiser.msg("032014", className, op.getClassMetaData().getInheritanceMetaData().getStrategy())).setFatal();
private DatastoreClass getTableForStrategy(AbstractClassMetaData cmd, int fieldNumber, ClassLoaderResolver clr) if (t == null && cmd.getInheritanceMetaData().getStrategy() == InheritanceStrategy.SUBCLASS_TABLE)