public boolean hasVersionAttribute() { return cmd.getVersionMetaData() != null; } }
/** * Method to return the property name to use for storing the specified member. * @param idFactory IdentifierFactory * @param ammd Metadata for the field/property * @return The property name to use in the datastore */ public static String getPropertyName(IdentifierFactory idFactory, AbstractMemberMetaData ammd) { AbstractClassMetaData acmd = ammd.getAbstractClassMetaData(); VersionMetaData vermd = acmd.getVersionMetaDataForClass(); if (acmd.isVersioned() && ammd.getName().equals(vermd.getFieldName())) { return getVersionPropertyName(idFactory, acmd.getVersionMetaData()); } // If a column name was explicitly provided, use that as the property name. if (ammd.getColumn() != null) { return ammd.getColumn(); } if (ammd.getColumnMetaData() != null && ammd.getColumnMetaData().length > 0 && ammd.getColumnMetaData()[0].getName() != null) { if (ammd.getColumnMetaData().length != 1) { throw new NucleusUserException("Field " + ammd.getFullFieldName() + " has been specified with more than 1 column! This is unsupported with GAE/J"); } return ammd.getColumnMetaData()[0].getName(); } // Use the IdentifierFactory to convert from the name of the field into a property name. return idFactory.newDatastoreFieldIdentifier(ammd.getName()).getIdentifierName(); }
public <Y> SingularAttribute<? super X, Y> getVersion(Class<Y> cls) { String verFieldName = (cmd.getVersionMetaData() != null ? cmd.getVersionMetaData().getFieldName() : null); if (verFieldName != null) { AbstractMemberMetaData verMmd = cmd.getMetaDataForMember(verFieldName); if (cls.isAssignableFrom(verMmd.getType())) { return (SingularAttribute<? super X, Y>) attributes.get(verFieldName); } throw new IllegalArgumentException("Version is not of specified type (" + cls.getName() + "). Should be " + verMmd.getTypeName()); } return null; }
public VersionMetadata getVersionMetadata() { VersionMetaData internalVermd = getInternal().getVersionMetaData(); VersionMetadataImpl vermd = new VersionMetadataImpl(internalVermd); vermd.parent = this; return vermd; }
public boolean isVersion() { VersionMetaData vermd = mmd.getAbstractClassMetaData().getVersionMetaData(); if (vermd.getFieldName() != null && vermd.getFieldName().equals(mmd.getName())) { return true; } return false; }
public void fetchFields(ObjectProvider op) { resultSetGetter.setObjectProvider(op); op.replaceFields(fieldNumbers, resultSetGetter, false); // Set version if (surrogateVersion != null) { // Surrogate version field op.setVersion(surrogateVersion); } else if (cmd.getVersionMetaData() != null && cmd.getVersionMetaData().getFieldName() != null) { // Version stored in a normal field VersionMetaData vermd = cmd.getVersionMetaData(); int versionFieldNumber = rootCmd.getMetaDataForMember(vermd.getFieldName()).getAbsoluteFieldNumber(); if (resultMapping.getMappingForMemberPosition(versionFieldNumber) != null) { Object verFieldValue = op.provideField(versionFieldNumber); if (verFieldValue != null) { op.setVersion(verFieldValue); } } } } public void fetchNonLoadedFields(ObjectProvider op)
if (cmd.getVersionMetaData() != null) str.append(getXMLForMetaData(cmd.getVersionMetaData(), prefix + indent,indent));
if (acmd.getVersionMetaData() != null && pkValue != null) { versionIndexToSkip = acmd.getAbsolutePositionOfMember(acmd.getVersionMetaData().getFieldName()); Object version = objectProvider.provideField(versionIndexToSkip); if (version == null && storeManager.isEnableOptimisticTransactions()) { throw new NucleusUserException("Version field must be set to non-null value, field: " + acmd.getVersionMetaData().getFieldName() + " object id:" + sobject.getId());
if (acmd.getVersionMetaData() != null && pkValue != null) { versionIndexToSkip = acmd.getAbsolutePositionOfMember(acmd.getVersionMetaData().getFieldName()); Object version = objectProvider.provideField(versionIndexToSkip); if (version == null && storeManager.isEnableOptimisticTransactions()) { throw new NucleusUserException("Version field must be set to non-null value, field: " + acmd.getVersionMetaData().getFieldName() + " object id:" + sobject.getId());
om.getMetaDataManager().getMetaDataForClass(entity.getClass(), om.getClassLoaderResolver()); if (lock == LockModeType.OPTIMISTIC || lock == LockModeType.OPTIMISTIC_FORCE_INCREMENT && cmd.getVersionMetaData() == null)
if (cmd.getVersionMetaData() != null) { checkColumnOrFieldName("lastModifiedDate", cmd.getMetaDataForMember(cmd.getVersionMetaData().getFieldName()), cmd.getVersionMetaData().getFieldName(), Calendar.class, "Version field name should be lastModifiedDate. Offending entity: ", "Version field type should be Calendar or GregorianCalendar. Offending entity: ", cmd);
if (cmd.getVersionMetaData() != null) { checkColumnOrFieldName("lastModifiedDate", cmd.getMetaDataForMember(cmd.getVersionMetaData().getFieldName()), cmd.getVersionMetaData().getFieldName(), Calendar.class, "Version field name should be lastModifiedDate. Offending entity: ", "Version field type should be Calendar or GregorianCalendar. Offending entity: ", cmd);