/** * Returns a replacement ObjectId associated with this id. Replacement ObjectId is * either a permananent ObjectId for an uncommitted object or a new id for object * whose id depends on its relationships. * * @deprecated Since 1.2 replacement id is built by appending to replacementIdMap. */ public ObjectId getReplacementId() { return (isReplacementIdAttached()) ? createReplacementId() : null; }
private static void checkObjectId(ObjectId id) { if (id.isTemporary() && !id.isReplacementIdAttached()) { throw new CayenneRuntimeException("Can't build a query for temporary id: %s", id); } }
/** * Returns true if there is full replacement id is attached to an ObjectId. "Full" * means that all PK columns are present and only PK columns are present. * * @since 1.2 */ public boolean isFullReplacementIdAttached(ObjectId id) { if (!id.isReplacementIdAttached()) { return false; } Map replacement = id.getReplacementIdMap(); Collection pk = getPrimaryKey(); if (pk.size() != replacement.size()) { return false; } Iterator it = pk.iterator(); while (it.hasNext()) { DbAttribute attribute = (DbAttribute) it.next(); if (!replacement.containsKey(attribute.getName())) { return false; } } return true; }
/** * Returns true if there is full replacement id is attached to an ObjectId. * "Full" means that all PK columns are present and only PK columns are * present. * * @since 1.2 */ public boolean isFullReplacementIdAttached(ObjectId id) { if (!id.isReplacementIdAttached()) { return false; } Map<String, Object> replacement = id.getReplacementIdMap(); Collection<DbAttribute> pk = getPrimaryKeys(); if (pk.size() != replacement.size()) { return false; } for (DbAttribute attribute : pk) { if (!replacement.containsKey(attribute.getName())) { return false; } } return true; }
public Object create() { if (!masterID.isReplacementIdAttached()) { throw new CayenneRuntimeException("Deferred propagated key (" + masterKey + ") wasn't generated for object with ID " + masterID); } Map replacementId = masterID.getReplacementIdMap(); Object value = replacementId.get(masterKey); if (value == null) { throw new CayenneRuntimeException("Deferred propagated key (" + masterKey + ") wasn't generated for object with ID " + masterID); } return value; } }
/** * Returns a consistent String representation of the ObjectId */ public String toStringId(ObjectId id) { // deal with temp that have attached replacement ID as permanent IDs... // AuditableFilter, etc. all rely on the ability to find the temp object // after the transaction end // TODO: support encoding format for temp+replacement if (id.isTemporary() && !id.isReplacementIdAttached()) { return toTempIdString(id); } else { return toPermIdString(id); } }
if (id.isReplacementIdAttached()) { ObjectId replacementId = id.createReplacementId(); result.add(new NodeIdChangeOperation(id, replacementId));
static Map extractObjectId(Persistent dataObject) { if (dataObject == null) { throw new IllegalArgumentException("Null DataObject"); } ObjectId id = dataObject.getObjectId(); if (!id.isTemporary()) { return id.getIdSnapshot(); } // replacement ID is more tricky... do some sanity check... if (id.isReplacementIdAttached()) { DbEntity entity = dataObject .getObjectContext() .getEntityResolver() .lookupDbEntity(dataObject); if (entity != null && entity.isFullReplacementIdAttached(id)) { return id.getReplacementIdMap(); } } throw new CayenneRuntimeException("Can't get primary key from temporary id."); }
@Override protected Query createReplacementQuery(EntityResolver resolver) { if (objectId.isTemporary() && !objectId.isReplacementIdAttached()) { throw new CayenneRuntimeException("Can't build a query for relationship '%s' for temporary id: %s" , relationshipName, objectId); } ObjRelationship relationship = getRelationship(resolver); // build executable select... Expression qualifier = ExpressionFactory.matchDbExp(relationship .getReverseDbRelationshipPath(), objectId); SelectQuery<Object> query = new SelectQuery<Object>( (ObjEntity) relationship.getTargetEntity(), qualifier); query.setStatementFetchSize(statementFetchSize); return query; }
@Override protected Query createReplacementQuery(EntityResolver resolver) { if (objectId == null) { throw new CayenneRuntimeException("Can't resolve query - objectId is null."); } if (objectId.isTemporary() && !objectId.isReplacementIdAttached()) { throw new CayenneRuntimeException("Can't build a query for temporary id: %s", objectId); } SelectQuery<Object> query = new SelectQuery<>(objectId.getEntityName(), ExpressionFactory .matchAllDbExp(objectId.getIdSnapshot(), Expression.EQUAL_TO)); // if we got to the point of fetch, always force refresh.... query.setFetchingDataRows(fetchingDataRows); return query; }
static Map<String, Object> extractObjectId(Persistent dataObject) { if (dataObject == null) { throw new IllegalArgumentException("Null DataObject"); } ObjectId id = dataObject.getObjectId(); if (!id.isTemporary()) { return id.getIdSnapshot(); } // replacement ID is more tricky... do some sanity check... if (id.isReplacementIdAttached()) { ObjEntity objEntity = dataObject.getObjectContext().getEntityResolver().getObjEntity(dataObject); if (objEntity != null) { DbEntity entity = objEntity.getDbEntity(); if (entity != null && entity.isFullReplacementIdAttached(id)) { return id.getReplacementIdMap(); } } } throw new CayenneRuntimeException("Can't get primary key from temporary id."); }
protected Query createReplacementQuery(EntityResolver resolver) { if (objectId.isTemporary() && !objectId.isReplacementIdAttached()) { throw new CayenneRuntimeException("Can't build a query for relationship '" + relationshipName + "' for temporary id: " + objectId); } ObjRelationship relationship = getRelationship(resolver); // build executable select... Expression qualifier = ExpressionFactory.matchDbExp(relationship .getReverseDbRelationshipPath(), objectId); SelectQuery query = new SelectQuery( (ObjEntity) relationship.getTargetEntity(), qualifier); query.setRefreshingObjects(refreshing); return query; }
protected Query createReplacementQuery(EntityResolver resolver) { if (objectId == null) { throw new CayenneRuntimeException("Can't resolve query - objectId is null."); } if (objectId.isTemporary() && !objectId.isReplacementIdAttached()) { throw new CayenneRuntimeException("Can't build a query for temporary id: " + objectId); } SelectQuery query = new SelectQuery(objectId.getEntityName(), ExpressionFactory .matchAllDbExp(objectId.getIdSnapshot(), Expression.EQUAL_TO)); // if we got to the point of fetch, always force refresh.... query.setRefreshingObjects(true); query.setFetchingDataRows(fetchingDataRows); return query; }
&& !to.getObjectId().isReplacementIdAttached()) {
if (oid.isTemporary() && !oid.isReplacementIdAttached()) { response = new ListResponse(); return DONE;