Search in sources :

Example 46 with DataNodeDescriptor

use of org.apache.cayenne.configuration.DataNodeDescriptor in project cayenne by apache.

the class DataMapView method setDataNode.

void setDataNode() {
    DataNodeDescriptor node = (DataNodeDescriptor) nodeSelector.getSelectedItem();
    DataMap map = eventController.getCurrentDataMap();
    LinkDataMapAction action = eventController.getApplication().getActionManager().getAction(LinkDataMapAction.class);
    action.linkDataMap(map, node);
}
Also used : DataNodeDescriptor(org.apache.cayenne.configuration.DataNodeDescriptor) LinkDataMapAction(org.apache.cayenne.modeler.action.LinkDataMapAction) DataMap(org.apache.cayenne.map.DataMap)

Example 47 with DataNodeDescriptor

use of org.apache.cayenne.configuration.DataNodeDescriptor in project cayenne by apache.

the class DataMapView method initFromModel.

/**
 * Updates the view from the current model state. Invoked when a currently displayed
 * ObjEntity is changed.
 */
private void initFromModel(DataMap map) {
    name.setText(map.getName());
    location.setText((map.getLocation() != null) ? map.getLocation() : "(no file)");
    quoteSQLIdentifiers.setSelected(map.isQuotingSQLIdentifiers());
    comment.setText(getComment(map));
    // rebuild data node list
    DataNodeDescriptor[] nodes = ((DataChannelDescriptor) eventController.getProject().getRootNode()).getNodeDescriptors().toArray(new DataNodeDescriptor[0]);
    // add an empty item to the front
    DataNodeDescriptor[] objects = new DataNodeDescriptor[nodes.length + 1];
    // now add the entities
    if (nodes.length > 0) {
        Arrays.sort(nodes, Comparators.getNamedObjectComparator());
        System.arraycopy(nodes, 0, objects, 1, nodes.length);
    }
    DefaultComboBoxModel<DataNodeDescriptor> model = new DefaultComboBoxModel<>(objects);
    // find selected node
    for (DataNodeDescriptor node : nodes) {
        if (node.getDataMapNames().contains(map.getName())) {
            model.setSelectedItem(node);
            break;
        }
    }
    nodeSelector.setModel(model);
    // init default fields
    defaultLockType.setSelected(map.getDefaultLockType() != ObjEntity.LOCK_TYPE_NONE);
    defaultPackage.setText(map.getDefaultPackage());
    defaultCatalog.setText(map.getDefaultCatalog());
    defaultSchema.setText(map.getDefaultSchema());
    defaultSuperclass.setText(map.getDefaultSuperclass());
    // client defaults
    clientSupport.setSelected(map.isClientSupported());
    defaultClientPackage.setText(map.getDefaultClientPackage());
    defaultClientSuperclass.setText(map.getDefaultClientSuperclass());
    toggleClientProperties(map.isClientSupported());
}
Also used : DataNodeDescriptor(org.apache.cayenne.configuration.DataNodeDescriptor) DefaultComboBoxModel(javax.swing.DefaultComboBoxModel)

Example 48 with DataNodeDescriptor

use of org.apache.cayenne.configuration.DataNodeDescriptor 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 49 with DataNodeDescriptor

use of org.apache.cayenne.configuration.DataNodeDescriptor in project cayenne by apache.

the class RemoveAction method removeDataMap.

public void removeDataMap(DataMap map) {
    ProjectController mediator = getProjectController();
    DataChannelDescriptor domain = (DataChannelDescriptor) mediator.getProject().getRootNode();
    DataMapEvent e = new DataMapEvent(Application.getFrame(), map, MapEvent.REMOVE);
    e.setDomain((DataChannelDescriptor) mediator.getProject().getRootNode());
    domain.getDataMaps().remove(map);
    if (map.getConfigurationSource() != null) {
        URL mapURL = map.getConfigurationSource().getURL();
        Collection<URL> unusedResources = getCurrentProject().getUnusedResources();
        unusedResources.add(mapURL);
    }
    for (DataNodeDescriptor node : domain.getNodeDescriptors()) {
        if (node.getDataMapNames().contains(map.getName())) {
            removeDataMapFromDataNode(node, map);
        }
    }
    mediator.fireDataMapEvent(e);
}
Also used : DataChannelDescriptor(org.apache.cayenne.configuration.DataChannelDescriptor) DataNodeDescriptor(org.apache.cayenne.configuration.DataNodeDescriptor) ProjectController(org.apache.cayenne.modeler.ProjectController) DataMapEvent(org.apache.cayenne.configuration.event.DataMapEvent) URL(java.net.URL)

Example 50 with DataNodeDescriptor

use of org.apache.cayenne.configuration.DataNodeDescriptor in project cayenne by apache.

the class ProjectTreeView method processSelection.

/**
 * Processes node selection regardless of whether a new node was selected, or an
 * already selected node was clicked again. Normally called from event listener
 * methods.
 */
