Search in sources :

Example 76 with ObjRelationship

use of org.apache.cayenne.map.ObjRelationship in project cayenne by apache.

the class LockingUpdateController method updateAction.

public void updateAction() {
    int defaultLockType = dataMap.getDefaultLockType();
    boolean on = defaultLockType == ObjEntity.LOCK_TYPE_OPTIMISTIC;
    boolean updateEntities = view.getEntities().isSelected();
    boolean updateAttributes = view.getAttributes().isSelected();
    boolean updateRelationships = view.getRelationships().isSelected();
    ProjectController parent = (ProjectController) getParent();
    for (ObjEntity entity : dataMap.getObjEntities()) {
        if (updateEntities && defaultLockType != entity.getDeclaredLockType()) {
            entity.setDeclaredLockType(defaultLockType);
            parent.fireObjEntityEvent(new EntityEvent(this, entity));
        }
        if (updateAttributes) {
            for (ObjAttribute a : entity.getAttributes()) {
                if (a.isUsedForLocking() != on) {
                    a.setUsedForLocking(on);
                    parent.fireObjAttributeEvent(new AttributeEvent(this, a, entity));
                }
            }
        }
        if (updateRelationships) {
            for (ObjRelationship r : entity.getRelationships()) {
                if (r.isUsedForLocking() != on) {
                    r.setUsedForLocking(on);
                    parent.fireObjRelationshipEvent(new RelationshipEvent(this, r, entity));
                }
            }
        }
    }
    if (view != null) {
        view.dispose();
    }
}
Also used : ObjEntity(org.apache.cayenne.map.ObjEntity) ObjRelationship(org.apache.cayenne.map.ObjRelationship) ObjAttribute(org.apache.cayenne.map.ObjAttribute) EntityEvent(org.apache.cayenne.map.event.EntityEvent) ProjectController(org.apache.cayenne.modeler.ProjectController) AttributeEvent(org.apache.cayenne.map.event.AttributeEvent) RelationshipEvent(org.apache.cayenne.map.event.RelationshipEvent)

Example 77 with ObjRelationship

use of org.apache.cayenne.map.ObjRelationship in project cayenne by apache.

the class DbRelationshipTableModel method updateDependentObjRelationships.

void updateDependentObjRelationships(DbRelationship relationship) {
    Collection<ObjRelationship> objRelationshipsForDbRelationship = ProjectUtil.findObjRelationshipsForDbRelationship(mediator, relationship);
    for (ObjRelationship objRelationship : objRelationshipsForDbRelationship) {
        objRelationship.recalculateToManyValue();
        objRelationship.recalculateReadOnlyValue();
    }
}
Also used : ObjRelationship(org.apache.cayenne.map.ObjRelationship)

Example 78 with ObjRelationship

use of org.apache.cayenne.map.ObjRelationship in project cayenne by apache.

the class PasteUndoableEdit method undo.

