private KunderaProxy getLazyEntity(String entityName, Class<?> persistentClass, Method getIdentifierMethod, Method setIdentifierMethod, Object id, PersistenceDelegator pd) { return pd.getKunderaMetadata().getCoreMetadata().getLazyInitializerFactory() .getProxy(entityName, persistentClass, getIdentifierMethod, setIdentifierMethod, id, pd); }
final PersistenceDelegator persistenceDelegator, EntityMetadata metadata, String persistenceUnit) KunderaQuery kunderaQuery = new KunderaQuery(jpaQuery, persistenceDelegator.getKunderaMetadata()); kunderaQuery.isNativeQuery = true; kunderaQuery.setPersistenceUnit(persistenceUnit); KunderaMetadata.class); query = (Query) constructor.newInstance(kunderaQuery, persistenceDelegator, persistenceDelegator.getKunderaMetadata());
/** * * @param metadata * Entity metadata of the parent node * @param relation * @return */ private Map<LinkProperty, Object> getLinkProperties(EntityMetadata metadata, Relation relation) { Map<LinkProperty, Object> linkProperties = new HashMap<NodeLink.LinkProperty, Object>(); linkProperties.put(LinkProperty.LINK_NAME, MetadataUtils.getMappedName(metadata, relation, pd.getKunderaMetadata())); linkProperties.put(LinkProperty.IS_SHARED_BY_PRIMARY_KEY, relation.isJoinedByPrimaryKey()); linkProperties.put(LinkProperty.IS_BIDIRECTIONAL, !relation.isUnary()); linkProperties.put(LinkProperty.IS_RELATED_VIA_JOIN_TABLE, relation.isRelatedViaJoinTable()); linkProperties.put(LinkProperty.PROPERTY, relation.getProperty()); linkProperties.put(LinkProperty.CASCADE, relation.getCascades()); if (relation.isRelatedViaJoinTable()) { linkProperties.put(LinkProperty.JOIN_TABLE_METADATA, relation.getJoinTableMetadata()); } // TODO: Add more link properties as required return linkProperties; }
@Override public void refresh() { getCurrentNodeState().handleRefresh(this); // Fix for handling PostLoad event on refresh. EntityMetadata metadata = KunderaMetadataManager.getEntityMetadata(pd.getKunderaMetadata(), this.getDataClass()); onPostEvent(metadata, EntityEvent.FIND); }
@Override public void find() { getCurrentNodeState().handleFind(this); // Fix for handling PostLoad event on find. EntityMetadata metadata = KunderaMetadataManager.getEntityMetadata(pd.getKunderaMetadata(), this.getDataClass()); onPostEvent(metadata, EntityEvent.FIND); }
EntityMetadata entityMetadata = KunderaMetadataManager.getEntityMetadata(delegator.getKunderaMetadata(), entity.getClass()); id = PropertyAccessorHelper.getId(entity, entityMetadata); id = new IdGenerator().generateAndSetId(entity, entityMetadata, delegator, delegator.getKunderaMetadata()); validator.validate(entity, delegator.getKunderaMetadata());
/** * Generate graph for head node. <li>traverse through it's relational * entities recursively * * @param entity * entity object * @param delegator * delegator object * @param pc * persistence cache * @return head node */ <E> Node generate(E entity, PersistenceDelegator delegator, PersistenceCache pc, NodeState state) { EntityMetadata entityMetadata = KunderaMetadataManager.getEntityMetadata(delegator.getKunderaMetadata(), entity.getClass()); if (!new NullOrInvalidEntityRule<E>(entityMetadata).validate(entity)) { Object entityId = onPreChecks(entity, delegator); // TODO::check for composite key. Node node = builder.buildNode(entity, delegator, entityId, state); node = traverseNode(entity, delegator, pc, entityId, node); return node; } return null; }
EntityMetadata entityMetadata = KunderaMetadataManager.getEntityMetadata(delegator.getKunderaMetadata(), entity.getClass()); delegator.getKunderaMetadata(), PropertyAccessorHelper.getGenericClass(relation.getProperty()));
@Override public Node clone() { Node cloneCopy = new Node(this.nodeId, ObjectUtils.deepCopy(this.getData(), pd.getKunderaMetadata()), this.persistenceCache, this.entityId, this.pd); cloneCopy.setChildren(this.children); cloneCopy.setParents(this.parents); cloneCopy.setDataClass(this.dataClass); cloneCopy.setTraversed(this.traversed); return cloneCopy; }
public void handlePreEvent() { EntityMetadata metadata = KunderaMetadataManager.getEntityMetadata(pd.getKunderaMetadata(), this.getDataClass()); if (isUpdate) { onPreEvent(metadata, EntityEvent.UPDATE); } else if (this.isInState(RemovedState.class)) { onPreEvent(metadata, EntityEvent.REMOVE); } else { onPreEvent(metadata, EntityEvent.PERSIST); } }
public void handlePostEvent() { EntityMetadata metadata = KunderaMetadataManager.getEntityMetadata(pd.getKunderaMetadata(), this.getDataClass()); if (isUpdate) { onPostEvent(metadata, EntityEvent.UPDATE); } else if (this.isInState(RemovedState.class)) { onPostEvent(metadata, EntityEvent.REMOVE); } else { onPostEvent(metadata, EntityEvent.PERSIST); } }
/** * Set link property * * @param node * node * @param relation * relation * @param childNode * target node * @param nodeLink * node link(bridge) */ void setLink(Node node, Relation relation, Node childNode, NodeLink nodeLink) { nodeLink.setMultiplicity(relation.getType()); EntityMetadata metadata = KunderaMetadataManager.getEntityMetadata(node.getPersistenceDelegator() .getKunderaMetadata(), node.getDataClass()); nodeLink.setLinkProperties(getLinkProperties(metadata, relation, node.getPersistenceDelegator() .getKunderaMetadata())); // Add Parent node to this child childNode.addParentNode(nodeLink, node); // Add child node to this node node.addChildNode(nodeLink, childNode); }
Map<String, Object> relationValue = null; relationValue = handler.getEntityFromDocument(m.getEntityClazz(), entityFromDocument, m, document, m.getRelationNames(), relationValue, persistenceDelegator.getKunderaMetadata());
@Override public void handleMerge(NodeStateContext nodeStateContext) { // create a new managed entity and copy state of original entity into // this one. Object copiedNodeData = ObjectUtils.deepCopy(nodeStateContext.getData(), nodeStateContext.getPersistenceDelegator().getKunderaMetadata()); nodeStateContext.setData(copiedNodeData); moveNodeToNextState(nodeStateContext, new ManagedState()); nodeStateContext.getPersistenceCache().getMainCache().addNodeToCache((Node) nodeStateContext); }
private void rollbackJoinTableData(PersistenceDelegator delegator) { // on deleting join table data. for (JoinTableData jtData : joinTableDataCollection) { if (jtData.isProcessed()) { EntityMetadata m = KunderaMetadataManager.getEntityMetadata(delegator.getKunderaMetadata(), jtData.getEntityClass()); Client client = delegator.getClient(m); if (OPERATION.INSERT.equals(jtData.getOperation())) { for (Object pk : jtData.getJoinTableRecords().keySet()) { client.deleteByColumn(jtData.getSchemaName(), jtData.getJoinTableName(), m.getIdAttribute() .getName(), pk); } } else if (OPERATION.DELETE.equals(jtData.getOperation())) { client.persistJoinTable(jtData); } } } joinTableDataCollection.clear(); joinTableDataCollection = null; joinTableDataCollection = new ArrayList<JoinTableData>(); }
public synchronized void addNodeToCache(Node node) { // Make a deep copy of Node data and and set into node // Original data object is now detached from Node and is possibly // referred by user code Object nodeDataCopy = ObjectUtils.deepCopy(node.getData(), node.getPersistenceDelegator().getKunderaMetadata()); node.setData(nodeDataCopy); /* * check if this node already exists in cache node mappings If yes, * update parents and children links Otherwise, just simply add the node * to cache node mappings */ processNodeMapping(node); if (l2Cache != null) { l2Cache.put(node.getNodeId(), node.getData()); } }
EntityMetadata m = KunderaMetadataManager.getEntityMetadata(getPersistenceDelegator().getKunderaMetadata(), getOwner().getClass());
EntityMetadata entityMetadata = KunderaMetadataManager.getEntityMetadata(pd.getKunderaMetadata(), entity.getClass());
@Override public void handleRefresh(NodeStateContext nodeStateContext) { // Refresh entity state from the database // Fetch Node data from Client Client client = nodeStateContext.getClient(); Class<?> nodeDataClass = nodeStateContext.getDataClass(); EntityMetadata entityMetadata = KunderaMetadataManager.getEntityMetadata(nodeStateContext.getPersistenceDelegator().getKunderaMetadata(), nodeDataClass); Object entityId = nodeStateContext.getEntityId(); EntityReader reader = client.getReader(); EnhanceEntity ee = reader.findById(entityId, entityMetadata, client); if (ee != null && ee.getEntity() != null) { Object nodeData = ee.getEntity(); nodeStateContext.setData(nodeData); } // Cascade refresh operation for all related entities for whom // cascade=ALL or REFRESH recursivelyPerformOperation(nodeStateContext, OPERATION.REFRESH); }
EntityMetadata entityMetadata = KunderaMetadataManager.getEntityMetadata(nodeStateContext.getPersistenceDelegator().getKunderaMetadata(), nodeDataClass); Object entityId = nodeStateContext.getEntityId();