Search in sources :

Example 26 with Entity

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

the class ObjAttributeInfoDialog method initController.

private void initController(ObjAttribute attr) {
    for (String embeddableName : embeddableNames) {
        ((DefaultComboBoxModel) view.getTypeComboBox().getModel()).addElement(embeddableName);
    }
    this.attribute = attr;
    if (attribute instanceof EmbeddedAttribute || embeddableNames.contains(attribute.getType())) {
        this.attributeSaved = new EmbeddedAttribute();
    } else {
        this.attributeSaved = new ObjAttribute();
    }
    copyObjAttribute(attributeSaved, attribute);
    relTargets = new ArrayList<DbEntity>(attribute.getEntity().getDataMap().getDbEntities());
    /*
		 * Register auto-selection of the target
		 */
    view.getPathBrowser().addTreeSelectionListener(this);
    view.getAttributeName().setText(attribute.getName());
    if (attribute.getDbAttributePath() != null) {
        if (attribute.getDbAttributePath().contains(".")) {
            String path = attribute.getDbAttributePath();
            view.getCurrentPathLabel().setText(path.replace(".", " -> "));
        } else {
            view.getCurrentPathLabel().setText(attribute.getDbAttributePath());
        }
    } else {
        view.getCurrentPathLabel().setText("");
    }
    view.getSourceEntityLabel().setText(attribute.getEntity().getName());
    view.getTypeComboBox().setSelectedItem(attribute.getType());
    BindingBuilder builder = new BindingBuilder(getApplication().getBindingFactory(), this);
    builder.bindToAction(view.getCancelButton(), "closeAction()");
    builder.bindToAction(view.getSelectPathButton(), "setPath(true)");
    builder.bindToAction(view.getSaveButton(), "saveMapping()");
    /*
		 * set filter for ObjAttributePathBrowser
		 */
    if (view.getPathBrowser().getModel() == null) {
        Entity firstEntity = null;
        if (attribute.getDbAttribute() == null) {
            if (attribute.getParent() instanceof ObjEntity) {
                DbEntity dbEnt = ((ObjEntity) attribute.getParent()).getDbEntity();
                if (dbEnt != null) {
                    Collection<DbAttribute> attrib = dbEnt.getAttributes();
                    Collection<DbRelationship> rel = dbEnt.getRelationships();
                    if (attrib.size() > 0) {
                        Iterator<DbAttribute> iter = attrib.iterator();
                        firstEntity = iter.next().getEntity();
                    } else if (rel.size() > 0) {
                        Iterator<DbRelationship> iter = rel.iterator();
                        firstEntity = iter.next().getSourceEntity();
                    }
                }
            }
        } else {
            firstEntity = getFirstEntity();
        }
        if (firstEntity != null) {
            EntityTreeModel treeModel = new EntityTreeModel(firstEntity);
            treeModel.setFilter(new EntityTreeAttributeRelationshipFilter());
            view.getPathBrowser().setModel(treeModel);
        }
    }
    if (attribute.getDbAttribute() != null) {
        setSelectionPath();
    }
    view.getTypeComboBox().addItemListener(e -> {
        if (lastObjectType != null) {
            if (!lastObjectType.equals(e.getItemSelectable())) {
                if (embeddableNames.contains(e.getItemSelectable().getSelectedObjects()[0].toString())) {
                    if (attributeSaved instanceof ObjAttribute) {
                        EmbeddedAttribute copyAttrSaved = new EmbeddedAttribute();
                        copyObjAttribute(copyAttrSaved, attributeSaved);
                        attributeSaved = copyAttrSaved;
                    }
                } else {
                    if (attributeSaved instanceof EmbeddedAttribute) {
                        ObjAttribute copyAttrSaved = new ObjAttribute();
                        copyObjAttribute(copyAttrSaved, attributeSaved);
                        attributeSaved = copyAttrSaved;
                    }
                }
                attributeSaved.setType(e.getItemSelectable().getSelectedObjects()[0].toString());
                rebuildTable();
                setEnabledSaveButton();
            }
        }
    });
    view.getAttributeName().addKeyListener(new KeyListener() {

        public void keyPressed(KeyEvent e) {
            if (!view.getAttributeName().getText().equals(attribute.getName())) {
                setEnabledSaveButton();
            }
        }

        public void keyReleased(KeyEvent e) {
            if (!view.getAttributeName().getText().equals(attribute.getName())) {
                setEnabledSaveButton();
            }
        }

        public void keyTyped(KeyEvent e) {
        }
    });
    rebuildTable();
}
Also used : ObjEntity(org.apache.cayenne.map.ObjEntity) Entity(org.apache.cayenne.map.Entity) DbEntity(org.apache.cayenne.map.DbEntity) ObjAttribute(org.apache.cayenne.map.ObjAttribute) BindingBuilder(org.apache.cayenne.swing.BindingBuilder) DbAttribute(org.apache.cayenne.map.DbAttribute) EmbeddedAttribute(org.apache.cayenne.map.EmbeddedAttribute) DefaultComboBoxModel(javax.swing.DefaultComboBoxModel) KeyEvent(java.awt.event.KeyEvent) ObjEntity(org.apache.cayenne.map.ObjEntity) DbEntity(org.apache.cayenne.map.DbEntity) EntityTreeModel(org.apache.cayenne.modeler.util.EntityTreeModel) DbRelationship(org.apache.cayenne.map.DbRelationship) EntityTreeAttributeRelationshipFilter(org.apache.cayenne.modeler.util.EntityTreeAttributeRelationshipFilter) Iterator(java.util.Iterator) KeyListener(java.awt.event.KeyListener)