@Override
public void undo() throws CannotUndoException {
    RemoveAttributeAction rAttributeAction = actionManager.getAction(RemoveAttributeAction.class);
    RemoveAction rAction = actionManager.getAction(RemoveAction.class);
    RemoveRelationshipAction rRelationShipAction = actionManager.getAction(RemoveRelationshipAction.class);
    RemoveCallbackMethodAction rCallbackMethodAction = actionManager.getAction(RemoveCallbackMethodAction.class);
    RemoveProcedureParameterAction rProcedureParamAction = actionManager.getAction(RemoveProcedureParameterAction.class);
    if (content instanceof DataMap) {
        if (where instanceof DataChannelDescriptor) {
            rAction.removeDataMap((DataMap) content);
        } else if (where instanceof DataNodeDescriptor) {
            rAction.removeDataMapFromDataNode((DataNodeDescriptor) where, (DataMap) content);
        }
    } else if (where instanceof DataMap) {
        if (content instanceof DbEntity) {
            rAction.removeDbEntity(map, (DbEntity) content);
        } else if (content instanceof ObjEntity) {
            rAction.removeObjEntity(map, (ObjEntity) content);
        } else if (content instanceof Embeddable) {
            rAction.removeEmbeddable(map, (Embeddable) content);
        } else if (content instanceof QueryDescriptor) {
            rAction.removeQuery(map, (QueryDescriptor) content);
        } else if (content instanceof Procedure) {
            rAction.removeProcedure(map, (Procedure) content);
        }
    } else if (where instanceof DbEntity) {
        if (content instanceof DbEntity) {
            rAction.removeDbEntity(map, (DbEntity) content);
        } else if (content instanceof DbAttribute) {
            rAttributeAction.removeDbAttributes(map, (DbEntity) where, new DbAttribute[] { (DbAttribute) content });
        } else if (content instanceof DbRelationship) {
            rRelationShipAction.removeDbRelationships((DbEntity) where, new DbRelationship[] { (DbRelationship) content });
        }
    } else if (where instanceof ObjEntity) {
        if (content instanceof ObjEntity) {
            rAction.removeObjEntity(map, (ObjEntity) content);
        } else if (content instanceof ObjAttribute) {
            rAttributeAction.removeObjAttributes((ObjEntity) where, new ObjAttribute[] { (ObjAttribute) content });
        } else if (content instanceof ObjRelationship) {
            rRelationShipAction.removeObjRelationships((ObjEntity) where, new ObjRelationship[] { (ObjRelationship) content });
        } else if (content instanceof ObjCallbackMethod) {
            ObjCallbackMethod[] methods = new ObjCallbackMethod[] { (ObjCallbackMethod) content };
            for (ObjCallbackMethod callbackMethod : methods) {
                rCallbackMethodAction.removeCallbackMethod(methods[0].getCallbackType(), callbackMethod.getName());
            }
        }
    } else if (where instanceof Procedure) {
        final Procedure procedure = (Procedure) where;
        if (content instanceof ProcedureParameter) {
            rProcedureParamAction.removeProcedureParameters(procedure, new ProcedureParameter[] { (ProcedureParameter) content });
        }
    } else if (where instanceof Embeddable) {
        if (content instanceof Embeddable) {
            rAction.removeEmbeddable(map, (Embeddable) content);
        } else if (content instanceof EmbeddableAttribute) {
            rAttributeAction.removeEmbeddableAttributes((Embeddable) where, new EmbeddableAttribute[] { (EmbeddableAttribute) content });
        }
    }
}
Also used : ProcedureParameter(org.apache.cayenne.map.ProcedureParameter) DataChannelDescriptor(org.apache.cayenne.configuration.DataChannelDescriptor) ObjRelationship(org.apache.cayenne.map.ObjRelationship) ObjAttribute(org.apache.cayenne.map.ObjAttribute) DbAttribute(org.apache.cayenne.map.DbAttribute) DataNodeDescriptor(org.apache.cayenne.configuration.DataNodeDescriptor) DataMap(org.apache.cayenne.map.DataMap) Embeddable(org.apache.cayenne.map.Embeddable) RemoveProcedureParameterAction(org.apache.cayenne.modeler.action.RemoveProcedureParameterAction) QueryDescriptor(org.apache.cayenne.map.QueryDescriptor) ObjEntity(org.apache.cayenne.map.ObjEntity) DbEntity(org.apache.cayenne.map.DbEntity) DbRelationship(org.apache.cayenne.map.DbRelationship) RemoveCallbackMethodAction(org.apache.cayenne.modeler.action.RemoveCallbackMethodAction) Procedure(org.apache.cayenne.map.Procedure) RemoveRelationshipAction(org.apache.cayenne.modeler.action.RemoveRelationshipAction) EmbeddableAttribute(org.apache.cayenne.map.EmbeddableAttribute) RemoveAction(org.apache.cayenne.modeler.action.RemoveAction) ObjCallbackMethod(org.apache.cayenne.modeler.editor.ObjCallbackMethod) RemoveAttributeAction(org.apache.cayenne.modeler.action.RemoveAttributeAction)

Example 79 with ObjRelationship

use of org.apache.cayenne.map.ObjRelationship in project cayenne by apache.

the class PasteAction method paste.

/**
 * Pastes single object
 */
