/** * * 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; }
/** * * 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 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 InheritanceMetadata getInheritanceMetadata() { InheritanceMetaData internalInhmd = getInternal().getInheritanceMetaData(); InheritanceMetadataImpl inhmd = new InheritanceMetadataImpl(internalInhmd); inhmd.parent = this; return inhmd; }
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; }
if (targetCmd.getInheritanceMetaData() != null && targetCmd.getInheritanceMetaData().getDiscriminatorMetaData() != null) strValue = targetCmd.getInheritanceMetaData().getDiscriminatorMetaData().getValue();
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.COMPLETE_TABLE || cmd.getInheritanceMetaData().getStrategy() == InheritanceStrategy.NEW_TABLE) else if (cmd.getInheritanceMetaData().getStrategy() == InheritanceStrategy.SUBCLASS_TABLE) else if (cmd.getInheritanceMetaData().getStrategy() == InheritanceStrategy.SUPERCLASS_TABLE)
if (superCmd != null) if (superCmd.getInheritanceMetaData().getStrategy() == InheritanceStrategy.NEW_TABLE) else if (superCmd.getInheritanceMetaData().getStrategy() == InheritanceStrategy.SUBCLASS_TABLE)
if (acmd.getInheritanceMetaData() != null && acmd.getInheritanceMetaData().getStrategy() == InheritanceStrategy.SUPERCLASS_TABLE) { AbstractClassMetaData sacmd; while ((sacmd = acmd.getSuperAbstractClassMetaData()) != null) {
if (acmd.getInheritanceMetaData() != null && acmd.getInheritanceMetaData().getStrategy() == InheritanceStrategy.SUPERCLASS_TABLE) { AbstractClassMetaData sacmd; while ((sacmd = acmd.getSuperAbstractClassMetaData()) != null) {
else if (parentCmd.getInheritanceMetaData().getStrategy() == InheritanceStrategy.SUBCLASS_TABLE) else if (parentCmd.getInheritanceMetaData().getStrategy() == InheritanceStrategy.SUBCLASS_TABLE)
/** * 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; } }
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)
+ " Offending entity: " + cmd.getFullClassName()); if (cmd.getInheritanceMetaData() != null) { if (cmd.getInheritanceMetaData().getStrategyForTree() != null && !cmd.getInheritanceMetaData().getStrategyForTree().equals("SINGLE_TABLE")) { throw new NucleusUserException("Only SINGLE_TABLE inheritance strategy supported by Force.com datastore." + " Offending entity: " + cmd.getFullClassName()); if (superClass != null && superClass.getInheritanceMetaData().getStrategy() != InheritanceStrategy.SUBCLASS_TABLE) {
+ " Offending entity: " + cmd.getFullClassName()); if (cmd.getInheritanceMetaData() != null) { if (cmd.getInheritanceMetaData().getStrategyForTree() != null && !cmd.getInheritanceMetaData().getStrategyForTree().equals("SINGLE_TABLE")) { throw new NucleusUserException("Only SINGLE_TABLE inheritance strategy supported by Force.com datastore." + " Offending entity: " + cmd.getFullClassName()); if (superClass != null && superClass.getInheritanceMetaData().getStrategy() != InheritanceStrategy.SUBCLASS_TABLE) {
} else if (strat == InheritanceStrategy.NEW_TABLE && (cmd.getSuperAbstractClassMetaData() == null || cmd.getSuperAbstractClassMetaData().getInheritanceMetaData().getStrategy() == InheritanceStrategy.SUBCLASS_TABLE)) {
if (refCmd.getInheritanceMetaData().getStrategy() != InheritanceStrategy.SUBCLASS_TABLE)