Example 27 with Entity

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

the class ObjRelationshipInfo method connectEnds.

// Connects last selected DbRelationship in the path to the
// last DbEntity, creating a dummy relationship if needed.
private void connectEnds() {
    Relationship last = null;
    int size = dbRelationships.size();
    if (size > 0) {
        last = dbRelationships.get(size - 1);
    }
    Entity target = getEndEntity();
    if (target != null && (last == null || last.getTargetEntity() != target)) {
        // try to connect automatically, if we can't use dummy connector
        Entity source = (last == null) ? getStartEntity() : last.getTargetEntity();
        if (source != null) {
            Relationship anyConnector = source != null ? source.getAnyRelationship(target) : null;
            if (anyConnector != null) {
                dbRelationships.add((DbRelationship) anyConnector);
            }
        }
    }
}
Also used : ObjEntity(org.apache.cayenne.map.ObjEntity) Entity(org.apache.cayenne.map.Entity) DbEntity(org.apache.cayenne.map.DbEntity) Relationship(org.apache.cayenne.map.Relationship) DbRelationship(org.apache.cayenne.map.DbRelationship) ObjRelationship(org.apache.cayenne.map.ObjRelationship)

Example 28 with Entity

use of org.apache.cayenne.map.Entity 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)

Example 29 with Entity

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

the class ProjectTreeView method entityAdded.

/**
 * Event handler for ObjEntity and DbEntity additions. Adds a tree node for the entity
 * and make it selected.
 */
protected void entityAdded(EntityEvent e) {
    Entity entity = e.getEntity();
    DefaultMutableTreeNode mapNode = getProjectModel().getNodeForObjectPath(new Object[] { e.getDomain() != null ? e.getDomain() : (DataChannelDescriptor) mediator.getProject().getRootNode(), e.getEntity().getDataMap() });
    if (mapNode == null) {
        return;
    }
    DefaultMutableTreeNode currentNode = new DefaultMutableTreeNode(entity, false);
    positionNode(mapNode, currentNode, Comparators.getDataMapChildrenComparator());
    showNode(currentNode);
}
Also used : ObjEntity(org.apache.cayenne.map.ObjEntity) Entity(org.apache.cayenne.map.Entity) DbEntity(org.apache.cayenne.map.DbEntity) DataChannelDescriptor(org.apache.cayenne.configuration.DataChannelDescriptor) DefaultMutableTreeNode(javax.swing.tree.DefaultMutableTreeNode)

Example 30 with Entity

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

the class CellRenderers method asString.

/**
 * Converts non-String Object used in renderers (currently CayenneMapEntry
 * instances only) to String
 *
 * @param obj Object to be converted
 * @param namespace the current namespace
 */
public static String asString(Object obj, MappingNamespace namespace) {
    if (obj instanceof CayenneMapEntry) {
        CayenneMapEntry mapObject = (CayenneMapEntry) obj;
        String label = mapObject.getName();
        if (mapObject instanceof Entity) {
            Entity entity = (Entity) mapObject;
            // for different namespace display its name
            DataMap dataMap = entity.getDataMap();
            if (dataMap != null && dataMap != namespace) {
                label += " (" + dataMap.getName() + ")";
            }
        }
        return label;
    } else if (obj instanceof DataMap) {
        return ((DataMap) obj).getName();
    }
    return obj == null ? null : String.valueOf(obj);
}
Also used : ObjEntity(org.apache.cayenne.map.ObjEntity) Entity(org.apache.cayenne.map.Entity) DbEntity(org.apache.cayenne.map.DbEntity) CayenneMapEntry(org.apache.cayenne.util.CayenneMapEntry) DataMap(org.apache.cayenne.map.DataMap)

Aggregations

Entity (org.apache.cayenne.map.Entity)38 DbEntity (org.apache.cayenne.map.DbEntity)24 ObjEntity (org.apache.cayenne.map.ObjEntity)23 DataMap (org.apache.cayenne.map.DataMap)10 DbRelationship (org.apache.cayenne.map.DbRelationship)9 DataChannelDescriptor (org.apache.cayenne.configuration.DataChannelDescriptor)6 DbAttribute (org.apache.cayenne.map.DbAttribute)6 Attribute (org.apache.cayenne.map.Attribute)5 ObjAttribute (org.apache.cayenne.map.ObjAttribute)5 QueryDescriptor (org.apache.cayenne.map.QueryDescriptor)5 Relationship (org.apache.cayenne.map.Relationship)5 EntityEvent (org.apache.cayenne.map.event.EntityEvent)5 EntityDisplayEvent (org.apache.cayenne.modeler.event.EntityDisplayEvent)5 Test (org.junit.Test)5 ArrayList (java.util.ArrayList)4 DataNodeDescriptor (org.apache.cayenne.configuration.DataNodeDescriptor)4 ObjRelationship (org.apache.cayenne.map.ObjRelationship)4 SelectQueryDescriptor (org.apache.cayenne.map.SelectQueryDescriptor)3 Collection (java.util.Collection)2 HashMap (java.util.HashMap)2