public void paste(Object where, Object content, DataChannelDescriptor dataChannelDescriptor, DataMap map) {
    final ProjectController mediator = getProjectController();
    /**
     * Add a little intelligence - if a tree leaf is selected, we can paste to a
     * parent datamap
     */
    if (isTreeLeaf(where) && isTreeLeaf(content)) {
        where = mediator.getCurrentDataMap();
    }
    if ((where instanceof DataChannelDescriptor || where instanceof DataNodeDescriptor) && content instanceof DataMap) {
        // paste DataMap to DataDomain or DataNode
        DataMap dataMap = ((DataMap) content);
        dataMap.setName(NameBuilder.builder(dataMap, dataChannelDescriptor).baseName(dataMap.getName()).dupesPattern(COPY_PATTERN).name());
        /**
         * Update all names in the new DataMap, so that they would not conflict with
         * names from other datamaps of this domain
         */
        // add some intelligence - if we rename an entity, we should rename all links
        // to it as well
        Map<String, String> renamedDbEntities = new HashMap<>();
        Map<String, String> renamedObjEntities = new HashMap<>();
        Map<String, String> renamedEmbeddables = new HashMap<>();
        for (DbEntity dbEntity : dataMap.getDbEntities()) {
            String oldName = dbEntity.getName();
            dbEntity.setName(NameBuilder.builder(dbEntity, dataMap).baseName(dbEntity.getName()).dupesPattern(COPY_PATTERN).name());
            if (!oldName.equals(dbEntity.getName())) {
                renamedDbEntities.put(oldName, dbEntity.getName());
            }
        }
        for (ObjEntity objEntity : dataMap.getObjEntities()) {
            String oldName = objEntity.getName();
            objEntity.setName(NameBuilder.builder(objEntity, dataMap).baseName(objEntity.getName()).dupesPattern(COPY_PATTERN).name());
            if (!oldName.equals(objEntity.getName())) {
                renamedObjEntities.put(oldName, objEntity.getName());
            }
        }
        for (Embeddable embeddable : dataMap.getEmbeddables()) {
            String oldName = embeddable.getClassName();
            embeddable.setClassName(NameBuilder.builder(embeddable, dataMap).baseName(embeddable.getClassName()).dupesPattern(COPY_PATTERN).name());
            if (!oldName.equals(embeddable.getClassName())) {
                renamedEmbeddables.put(oldName, embeddable.getClassName());
            }
        }
        for (Procedure procedure : dataMap.getProcedures()) {
            procedure.setName(NameBuilder.builder(procedure, dataMap).baseName(procedure.getName()).dupesPattern(COPY_PATTERN).name());
        }
        for (QueryDescriptor query : dataMap.getQueryDescriptors()) {
            query.setName(NameBuilder.builder(query, dataMap).baseName(query.getName()).dupesPattern(COPY_PATTERN).name());
        }
        // if an entity was renamed, we rename all links to it too
        for (DbEntity dbEntity : dataMap.getDbEntities()) {
            for (DbRelationship rel : dbEntity.getRelationships()) {
                if (renamedDbEntities.containsKey(rel.getTargetEntityName())) {
                    rel.setTargetEntityName(renamedDbEntities.get(rel.getTargetEntityName()));
                }
            }
        }
        for (ObjEntity objEntity : dataMap.getObjEntities()) {
            if (renamedDbEntities.containsKey(objEntity.getDbEntityName())) {
                objEntity.setDbEntityName(renamedDbEntities.get(objEntity.getDbEntityName()));
            }
            if (renamedObjEntities.containsKey(objEntity.getSuperEntityName())) {
                objEntity.setSuperEntityName(renamedDbEntities.get(objEntity.getSuperEntityName()));
            }
            for (ObjRelationship rel : objEntity.getRelationships()) {
                if (renamedObjEntities.containsKey(rel.getTargetEntityName())) {
                    rel.setTargetEntityName(renamedObjEntities.get(rel.getTargetEntityName()));
                }
            }
        }
        mediator.addDataMap(this, dataMap);
    } else if (where instanceof DataMap) {
        // paste DbEntity to DataMap
        final DataMap dataMap = ((DataMap) where);
        // clear data map parent cache
        clearDataMapCache(dataMap);
        if (content instanceof DbEntity) {
            DbEntity dbEntity = (DbEntity) content;
            dbEntity.setName(NameBuilder.builder(dbEntity, dataMap).baseName(dbEntity.getName()).dupesPattern(COPY_PATTERN).name());
            dataMap.addDbEntity(dbEntity);
            CreateDbEntityAction.fireDbEntityEvent(this, mediator, dbEntity);
        } else if (content instanceof ObjEntity) {
            // paste ObjEntity to DataMap
            ObjEntity objEntity = (ObjEntity) content;
            objEntity.setName(NameBuilder.builder(objEntity, dataMap).baseName(objEntity.getName()).dupesPattern(COPY_PATTERN).name());
            dataMap.addObjEntity(objEntity);
            CreateObjEntityAction.fireObjEntityEvent(this, mediator, dataMap, objEntity);
        } else if (content instanceof Embeddable) {
            // paste Embeddable to DataMap
            Embeddable embeddable = (Embeddable) content;
            embeddable.setClassName(NameBuilder.builder(embeddable, dataMap).baseName(embeddable.getClassName()).dupesPattern(COPY_PATTERN).name());
            dataMap.addEmbeddable(embeddable);
            CreateEmbeddableAction.fireEmbeddableEvent(this, mediator, dataMap, embeddable);
        } else if (content instanceof QueryDescriptor) {
            QueryDescriptor query = (QueryDescriptor) content;
            query.setName(NameBuilder.builder(query, dataMap).dupesPattern(COPY_PATTERN).baseName(query.getName()).name());
            query.setDataMap(dataMap);
            dataMap.addQueryDescriptor(query);
            QueryType.fireQueryEvent(this, mediator, dataMap, query);
        } else if (content instanceof Procedure) {
            // paste Procedure to DataMap
            Procedure procedure = (Procedure) content;
            procedure.setName(NameBuilder.builder(procedure, dataMap).dupesPattern(COPY_PATTERN).baseName(procedure.getName()).name());
            dataMap.addProcedure(procedure);
            CreateProcedureAction.fireProcedureEvent(this, mediator, dataMap, procedure);
        }
    } else if (where instanceof DbEntity) {
        final DbEntity dbEntity = (DbEntity) where;
        if (content instanceof DbAttribute) {
            DbAttribute attr = (DbAttribute) content;
            attr.setName(NameBuilder.builder(attr, dbEntity).dupesPattern(COPY_PATTERN).baseName(attr.getName()).name());
            dbEntity.addAttribute(attr);
            CreateAttributeAction.fireDbAttributeEvent(this, mediator, mediator.getCurrentDataMap(), dbEntity, attr);
        } else if (content instanceof DbRelationship) {
            DbRelationship rel = (DbRelationship) content;
            rel.setName(NameBuilder.builder(rel, dbEntity).baseName(rel.getName()).dupesPattern(COPY_PATTERN).name());
            dbEntity.addRelationship(rel);
            CreateRelationshipAction.fireDbRelationshipEvent(this, mediator, dbEntity, rel);
        }
    } else if (where instanceof ObjEntity) {
        ObjEntity objEntity = (ObjEntity) where;
        if (content instanceof ObjAttribute) {
            ObjAttribute attr = (ObjAttribute) content;
            attr.setName(NameBuilder.builder(attr, objEntity).baseName(attr.getName()).dupesPattern(COPY_PATTERN).name());
            objEntity.addAttribute(attr);
            CreateAttributeAction.fireObjAttributeEvent(this, mediator, mediator.getCurrentDataMap(), objEntity, attr);
        } else if (content instanceof ObjRelationship) {
            ObjRelationship rel = (ObjRelationship) content;
            rel.setName(NameBuilder.builder(rel, objEntity).baseName(rel.getName()).dupesPattern(COPY_PATTERN).name());
            objEntity.addRelationship(rel);
            CreateRelationshipAction.fireObjRelationshipEvent(this, mediator, objEntity, rel);
        } else if (content instanceof ObjCallbackMethod) {
            ObjCallbackMethod method = (ObjCallbackMethod) content;
            method.setName(NameBuilder.builderForCallbackMethod(objEntity).baseName(method.getName()).dupesPattern(COPY_PATTERN).name());
            objEntity.getCallbackMap().getCallbackDescriptor(mediator.getCurrentCallbackType().getType()).addCallbackMethod(method.getName());
            CallbackMethodEvent ce = new CallbackMethodEvent(this, null, method.getName(), MapEvent.ADD);
            getProjectController().fireCallbackMethodEvent(ce);
        }
    } else if (where instanceof Embeddable) {
        final Embeddable embeddable = (Embeddable) where;
        if (content instanceof EmbeddableAttribute) {
            EmbeddableAttribute attr = (EmbeddableAttribute) content;
            attr.setName(NameBuilder.builder(attr, embeddable).baseName(attr.getName()).dupesPattern(COPY_PATTERN).name());
            embeddable.addAttribute(attr);
            CreateAttributeAction.fireEmbeddableAttributeEvent(this, mediator, embeddable, attr);
        }
    } else if (where instanceof Procedure) {
        // paste param to procedure
        final Procedure procedure = (Procedure) where;
        if (content instanceof ProcedureParameter) {
            ProcedureParameter param = (ProcedureParameter) content;
            param.setName(NameBuilder.builder(param, procedure).baseName(param.getName()).dupesPattern(COPY_PATTERN).name());
            procedure.addCallParameter(param);
            CreateProcedureParameterAction.fireProcedureParameterEvent(this, mediator, procedure, param);
        }
    }
}
Also used : ProcedureParameter(org.apache.cayenne.map.ProcedureParameter) DataChannelDescriptor(org.apache.cayenne.configuration.DataChannelDescriptor) ObjRelationship(org.apache.cayenne.map.ObjRelationship) ObjAttribute(org.apache.cayenne.map.ObjAttribute) HashMap(java.util.HashMap) DbAttribute(org.apache.cayenne.map.DbAttribute) DataNodeDescriptor(org.apache.cayenne.configuration.DataNodeDescriptor) ProjectController(org.apache.cayenne.modeler.ProjectController) DataMap(org.apache.cayenne.map.DataMap) Embeddable(org.apache.cayenne.map.Embeddable) QueryDescriptor(org.apache.cayenne.map.QueryDescriptor) ObjEntity(org.apache.cayenne.map.ObjEntity) DbEntity(org.apache.cayenne.map.DbEntity) CallbackMethodEvent(org.apache.cayenne.modeler.event.CallbackMethodEvent) DbRelationship(org.apache.cayenne.map.DbRelationship) Procedure(org.apache.cayenne.map.Procedure) EmbeddableAttribute(org.apache.cayenne.map.EmbeddableAttribute) ObjCallbackMethod(org.apache.cayenne.modeler.editor.ObjCallbackMethod)

