Search in sources :

Example 6 with EmbeddedAttribute

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

the class PackageUpdateController method updatePackage.

protected void updatePackage() {
    boolean doAll = isAllEntities();
    Map<String, String> oldNameEmbeddableToNewName = new HashMap<>();
    // Create local copy to escape ConcurrentModificationException
    Collection<Embeddable> embeddables = new ArrayList<>(dataMap.getEmbeddables());
    for (Embeddable embeddable : embeddables) {
        String oldName = embeddable.getClassName();
        Pattern p = Pattern.compile("[.]");
        String[] tokens = p.split(oldName);
        String className = tokens[tokens.length - 1];
        if (doAll || Util.isEmptyString(oldName) || oldName.indexOf('.') < 0) {
            EmbeddableEvent e = new EmbeddableEvent(this, embeddable, embeddable.getClassName());
            String newClassName = getNameWithDefaultPackage(className);
            oldNameEmbeddableToNewName.put(oldName, newClassName);
            embeddable.setClassName(newClassName);
            mediator.fireEmbeddableEvent(e, mediator.getCurrentDataMap());
        }
    }
    for (ObjEntity entity : dataMap.getObjEntities()) {
        String oldName = getClassName(entity);
        if (doAll || Util.isEmptyString(oldName) || oldName.indexOf('.') < 0) {
            String className = extractClassName(Util.isEmptyString(oldName) ? entity.getName() : oldName);
            setClassName(entity, getNameWithDefaultPackage(className));
        }
        for (ObjAttribute attribute : entity.getAttributes()) {
            if (attribute instanceof EmbeddedAttribute) {
                if (oldNameEmbeddableToNewName.size() > 0 && oldNameEmbeddableToNewName.containsKey(attribute.getType())) {
                    attribute.setType(oldNameEmbeddableToNewName.get(attribute.getType()));
                    AttributeEvent ev = new AttributeEvent(this, attribute, entity);
                    mediator.fireObjAttributeEvent(ev);
                }
            }
        }
    }
    view.dispose();
}
Also used : Pattern(java.util.regex.Pattern) EmbeddableEvent(org.apache.cayenne.map.event.EmbeddableEvent) ObjAttribute(org.apache.cayenne.map.ObjAttribute) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) EmbeddedAttribute(org.apache.cayenne.map.EmbeddedAttribute) AttributeEvent(org.apache.cayenne.map.event.AttributeEvent) Embeddable(org.apache.cayenne.map.Embeddable) ObjEntity(org.apache.cayenne.map.ObjEntity)

Example 7 with EmbeddedAttribute

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

the class ObjAttributeInfoDialog method changeAttributeObject.

private void changeAttributeObject() {
    if (attributeSaved instanceof EmbeddedAttribute && embeddableModel.isAttributeOverrideChange()) {
        Map<String, String> overrides = ((EmbeddedAttribute) attributeSaved).getAttributeOverrides();
        Map<String, String> currentOverrAttr = getCurrentOverrideAttribute();
        compareAndSetOverrideInEmbeddedAttribute(attributeSaved, overrides, currentOverrAttr);
    }
    if (attributeSaved instanceof EmbeddedAttribute) {
        attributeSaved.setDbAttributePath(null);
        model.setUpdatedValueAt(attributeSaved.getDbAttributePath(), row, 3);
    }
    model.getEntity().removeAttribute(attribute.getName());
    model.getEntity().addAttribute(attributeSaved);
    mediator.fireObjEntityEvent(new EntityEvent(this, model.getEntity(), MapEvent.CHANGE));
    EntityDisplayEvent event = new EntityDisplayEvent(this, mediator.getCurrentObjEntity(), mediator.getCurrentDataMap(), (DataChannelDescriptor) mediator.getProject().getRootNode());
    mediator.fireObjEntityDisplayEvent(event);
    mediator.fireObjAttributeEvent(new AttributeEvent(this, attributeSaved, model.getEntity(), MapEvent.CHANGE));
    AttributeDisplayEvent eventAttr = new AttributeDisplayEvent(this, attributeSaved, mediator.getCurrentObjEntity(), mediator.getCurrentDataMap(), (DataChannelDescriptor) mediator.getProject().getRootNode());
    mediator.fireObjAttributeDisplayEvent(eventAttr);
}
Also used : AttributeDisplayEvent(org.apache.cayenne.modeler.event.AttributeDisplayEvent) EntityDisplayEvent(org.apache.cayenne.modeler.event.EntityDisplayEvent) EntityEvent(org.apache.cayenne.map.event.EntityEvent) EmbeddedAttribute(org.apache.cayenne.map.EmbeddedAttribute) AttributeEvent(org.apache.cayenne.map.event.AttributeEvent)

Example 8 with EmbeddedAttribute

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

Aggregations

EmbeddedAttribute (org.apache.cayenne.map.EmbeddedAttribute)8 ObjAttribute (org.apache.cayenne.map.ObjAttribute)5 ObjEntity (org.apache.cayenne.map.ObjEntity)4 DbAttribute (org.apache.cayenne.map.DbAttribute)3 DbRelationship (org.apache.cayenne.map.DbRelationship)3 AttributeEvent (org.apache.cayenne.map.event.AttributeEvent)3 ObjRelationship (org.apache.cayenne.map.ObjRelationship)2 EntityEvent (org.apache.cayenne.map.event.EntityEvent)2 AttributeDisplayEvent (org.apache.cayenne.modeler.event.AttributeDisplayEvent)2 EntityDisplayEvent (org.apache.cayenne.modeler.event.EntityDisplayEvent)2 KeyEvent (java.awt.event.KeyEvent)1 KeyListener (java.awt.event.KeyListener)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 Iterator (java.util.Iterator)1 Pattern (java.util.regex.Pattern)1 DefaultComboBoxModel (javax.swing.DefaultComboBoxModel)1 TreePath (javax.swing.tree.TreePath)1 DataChannelDescriptor (org.apache.cayenne.configuration.DataChannelDescriptor)1 DbEntity (org.apache.cayenne.map.DbEntity)1