/** * Return true if the given class is compatible with builtin identity. */ private static boolean isBuiltinIdentity(ClassMapping cls) { FieldMapping[] fields = cls.getPrimaryKeyFieldMappings(); if (fields.length != 1) return false; switch (fields[0].getDeclaredTypeCode()) { case JavaTypes.BYTE: case JavaTypes.CHAR: case JavaTypes.INT: case JavaTypes.LONG: case JavaTypes.SHORT: case JavaTypes.BYTE_OBJ: case JavaTypes.CHAR_OBJ: case JavaTypes.INT_OBJ: case JavaTypes.LONG_OBJ: case JavaTypes.SHORT_OBJ: case JavaTypes.STRING: case JavaTypes.OID: return true; } return false; }
/** * Return true if the given class is compatible with builtin identity. */ private static boolean isBuiltinIdentity(ClassMapping cls) { FieldMapping[] fields = cls.getPrimaryKeyFieldMappings(); if (fields.length != 1) return false; switch (fields[0].getDeclaredTypeCode()) { case JavaTypes.BYTE: case JavaTypes.CHAR: case JavaTypes.INT: case JavaTypes.LONG: case JavaTypes.SHORT: case JavaTypes.BYTE_OBJ: case JavaTypes.CHAR_OBJ: case JavaTypes.INT_OBJ: case JavaTypes.LONG_OBJ: case JavaTypes.SHORT_OBJ: case JavaTypes.STRING: case JavaTypes.OID: return true; } return false; }
/** * The columns this mapping uses to uniquely identify an object. * These will typically be the primary key columns or the columns this * class uses to link to its superclass table. */ public Column[] getPrimaryKeyColumns() { if (_cols.length == 0 && getIdentityType() == ID_APPLICATION && isMapped()) { FieldMapping[] pks = getPrimaryKeyFieldMappings(); Collection cols = new ArrayList(pks.length); Column[] fieldCols; for (int i = 0; i < pks.length; i++) { fieldCols = pks[i].getColumns(); for (int j = 0; j < fieldCols.length; j++) cols.add(fieldCols[j]); } _cols = (Column[]) cols.toArray(new Column[cols.size()]); } return _cols; }
/** * Looks up in reverse to find the list of field mappings that include the * given column. Costly. * * @return null if no field mappings carry this column. */ private List<FieldMapping> hasColumn(Column c, boolean prime) { List<FieldMapping> result = null; FieldMapping[] fms = (prime) ? getPrimaryKeyFieldMappings() : getFieldMappings(); for (FieldMapping fm : fms) { Column[] cols = fm.getColumns(); if (contains(cols, c)) { if (result == null) result = new ArrayList<FieldMapping>(); result.add(fm); } } return result; }
/** * Looks up in reverse to find the list of field mappings that include the * given column. Costly. * * @return null if no field mappings carry this column. */ private List<FieldMapping> hasColumn(Column c, boolean prime) { List<FieldMapping> result = null; FieldMapping[] fms = (prime) ? getPrimaryKeyFieldMappings() : getFieldMappings(); for (FieldMapping fm : fms) { Column[] cols = fm.getColumns(); if (contains(cols, c)) { if (result == null) result = new ArrayList<FieldMapping>(); result.add(fm); } } return result; }
/** * Looks up in reverse to find the list of field mappings that include the * given column. Costly. * * @return null if no field mappings carry this column. */ private List<FieldMapping> hasColumn(Column c, boolean prime) { List<FieldMapping> result = null; FieldMapping[] fms = (prime) ? getPrimaryKeyFieldMappings() : getFieldMappings(); for (FieldMapping fm : fms) { Column[] cols = fm.getColumns(); if (contains(cols, c)) { if (result == null) result = new ArrayList<FieldMapping>(); result.add(fm); } } return result; }
/** * Looks up in reverse to find the list of field mappings that include the * given column. Costly. * * @return null if no field mappings carry this column. */ private List<FieldMapping> hasColumn(Column c, boolean prime) { List<FieldMapping> result = null; FieldMapping[] fms = (prime) ? getPrimaryKeyFieldMappings() : getFieldMappings(); for (FieldMapping fm : fms) { Column[] cols = fm.getColumns(); if (contains(cols, c)) { if (result == null) result = new ArrayList<FieldMapping>(); result.add(fm); } } return result; }
private boolean hasGeneratedKey(ClassMapping meta) { FieldMapping[] pks = meta.getPrimaryKeyFieldMappings(); for (int i = 0; i < pks.length; i++) { ClassMapping pkMeta = pks[i].getTypeMapping(); if (pkMeta != null) { return hasGeneratedKey(pkMeta); } else if (pks[i].getValueStrategy() == ValueStrategies.AUTOASSIGN) return true; } return false; }
private boolean hasGeneratedKey(ClassMapping meta) { FieldMapping[] pks = meta.getPrimaryKeyFieldMappings(); for (int i = 0; i < pks.length; i++) { ClassMapping pkMeta = pks[i].getTypeMapping(); if (pkMeta != null) { return hasGeneratedKey(pkMeta); } else if (pks[i].getValueStrategy() == ValueStrategies.AUTOASSIGN) return true; } return false; }
private boolean hasGeneratedKey(ClassMapping meta) { FieldMapping[] pks = meta.getPrimaryKeyFieldMappings(); for (int i = 0; i < pks.length; i++) { ClassMapping pkMeta = pks[i].getTypeMapping(); if (pkMeta != null) { return hasGeneratedKey(pkMeta); } else if (pks[i].getValueStrategy() == ValueStrategies.AUTOASSIGN) return true; } return false; }
private boolean hasGeneratedKey(ClassMapping meta) { FieldMapping[] pks = meta.getPrimaryKeyFieldMappings(); for (int i = 0; i < pks.length; i++) { ClassMapping pkMeta = pks[i].getTypeMapping(); if (pkMeta != null) { return hasGeneratedKey(pkMeta); } else if (pks[i].getValueStrategy() == ValueStrategies.AUTOASSIGN) return true; } return false; }
/** * Resolve non-relation field mappings so that when we do relation * mappings they can rely on them for joins. */ void resolveNonRelationMappings() { // make sure primary key fields are resolved first because other // fields might rely on them FieldMapping[] fms = getPrimaryKeyFieldMappings(); for (int i = 0; i < fms.length; i++) fms[i].resolve(MODE_MAPPING); // resolve defined fields that are safe; that don't rely on other types // also being resolved. don't use getDefinedFields b/c it relies on // whether fields are mapped, which isn't known yet fms = getFieldMappings(); for (int i = 0; i < fms.length; i++) if (fms[i].getDefiningMetaData() == this && !fms[i].isTypePC() && !fms[i].getKey().isTypePC() && !fms[i].getElement().isTypePC()) fms[i].resolve(MODE_MAPPING); _discrim.resolve(MODE_MAPPING); _version.resolve(MODE_MAPPING); }
/** * Resolve non-relation field mappings so that when we do relation * mappings they can rely on them for joins. */ void resolveNonRelationMappings() { // make sure primary key fields are resolved first because other // fields might rely on them FieldMapping[] fms = getPrimaryKeyFieldMappings(); for (int i = 0; i < fms.length; i++) fms[i].resolve(MODE_MAPPING); // resolve defined fields that are safe; that don't rely on other types // also being resolved. don't use getDefinedFields b/c it relies on // whether fields are mapped, which isn't known yet fms = getFieldMappings(); for (int i = 0; i < fms.length; i++) if (fms[i].getDefiningMetaData() == this && !fms[i].isTypePC() && !fms[i].getKey().isTypePC() && !fms[i].getElement().isTypePC()) fms[i].resolve(MODE_MAPPING); _discrim.resolve(MODE_MAPPING); _version.resolve(MODE_MAPPING); }
/** * Resolve non-relation field mappings so that when we do relation * mappings they can rely on them for joins. */ void resolveNonRelationMappings() { // make sure primary key fields are resolved first because other // fields might rely on them FieldMapping[] fms = getPrimaryKeyFieldMappings(); for (int i = 0; i < fms.length; i++) fms[i].resolve(MODE_MAPPING); // resolve defined fields that are safe; that don't rely on other types // also being resolved. don't use getDefinedFields b/c it relies on // whether fields are mapped, which isn't known yet fms = getFieldMappings(); for (int i = 0; i < fms.length; i++) if (fms[i].getDefiningMetaData() == this && !fms[i].isTypePC() && !fms[i].getKey().isTypePC() && !fms[i].getElement().isTypePC()) fms[i].resolve(MODE_MAPPING); _discrim.resolve(MODE_MAPPING); _version.resolve(MODE_MAPPING); }
public Object getPrimaryKeyValue(Result res, Column[] cols, ForeignKey fk, JDBCStore store, Joins joins) throws SQLException { ClassMapping relmapping = field.getTypeMapping(); if (relmapping.getIdentityType() == ClassMapping.ID_DATASTORE) { Column col = cols[0]; if (fk != null) col = fk.getColumn(col); long id = res.getLong(col, joins); if (field.getObjectIdFieldTypeCode() == JavaTypes.LONG) return id; return store.newDataStoreId(id, relmapping, field.getPolymorphic() != ValueMapping.POLY_FALSE); } if (relmapping.isOpenJPAIdentity()) return ((Joinable) relmapping.getPrimaryKeyFieldMappings()[0]. getStrategy()).getPrimaryKeyValue(res, cols, fk, store, joins); if (cols == getColumns() && fk == null) fk = field.getForeignKey(); else fk = createTranslatingForeignKey(relmapping, cols, fk); return relmapping.getObjectId(store, res, fk, field.getPolymorphic() != ValueMapping.POLY_FALSE, joins); }
public Object getPrimaryKeyValue(Result res, Column[] cols, ForeignKey fk, JDBCStore store, Joins joins) throws SQLException { ClassMapping relmapping = field.getTypeMapping(); if (relmapping.getIdentityType() == ClassMapping.ID_DATASTORE) { Column col = cols[0]; if (fk != null) col = fk.getColumn(col); long id = res.getLong(col, joins); if (field.getObjectIdFieldTypeCode() == JavaTypes.LONG) return id; return store.newDataStoreId(id, relmapping, field.getPolymorphic() != ValueMapping.POLY_FALSE); } if (relmapping.isOpenJPAIdentity()) return ((Joinable) relmapping.getPrimaryKeyFieldMappings()[0]. getStrategy()).getPrimaryKeyValue(res, cols, fk, store, joins); if (cols == getColumns() && fk == null) fk = field.getForeignKey(); else fk = createTranslatingForeignKey(relmapping, cols, fk); return relmapping.getObjectId(store, res, fk, field.getPolymorphic() != ValueMapping.POLY_FALSE, joins); }
public Object getPrimaryKeyValue(Result res, Column[] cols, ForeignKey fk, JDBCStore store, Joins joins) throws SQLException { ClassMapping relmapping = field.getTypeMapping(); if (relmapping.getIdentityType() == ClassMapping.ID_DATASTORE) { Column col = cols[0]; if (fk != null) col = fk.getColumn(col); long id = res.getLong(col, joins); if (field.getObjectIdFieldTypeCode() == JavaTypes.LONG) return id; return store.newDataStoreId(id, relmapping, field.getPolymorphic() != ValueMapping.POLY_FALSE); } if (relmapping.isOpenJPAIdentity()) return ((Joinable) relmapping.getPrimaryKeyFieldMappings()[0]. getStrategy()).getPrimaryKeyValue(res, cols, fk, store, joins); if (cols == getColumns() && fk == null) fk = field.getForeignKey(); else fk = createTranslatingForeignKey(relmapping, cols, fk); return relmapping.getObjectId(store, res, fk, field.getPolymorphic() != ValueMapping.POLY_FALSE, joins); }
public Object getPrimaryKeyValue(Result res, Column[] cols, ForeignKey fk, JDBCStore store, Joins joins) throws SQLException { ClassMapping relmapping = field.getTypeMapping(); if (relmapping.getIdentityType() == ClassMapping.ID_DATASTORE) { Column col = cols[0]; if (fk != null) col = fk.getColumn(col); long id = res.getLong(col, joins); if (field.getObjectIdFieldTypeCode() == JavaTypes.LONG) return Numbers.valueOf(id); return store.newDataStoreId(id, relmapping, field.getPolymorphic() != ValueMapping.POLY_FALSE); } if (relmapping.isOpenJPAIdentity()) return ((Joinable) relmapping.getPrimaryKeyFieldMappings()[0]. getStrategy()).getPrimaryKeyValue(res, cols, fk, store, joins); if (cols == getColumns() && fk == null) fk = field.getForeignKey(); else fk = createTranslatingForeignKey(relmapping, cols, fk); return relmapping.getObjectId(store, res, fk, field.getPolymorphic() != ValueMapping.POLY_FALSE, joins); }
public Object getJoinValue(Object fieldVal, Column col, JDBCStore store) { Object o = field.getForeignKey().getConstant(col); if (o != null) return o; col = field.getForeignKey().getPrimaryKeyColumn(col); if (col == null) throw new InternalException(); Object savedFieldVal = fieldVal; ClassMapping relmapping = field.getTypeMapping(); Joinable j = field.getTypeMapping().assertJoinable(col); if (ImplHelper.isManageable(fieldVal) && !field.getDefiningMetaData().useIdClassFromParent()) fieldVal = store.getContext().getObjectId(fieldVal); if (fieldVal instanceof OpenJPAId) fieldVal = ((OpenJPAId) fieldVal).getIdObject(); if (relmapping.getObjectIdType() != null && relmapping.getObjectIdType().isInstance(fieldVal)) { Object[] pks = ApplicationIds.toPKValues(fieldVal, relmapping); fieldVal = pks[relmapping.getField(j.getFieldIndex()). getPrimaryKeyIndex()]; } else if (relmapping.getObjectIdType() == ObjectId.class && relmapping.getPrimaryKeyFieldMappings()[0].getValueMapping().isEmbedded()) { if (fieldVal == null) return j.getJoinValue(savedFieldVal, col, store); return j.getJoinValue(fieldVal, col, store); } return j.getJoinValue(fieldVal, col, store); }
public Object getJoinValue(Object fieldVal, Column col, JDBCStore store) { Object o = field.getForeignKey().getConstant(col); if (o != null) return o; col = field.getForeignKey().getPrimaryKeyColumn(col); if (col == null) throw new InternalException(); Object savedFieldVal = fieldVal; ClassMapping relmapping = field.getTypeMapping(); Joinable j = field.getTypeMapping().assertJoinable(col); if (ImplHelper.isManageable(fieldVal) && !field.getDefiningMetaData().useIdClassFromParent()) fieldVal = store.getContext().getObjectId(fieldVal); if (fieldVal instanceof OpenJPAId) fieldVal = ((OpenJPAId) fieldVal).getIdObject(); if (relmapping.getObjectIdType() != null && relmapping.getObjectIdType().isInstance(fieldVal)) { Object[] pks = ApplicationIds.toPKValues(fieldVal, relmapping); fieldVal = pks[relmapping.getField(j.getFieldIndex()). getPrimaryKeyIndex()]; } else if (relmapping.getObjectIdType() == ObjectId.class && relmapping.getPrimaryKeyFieldMappings()[0].getValueMapping().isEmbedded()) { if (fieldVal == null) return j.getJoinValue(savedFieldVal, col, store); return j.getJoinValue(fieldVal, col, store); } return j.getJoinValue(fieldVal, col, store); }