Example 80 with ObjRelationship

use of org.apache.cayenne.map.ObjRelationship in project cayenne by apache.

the class RemoveAction method removeObjRelationships.

private void removeObjRelationships(ProjectController mediator, ConfirmRemoveDialog dialog, ObjRelationship[] rels) {
    if ((rels.length == 1 && dialog.shouldDelete("ObjRelationship", rels[0].getName())) || (rels.length > 1 && dialog.shouldDelete("selected ObjRelationships"))) {
        ObjEntity entity = mediator.getCurrentObjEntity();
        for (ObjRelationship rel : rels) {
            entity.removeRelationship(rel.getName());
            RelationshipEvent e = new RelationshipEvent(Application.getFrame(), rel, entity, MapEvent.REMOVE);
            mediator.fireObjRelationshipEvent(e);
        }
        Application.getInstance().getUndoManager().addEdit(new RemoveRelationshipUndoableEdit(entity, rels));
    }
}
Also used : ObjEntity(org.apache.cayenne.map.ObjEntity) ObjRelationship(org.apache.cayenne.map.ObjRelationship) RemoveRelationshipUndoableEdit(org.apache.cayenne.modeler.undo.RemoveRelationshipUndoableEdit) RelationshipEvent(org.apache.cayenne.map.event.RelationshipEvent)