public void processSelection(TreePath path) {
    if (path == null) {
        return;
    }
    DefaultMutableTreeNode currentNode = (DefaultMutableTreeNode) path.getLastPathComponent();
    Object[] data = getUserObjects(currentNode);
    if (data.length == 0) {
        // this should clear the right-side panel
        DomainDisplayEvent domEvent = new DomainDisplayEvent(this, null);
        domEvent.setDomain((DataChannelDescriptor) mediator.getProject().getRootNode());
        mediator.fireDomainDisplayEvent(domEvent);
        return;
    }
    Object obj = data[data.length - 1];
    if (obj instanceof DataChannelDescriptor) {
        mediator.fireDomainDisplayEvent(new DomainDisplayEvent(this, (DataChannelDescriptor) obj));
    } else if (obj instanceof DataMap) {
        if (data.length == 2) {
            mediator.fireDataMapDisplayEvent(new DataMapDisplayEvent(this, (DataMap) obj, (DataChannelDescriptor) mediator.getProject().getRootNode(), (DataNodeDescriptor) data[data.length - 2]));
        } else if (data.length == 1) {
            mediator.fireDataMapDisplayEvent(new DataMapDisplayEvent(this, (DataMap) obj, (DataChannelDescriptor) mediator.getProject().getRootNode()));
        }
    } else if (obj instanceof DataNodeDescriptor) {
        if (data.length == 1) {
            mediator.fireDataNodeDisplayEvent(new DataNodeDisplayEvent(this, (DataChannelDescriptor) mediator.getProject().getRootNode(), (DataNodeDescriptor) obj));
        }
    } else if (obj instanceof Entity) {
        EntityDisplayEvent e = new EntityDisplayEvent(this, (Entity) obj);
        e.setUnselectAttributes(true);
        if (data.length == 3) {
            e.setDataMap((DataMap) data[data.length - 2]);
            e.setDomain((DataChannelDescriptor) mediator.getProject().getRootNode());
            e.setDataNode((DataNodeDescriptor) data[data.length - 3]);
        } else if (data.length == 2) {
            e.setDataMap((DataMap) data[data.length - 2]);
            e.setDomain((DataChannelDescriptor) mediator.getProject().getRootNode());
        }
        if (obj instanceof ObjEntity) {
            mediator.fireObjEntityDisplayEvent(e);
        } else if (obj instanceof DbEntity) {
            mediator.fireDbEntityDisplayEvent(e);
        }
    } else if (obj instanceof Embeddable) {
        EmbeddableDisplayEvent e = new EmbeddableDisplayEvent(this, (Embeddable) obj, (DataMap) data[data.length - 2], (DataChannelDescriptor) mediator.getProject().getRootNode());
        mediator.fireEmbeddableDisplayEvent(e);
    } else if (obj instanceof Procedure) {
        ProcedureDisplayEvent e = new ProcedureDisplayEvent(this, (Procedure) obj, (DataMap) data[data.length - 2], (DataChannelDescriptor) mediator.getProject().getRootNode());
        mediator.fireProcedureDisplayEvent(e);
    } else if (obj instanceof QueryDescriptor) {
        QueryDisplayEvent e = new QueryDisplayEvent(this, (QueryDescriptor) obj, (DataMap) data[data.length - 2], (DataChannelDescriptor) mediator.getProject().getRootNode());
        mediator.fireQueryDisplayEvent(e);
    }
    this.scrollPathToVisible(path);
}
Also used : ObjEntity(org.apache.cayenne.map.ObjEntity) Entity(org.apache.cayenne.map.Entity) DbEntity(org.apache.cayenne.map.DbEntity) ProcedureDisplayEvent(org.apache.cayenne.modeler.event.ProcedureDisplayEvent) DataChannelDescriptor(org.apache.cayenne.configuration.DataChannelDescriptor) EntityDisplayEvent(org.apache.cayenne.modeler.event.EntityDisplayEvent) DefaultMutableTreeNode(javax.swing.tree.DefaultMutableTreeNode) EmbeddableDisplayEvent(org.apache.cayenne.modeler.event.EmbeddableDisplayEvent) DataNodeDescriptor(org.apache.cayenne.configuration.DataNodeDescriptor) DataMapDisplayEvent(org.apache.cayenne.modeler.event.DataMapDisplayEvent) DataMap(org.apache.cayenne.map.DataMap) Embeddable(org.apache.cayenne.map.Embeddable) QueryDescriptor(org.apache.cayenne.map.QueryDescriptor) QueryDisplayEvent(org.apache.cayenne.modeler.event.QueryDisplayEvent) ObjEntity(org.apache.cayenne.map.ObjEntity) DomainDisplayEvent(org.apache.cayenne.modeler.event.DomainDisplayEvent) DbEntity(org.apache.cayenne.map.DbEntity) DataNodeDisplayEvent(org.apache.cayenne.modeler.event.DataNodeDisplayEvent) Procedure(org.apache.cayenne.map.Procedure)

Aggregations

DataNodeDescriptor (org.apache.cayenne.configuration.DataNodeDescriptor)58 DataChannelDescriptor (org.apache.cayenne.configuration.DataChannelDescriptor)28 DataMap (org.apache.cayenne.map.DataMap)23 Test (org.junit.Test)22 DbEntity (org.apache.cayenne.map.DbEntity)11 ArrayList (java.util.ArrayList)8 Injector (org.apache.cayenne.di.Injector)8 Constants (org.apache.cayenne.configuration.Constants)7 RuntimeProperties (org.apache.cayenne.configuration.RuntimeProperties)7 DbAdapter (org.apache.cayenne.dba.DbAdapter)7 AdhocObjectFactory (org.apache.cayenne.di.AdhocObjectFactory)7 ClassLoaderManager (org.apache.cayenne.di.ClassLoaderManager)7 DIBootstrap (org.apache.cayenne.di.DIBootstrap)7 Key (org.apache.cayenne.di.Key)7 Module (org.apache.cayenne.di.Module)7 DefaultAdhocObjectFactory (org.apache.cayenne.di.spi.DefaultAdhocObjectFactory)7 DefaultClassLoaderManager (org.apache.cayenne.di.spi.DefaultClassLoaderManager)7 JdbcEventLogger (org.apache.cayenne.log.JdbcEventLogger)7 Slf4jJdbcEventLogger (org.apache.cayenne.log.Slf4jJdbcEventLogger)7 ObjEntity (org.apache.cayenne.map.ObjEntity)7