public boolean isOptional() // Really wants to know if it is nullable { return mmd.getColumnMetaData() != null && mmd.getColumnMetaData()[0].isAllowsNull(); }
public Class getType() { if (type.isEnum()) { ColumnMetaData colmd = null; if (mmd.getColumnMetaData() != null && mmd.getColumnMetaData().length > 0) { colmd = mmd.getColumnMetaData()[0]; } if (MetaDataUtils.persistColumnAsNumeric(colmd)) { return int.class; } return String.class; } return type; }
private Object asEnumValue(MongoFieldExpression fieldExpr, Enum<?> value) { // Use the right type of Enum value for the property being compared against AbstractMemberMetaData mmd = fieldExpr.getMemberMetaData(); ColumnMetaData colmd = null; if (mmd != null && mmd.getColumnMetaData() != null && mmd.getColumnMetaData().length > 0) { colmd = mmd.getColumnMetaData()[0]; } if (MetaDataUtils.persistColumnAsNumeric(colmd)) { return value.ordinal(); } return value.toString(); }
public int getNumberOfColumns() { ColumnMetaData[] colmds = getInternal().getColumnMetaData(); return (colmds != null ? colmds.length : 0); }
/** * Accessor for the default value specified for the provided member. * If no defaultValue is provided on the column then returns null. * @param mmd Metadata for the member * @return The default value */ public static String getDefaultValueForMember(AbstractMemberMetaData mmd) { ColumnMetaData[] colmds = mmd.getColumnMetaData(); if (colmds == null || colmds.length < 1) { return null; } return colmds[0].getDefaultValue(); }
/** * Accessor for the default value specified for the provided member. * If no defaultValue is provided on the column then returns null. * @param mmd Metadata for the member * @return The default value */ public static String getDefaultValueForMember(AbstractMemberMetaData mmd) { ColumnMetaData[] colmds = mmd.getColumnMetaData(); if (colmds == null || colmds.length < 1) { return null; } return colmds[0].getDefaultValue(); }
/** * Accessor for the default value specified for the provided member. * If no defaultValue is provided on the column then returns null. * @param mmd Metadata for the member * @return The default value */ public static String getDefaultValueForMember(AbstractMemberMetaData mmd) { ColumnMetaData[] colmds = mmd.getColumnMetaData(); if (colmds == null || colmds.length < 1) { return null; } return colmds[0].getDefaultValue(); }
public String getColumn() { ColumnMetaData[] colmds = getInternal().getColumnMetaData(); if (colmds != null && colmds.length > 0) { return colmds[0].getName(); } return null; }
public ColumnMetadata[] getColumns() { ColumnMetaData[] internalColmds = getInternal().getColumnMetaData(); if (internalColmds == null) { return null; } ColumnMetadataImpl[] colmds = new ColumnMetadataImpl[internalColmds.length]; for (int i=0;i<colmds.length;i++) { colmds[i] = new ColumnMetadataImpl(internalColmds[i]); colmds[i].parent = this; } return colmds; }
/** * Accessor for the (LDAP) attribute name for the specified field. Uses the extension "dn" if specified * (deprecated), else the extension "attribute" if specified, else the "column" if specified, else uses the field * name. * @param mmd MetaData for the field * @return The attribute */ public static String getAttributeNameForField(AbstractMemberMetaData mmd) { String name = mmd.getName(); if (mmd.hasExtension("dn")) { name = mmd.getValueForExtension("dn"); } else if (mmd.hasExtension("attribute")) { name = mmd.getValueForExtension("attribute"); } else if (mmd.getColumnMetaData() != null && mmd.getColumnMetaData().length > 0) { name = mmd.getColumnMetaData()[0].getName(); } return name; }
private String getIndexPropertyName() { String propertyName; if (orderMapping.getMemberMetaData() == null) { // I'm not sure what we should do if this mapping doesn't exist so for now we'll just blow up. propertyName = orderMapping.getDatastoreMappings()[0].getDatastoreField().getIdentifier().getIdentifierName(); } else { propertyName = orderMapping.getMemberMetaData().getName(); AbstractMemberMetaData ammd = orderMapping.getMemberMetaData(); if (ammd.getColumn() != null) { propertyName = ammd.getColumn(); } else if (ammd.getColumnMetaData() != null && ammd.getColumnMetaData().length == 1) { propertyName = ammd.getColumnMetaData()[0].getName(); } } return propertyName; }
/** * * A check to see if a field has an ordinal enum type, meaning it's annotated with * {@code @Enumerated(EnumType.ORDINAL)}. Callers of this method should have already verified * ammd to be a picklist field. * * @param ammd the metadata object of a picklist field * @return {@code true} if the field is an ordinal enum */ public static boolean isOrdinalEnum(AbstractMemberMetaData ammd) { ColumnMetaData[] cmds = ammd.getColumnMetaData(); if (cmds != null && cmds.length > 0 && "INTEGER".equals(cmds[0].getJdbcType())) return true; // If the fast method fails take the slow route Enumerated enumerated = ((AccessibleObject) ammd.getMemberRepresented()).getAnnotation(Enumerated.class); return enumerated != null && (enumerated.value() == null || enumerated.value() == EnumType.ORDINAL); }
/** * * A check to see if a field has an ordinal enum type, meaning it's annotated with * {@code @Enumerated(EnumType.ORDINAL)}. Callers of this method should have already verified * ammd to be a picklist field. * * @param ammd the metadata object of a picklist field * @return {@code true} if the field is an ordinal enum */ public static boolean isOrdinalEnum(AbstractMemberMetaData ammd) { ColumnMetaData[] cmds = ammd.getColumnMetaData(); if (cmds != null && cmds.length > 0 && "INTEGER".equals(cmds[0].getJdbcType())) return true; // If the fast method fails take the slow route Enumerated enumerated = ((AccessibleObject) ammd.getMemberRepresented()).getAnnotation(Enumerated.class); return enumerated != null && (enumerated.value() == null || enumerated.value() == EnumType.ORDINAL); }
private static void checkColumnOrFieldName(String expectedName, AbstractMemberMetaData ammd, String fieldName, Class<?> clazz, String message1, String message2, AbstractClassMetaData cmd) { ColumnMetaData[] columnMD = ammd.getColumnMetaData(); if (columnMD != null && columnMD.length > 0 && columnMD[0].getName() != null) { if (!expectedName.equalsIgnoreCase(columnMD[0].getName())) { throw new NucleusUserException(message1 + cmd.getFullClassName()); } } else if (!expectedName.equalsIgnoreCase(fieldName)) { throw new NucleusUserException(message1 + cmd.getFullClassName()); } if (!clazz.isAssignableFrom(ammd.getType())) { throw new NucleusUserException(message2 + cmd.getFullClassName()); } }
private static void checkColumnOrFieldName(String expectedName, AbstractMemberMetaData ammd, String fieldName, Class<?> clazz, String message1, String message2, AbstractClassMetaData cmd) { ColumnMetaData[] columnMD = ammd.getColumnMetaData(); if (columnMD != null && columnMD.length > 0 && columnMD[0].getName() != null) { if (!expectedName.equalsIgnoreCase(columnMD[0].getName())) { throw new NucleusUserException(message1 + cmd.getFullClassName()); } } else if (!expectedName.equalsIgnoreCase(fieldName)) { throw new NucleusUserException(message1 + cmd.getFullClassName()); } if (!clazz.isAssignableFrom(ammd.getType())) { throw new NucleusUserException(message2 + cmd.getFullClassName()); } }
public void storeStringField(int fieldNumber, String value) { if (isPK(fieldNumber)) { storeStringPKField(fieldNumber, value); } else if (MetaDataUtils.isParentPKField(getClassMetaData(), fieldNumber)) { storeParentStringField(value); } else if (MetaDataUtils.isPKNameField(getClassMetaData(), fieldNumber)) { storePKNameField(fieldNumber, value); } else { // could be a JPA "lob" field, in which case we want to store it as Text. // DataNucleus sets a cmd with a jdbc type of CLOB if this is the case. Object valueToStore = value; AbstractMemberMetaData mmd = getMetaData(fieldNumber); if (mmd.getColumnMetaData() != null && mmd.getColumnMetaData().length == 1) { if ("CLOB".equals(mmd.getColumnMetaData()[0].getJdbcType())) { valueToStore = new Text(value); }/* else if (mmd.getColumnMetaData()[0].getLength() > 500) { // Can only store up to 500 characters in String, so use Text valueToStore = new Text(value); }*/ } storeFieldInEntity(fieldNumber, valueToStore); } }
public RelationByDnMetaData(AbstractMemberMetaData mmd, MetaDataManager mmgr) { this.mmd = mmd; AbstractClassMetaData otherClassMetaData = LDAPUtils.getEffectiveClassMetaData(mmd, mmgr); hasColumn = mmd.getColumnMetaData() != null && mmd.getColumnMetaData().length > 0; if (mmd.getMappedBy() != null) { otherMmd = otherClassMetaData.getMetaDataForMember(mmd.getMappedBy()); } else if (mmd.getElementMetaData() != null && !hasColumn) { // always null otherMmd = null; } // else ??? if (mmd.getMappedBy() != null) { emptyValue = LDAPUtils.getEmptyValue(otherMmd); } else { emptyValue = LDAPUtils.getEmptyValue(mmd); } }
private void checkSettingToNullValue(AbstractMemberMetaData mmd, Object value) { if (value == null) { if (mmd.getNullValue() == NullValue.EXCEPTION) { // JDO spec 18.15, throw XXXUserException when trying to store null and have handler set to EXCEPTION throw new NucleusUserException("Field/Property " + mmd.getFullFieldName() + " is null, but is mandatory as it's described in the jdo metadata"); } ColumnMetaData[] colmds = mmd.getColumnMetaData(); if (colmds != null && colmds.length > 0) { if (colmds[0].getAllowsNull() == Boolean.FALSE) { // Column specifically marked as not-nullable throw new NucleusDataStoreException("Field/Property " + mmd.getFullFieldName() + " is null, but the column is specified as not-nullable"); } } } }
private String determinePropertyName(AbstractMemberMetaData ammd) { if (ammd.hasExtension(DatastoreManager.PK_ID) || ammd.hasExtension(DatastoreManager.PK_NAME)) { // the datsatore doesn't support filtering or sorting by the individual // components of the key, so if the field corresponds to one of these // components it's a mistake by the user throw new org.datanucleus.exceptions.NucleusFatalUserException(query.getSingleStringQuery() + ": Field " + ammd.getFullFieldName() + " is a sub-component of the primary key. The " + "datastore does not support filtering or sorting by primary key components, only the " + "entire primary key."); } if (ammd.getColumn() != null) { return ammd.getColumn(); } else if (ammd.getColumnMetaData() != null && ammd.getColumnMetaData().length != 0) { return ammd.getColumnMetaData()[0].getName(); } else if (ammd.getElementMetaData() != null && ammd.getElementMetaData().getColumnMetaData() != null && ammd.getElementMetaData().getColumnMetaData().length != 0) { return ammd.getElementMetaData().getColumnMetaData()[0].getName(); } else { return getIdentifierFactory().newDatastoreFieldIdentifier(ammd.getName()).getIdentifierName(); } }
public WrappedMemberMetaData(AbstractMemberMetaData fmd, Class type, ClassLoaderResolver clr) { super(fmd.getParent(), fmd); this.singleCollectionMetadata = fmd; this.type = type; // Use element definition in preference to field since it may be copied to the element in metadata processing this.columnMetaData = (fmd.getElementMetaData() != null) ? fmd.getElementMetaData().getColumnMetaData() : fmd.getColumnMetaData(); this.relationType = fmd.getRelationType(clr); this.relatedMemberMetaData = fmd.getRelatedMemberMetaData(clr); // Copy the Element embedded definition to the field embedded metaData because EmbeddedPCMapping reads it from there. (Maybe it should use EmbeddedElementPCMapping?) ElementMetaData fmdElementMetaData = fmd.getElementMetaData(); if (fmdElementMetaData != null && fmdElementMetaData.getEmbeddedMetaData() != null) { setEmbeddedMetaData(fmdElementMetaData.getEmbeddedMetaData()); } }