DataObject findObject(Object nodeId) { return (DataObject) graphManager.getNode(nodeId); }
public void nodeCreated(Object nodeId) { Op op = seenIds.put(nodeId, Op.INSERT); if (op == null) { Object node = graphManager.getNode(nodeId); if (node != null) { if (persisted == null) { persisted = new ArrayList<>(); } persisted.add(node); } } }
private void nodeUpdated(Object nodeId) { Op op = seenIds.put(nodeId, Op.UPDATE); if (op == null) { Object node = graphManager.getNode(nodeId); if (node != null) { if (updated == null) { updated = new ArrayList<>(); } updated.add(node); } } }
Collection<Object> dirtyNodes() { if (dirtyIds.isEmpty()) { return Collections.emptySet(); } Collection<Object> objects = new ArrayList<>(dirtyIds.size()); for (Object id : dirtyIds) { objects.add(graphManager.getNode(id)); } return objects; }
Collection dirtyNodes() { if (dirtyIds.isEmpty()) { return Collections.EMPTY_SET; } List objects = new ArrayList(dirtyIds.size()); Iterator it = dirtyIds.iterator(); while (it.hasNext()) { objects.add(graphManager.getNode(it.next())); } return objects; }
public void nodeRemoved(Object nodeId) { Op op = seenIds.put(nodeId, Op.DELETE); // the node may have been updated prior to delete if (op != Op.DELETE) { Object node = graphManager.getNode(nodeId); if (node != null) { if (removed == null) { removed = new ArrayList<>(); } removed.add(node); if (op == Op.UPDATE) { updated.remove(node); } // don't care about preceding Op.INSERT, as NEW -> DELETED objects are // purged from the change log upstream and we don't see them here } } }
Collection<Object> dirtyNodes(int state) { if (dirtyIds.isEmpty()) { return Collections.emptySet(); } int size = dirtyIds.size(); Collection<Object> objects = new ArrayList<>(size > 50 ? size / 2 : size); for (Object id : dirtyIds) { Persistent o = (Persistent) graphManager.getNode(id); if (o.getPersistenceState() == state) { objects.add(o); } } return objects; }
Collection dirtyNodes(int state) { if (dirtyIds.isEmpty()) { return Collections.EMPTY_SET; } int size = dirtyIds.size(); List objects = new ArrayList(size > 50 ? size / 2 : size); Iterator it = dirtyIds.iterator(); while (it.hasNext()) { Persistent o = (Persistent) graphManager.getNode(it.next()); if (o.getPersistenceState() == state) { objects.add(o); } } return objects; }
@Override public void nodePropertyChanged( Object nodeId, String property, Object oldValue, Object newValue) { super.nodePropertyChanged(nodeId, property, oldValue, newValue); Persistent object = (Persistent) context.getGraphManager().getNode(nodeId); context.propertyChanged(object, property, oldValue, newValue); }
void graphReverted() { Iterator it = dirtyIds.iterator(); while (it.hasNext()) { Object node = graphManager.getNode(it.next()); if (node instanceof Persistent) { Persistent persistentNode = (Persistent) node; switch (persistentNode.getPersistenceState()) { case PersistenceState.MODIFIED: case PersistenceState.DELETED: persistentNode.setPersistenceState(PersistenceState.COMMITTED); break; case PersistenceState.NEW: persistentNode.setPersistenceState(PersistenceState.TRANSIENT); break; } } } clear(); }
public void arcDeleted(Object nodeId, Object targetNodeId, Object arcId) { Persistent source = (Persistent) context.getGraphManager().getNode(nodeId); if (source != null && source.getPersistenceState() != PersistenceState.HOLLOW) { Object target = context.localObject((ObjectId) targetNodeId, null); Property p = propertyForId(nodeId, arcId.toString()); if (p instanceof CollectionProperty) { ((CollectionProperty) p).removeTarget(source, target, false); } else { ((SingleObjectArcProperty) p).setTarget(source, null, false); } } } }
void graphReverted() { for (Object id : dirtyIds) { Object node = graphManager.getNode(id); if (node instanceof Persistent) { Persistent persistentNode = (Persistent) node; switch (persistentNode.getPersistenceState()) { case PersistenceState.MODIFIED: case PersistenceState.DELETED: persistentNode.setPersistenceState(PersistenceState.COMMITTED); break; case PersistenceState.NEW: persistentNode.setPersistenceState(PersistenceState.TRANSIENT); break; } } } clear(); }
protected Object polymorphicObjectFromCache(ObjectId superOid) { Object object = actingContext.getGraphManager().getNode(superOid); if (object != null) { return object; } EntityInheritanceTree inheritanceTree = actingContext.getEntityResolver().getInheritanceTree(superOid.getEntityName()); if (!inheritanceTree.getChildren().isEmpty()) { object = polymorphicObjectFromCache(inheritanceTree, superOid.getIdSnapshot()); } return object; }
public void arcCreated(Object nodeId, Object targetNodeId, Object arcId) { Persistent source = (Persistent) context.getGraphManager().getNode(nodeId); if (source != null && source.getPersistenceState() != PersistenceState.HOLLOW) { // get target as local object Object target = targetNodeId != null ? context.localObject( (ObjectId) targetNodeId, null) : null; Property p = propertyForId(nodeId, arcId.toString()); if (p instanceof CollectionProperty) { ((CollectionProperty) p).addTarget(source, target, false); } else { ((SingleObjectArcProperty) p).setTarget(source, target, false); } } }
protected boolean interceptOIDQuery() { if (query instanceof ObjectIdQuery) { ObjectIdQuery oidQuery = (ObjectIdQuery) query; if (!oidQuery.isFetchMandatory() && !oidQuery.isFetchingDataRows()) { Object object = actingContext.getGraphManager().getNode( oidQuery.getObjectId()); if (object != null) { this.response = new ListResponse(object); return DONE; } } } return !DONE; }
public void nodePropertyChanged( Object nodeId, String property, Object oldValue, Object newValue) { Persistent object = (Persistent) context.getGraphManager().getNode(nodeId); if (object != null && object.getPersistenceState() != PersistenceState.HOLLOW) { // do not override local changes.... PropertyDescriptor p = propertyForId(nodeId, property); if (Util.nullSafeEquals(p.readPropertyDirectly(object), oldValue)) { p.writePropertyDirectly(object, oldValue, newValue); } } }
private Object polymorphicObjectFromCache(EntityInheritanceTree superNode, Map<String, ?> idSnapshot) { for (EntityInheritanceTree child : superNode.getChildren()) { ObjectId id = new ObjectId(child.getEntity().getName(), idSnapshot); Object object = actingContext.getGraphManager().getNode(id); if (object != null) { return object; } object = polymorphicObjectFromCache(child, idSnapshot); if (object != null) { return object; } } return null; }
public void nodePropertyChanged( Object nodeId, String property, Object oldValue, Object newValue) { Persistent object = (Persistent) context.getGraphManager().getNode(nodeId); if (object != null && object.getPersistenceState() != PersistenceState.HOLLOW) { // do not override local changes.... Property p = propertyForId(nodeId, property); if (Util.nullSafeEquals(p.readPropertyDirectly(object), oldValue)) { p.writePropertyDirectly(object, oldValue, newValue); } } }
public void linkToParent(DataRow row, Persistent object) { Persistent parentObject = null; for (ObjEntity entity : sourceEntities) { if (entity.isAbstract()) { continue; } ObjectId id = node.getResolver().createObjectId(row, entity, relatedIdPrefix); if (id == null) { throw new CayenneRuntimeException("Can't build ObjectId from row: %s, entity: %s, prefix: %s" , row, entity.getName(), relatedIdPrefix); } parentObject = (Persistent) graphManager.getNode(id); if (parentObject != null) { break; } } node.linkToParent(object, parentObject); } }
/** * Overrides super implementation to property handle data row fetches. */ protected boolean interceptOIDQuery() { if (query instanceof ObjectIdQuery) { ObjectIdQuery oidQuery = (ObjectIdQuery) query; if (!oidQuery.isFetchMandatory()) { Object object = actingContext.getGraphManager().getNode( oidQuery.getObjectId()); if (object != null) { if (oidQuery.isFetchingDataRows()) { object = ((DataContext) actingContext) .currentSnapshot((DataObject) object); } this.response = new ListResponse(object); return DONE; } } } return !DONE; }