Aggregations

ObjRelationship (org.apache.cayenne.map.ObjRelationship)84 ObjEntity (org.apache.cayenne.map.ObjEntity)48 ObjAttribute (org.apache.cayenne.map.ObjAttribute)27 DbRelationship (org.apache.cayenne.map.DbRelationship)26 Test (org.junit.Test)24 DbEntity (org.apache.cayenne.map.DbEntity)18 DbAttribute (org.apache.cayenne.map.DbAttribute)15 DbJoin (org.apache.cayenne.map.DbJoin)14 CayenneRuntimeException (org.apache.cayenne.CayenneRuntimeException)12 ClassDescriptor (org.apache.cayenne.reflect.ClassDescriptor)12 ObjectId (org.apache.cayenne.ObjectId)10 ToManyProperty (org.apache.cayenne.reflect.ToManyProperty)9 ToOneProperty (org.apache.cayenne.reflect.ToOneProperty)9 ArrayList (java.util.ArrayList)8 AttributeProperty (org.apache.cayenne.reflect.AttributeProperty)8 PropertyVisitor (org.apache.cayenne.reflect.PropertyVisitor)8 List (java.util.List)7 EJBQLException (org.apache.cayenne.ejbql.EJBQLException)7 DataMap (org.apache.cayenne.map.DataMap)7 HashMap (java.util.HashMap)6