public RemoveUndoableEdit(DataMap map, ObjEntity objEntity) { this.map = map; this.objEntity = objEntity; this.mode = REMOVE_MODE.OBJECT_ENTITY; for (ObjEntity ent : map.getObjEntities()) { // take a copy since we're going to modify the entity for (Relationship relationship : new ArrayList<Relationship>(ent .getRelationships())) { if (this.objEntity.getName().equals(relationship.getTargetEntityName())) { ObjRelationship rel = (ObjRelationship) relationship; if (objRelationshipMap.get(rel.getSourceEntity()) == null) { objRelationshipMap.put( (ObjEntity) rel.getSourceEntity(), new LinkedList<ObjRelationship>()); } objRelationshipMap.get(rel.getSourceEntity()).add(rel); } } } }
/** * Removes ObjEntity from the DataMap. If <code>clearDependencies</code> is * true, all ObjRelationships that reference this entity are also removed. * * @since 1.1 */ public void removeObjEntity(String objEntityName, boolean clearDependencies) { ObjEntity entity = objEntityMap.remove(objEntityName); if (entity != null && clearDependencies) { // remove relationships that point to this entity for (ObjEntity ent : getObjEntities()) { // take a copy since we're going to modify the entity for (Relationship relationship : new ArrayList<>(ent.getRelationships())) { if (objEntityName.equals(relationship.getTargetEntityName()) || objEntityName.equals(relationship.getTargetEntityName())) { ent.removeRelationship(relationship.getName()); } } } MappingNamespace ns = getNamespace(); if (ns instanceof EntityResolver) { ((EntityResolver) ns).refreshMappingCache(); } } }
if (dbEntityName.equals(rel.getTargetEntityName())) { dbEnt.removeRelationship(rel.getName());