Search in sources :

Example 46 with DbJoin

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

the class ResolveDbRelationshipDialog method save.

private void save() {
    stopEditing();
    DbJoinTableModel model = (DbJoinTableModel) table.getModel();
    boolean updatingReverse = model.getObjectList().size() > 0;
    // handle name update
    handleNameUpdate(relationship, name.getText().trim());
    model.commit();
    // maybe this is no longer valid
    if (relationship.isToDependentPK() && !relationship.isValidForDepPk()) {
        relationship.setToDependentPK(false);
    }
    // Don't create reverse with no joins - makes no sense...
    if (updatingReverse) {
        // If didn't find anything, create reverseDbRel
        if (reverseRelationship == null) {
            reverseRelationship = new DbRelationship();
            reverseRelationship.setName(NameBuilder.builder(reverseRelationship, relationship.getTargetEntity()).baseName(reverseName.getText().trim()).name());
            reverseRelationship.setSourceEntity(relationship.getTargetEntity());
            reverseRelationship.setTargetEntityName(relationship.getSourceEntity());
            reverseRelationship.setToMany(!relationship.isToMany());
            relationship.getTargetEntity().addRelationship(reverseRelationship);
            // this is needed to update entity view...
            if (relationship.getSourceEntity() == relationship.getTargetEntity()) {
                getMediator().fireDbRelationshipEvent(new RelationshipEvent(this, reverseRelationship, reverseRelationship.getSourceEntity(), MapEvent.ADD));
            }
        } else {
            handleNameUpdate(reverseRelationship, reverseName.getText().trim());
        }
        Collection<DbJoin> reverseJoins = getReverseJoins();
        reverseRelationship.setJoins(reverseJoins);
        // check if joins map to a primary key of this entity
        if (!relationship.isToDependentPK() && reverseRelationship.isValidForDepPk()) {
            reverseRelationship.setToDependentPK(true);
        }
    }
    Application.getInstance().getUndoManager().addEdit(undo);
    getMediator().fireDbRelationshipEvent(new RelationshipEvent(this, relationship, relationship.getSourceEntity()));
}
Also used : DbRelationship(org.apache.cayenne.map.DbRelationship) DbJoin(org.apache.cayenne.map.DbJoin) RelationshipEvent(org.apache.cayenne.map.event.RelationshipEvent)

Example 47 with DbJoin

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

the class ResolveDbRelationshipDialog method initController.

private void initController() {
    addButton.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {
            DbJoinTableModel model = (DbJoinTableModel) table.getModel();
            DbJoin join = new DbJoin(relationship);
            model.addRow(join);
            undo.addDbJoinAddUndo(join);
            table.select(model.getRowCount() - 1);
        }
    });
    removeButton.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {
            DbJoinTableModel model = (DbJoinTableModel) table.getModel();
            stopEditing();
            int row = table.getSelectedRow();
            DbJoin join = model.getJoin(row);
            undo.addDbJoinRemoveUndo(join);
            model.removeRow(join);
        }
    });
    saveButton.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {
            cancelPressed = false;
            if (editable) {
                save();
            }
            dispose();
        }
    });
    cancelButton.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {
            cancelPressed = true;
            setVisible(false);
        }
    });
}
Also used : ActionListener(java.awt.event.ActionListener) ActionEvent(java.awt.event.ActionEvent) DbJoin(org.apache.cayenne.map.DbJoin)

Example 48 with DbJoin

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

the class ResolveDbRelationshipDialog method getReverseJoins.

private Collection<DbJoin> getReverseJoins() {
    Collection<DbJoin> joins = relationship.getJoins();
    if ((joins == null) || (joins.size() == 0)) {
        return Collections.emptyList();
    }
    List<DbJoin> reverseJoins = new ArrayList<>(joins.size());
    // and put them to the reverse list.
    for (DbJoin pair : joins) {
        DbJoin reverseJoin = pair.createReverseJoin();
        // since reverse relationship is not yet initialized,
        // reverse join will not have it set automatically
        reverseJoin.setRelationship(reverseRelationship);
        reverseJoins.add(reverseJoin);
    }
    return reverseJoins;
}
Also used : ArrayList(java.util.ArrayList) DbJoin(org.apache.cayenne.map.DbJoin)

Example 49 with DbJoin

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

the class InferRelationshipsController method generateAction.

public void generateAction() {
    ProjectController mediator = application.getFrameController().getProjectController();
    InferRelationshipsUndoableEdit undoableEdit = new InferRelationshipsUndoableEdit();
    for (InferredRelationship temp : selectedEntities) {
        DbRelationship rel = new DbRelationship(uniqueRelName(temp.getSource(), temp.getName()));
        RelationshipEvent e = new RelationshipEvent(Application.getFrame(), rel, temp.getSource(), MapEvent.ADD);
        mediator.fireDbRelationshipEvent(e);
        rel.setSourceEntity(temp.getSource());
        rel.setTargetEntityName(temp.getTarget());
        DbJoin join = new DbJoin(rel, temp.getJoinSource().getName(), temp.getJoinTarget().getName());
        rel.addJoin(join);
        rel.setToMany(temp.isToMany());
        temp.getSource().addRelationship(rel);
        undoableEdit.addEdit(new CreateRelationshipUndoableEdit(temp.getSource(), new DbRelationship[] { rel }));
    }
    JOptionPane.showMessageDialog(this.getView(), getSelectedEntitiesSize() + " relationships generated");
    view.dispose();
}
Also used : DbRelationship(org.apache.cayenne.map.DbRelationship) CreateRelationshipUndoableEdit(org.apache.cayenne.modeler.undo.CreateRelationshipUndoableEdit) DbJoin(org.apache.cayenne.map.DbJoin) ProjectController(org.apache.cayenne.modeler.ProjectController) InferRelationshipsUndoableEdit(org.apache.cayenne.modeler.undo.InferRelationshipsUndoableEdit) RelationshipEvent(org.apache.cayenne.map.event.RelationshipEvent)

Aggregations

DbJoin (org.apache.cayenne.map.DbJoin)49 DbRelationship (org.apache.cayenne.map.DbRelationship)35 DbEntity (org.apache.cayenne.map.DbEntity)24 DbAttribute (org.apache.cayenne.map.DbAttribute)18 ObjRelationship (org.apache.cayenne.map.ObjRelationship)14 ObjAttribute (org.apache.cayenne.map.ObjAttribute)12 ObjEntity (org.apache.cayenne.map.ObjEntity)11 ClassDescriptor (org.apache.cayenne.reflect.ClassDescriptor)9 CayenneRuntimeException (org.apache.cayenne.CayenneRuntimeException)8 ArrayList (java.util.ArrayList)7 AttributeProperty (org.apache.cayenne.reflect.AttributeProperty)7 PropertyVisitor (org.apache.cayenne.reflect.PropertyVisitor)7 ToManyProperty (org.apache.cayenne.reflect.ToManyProperty)7 ToOneProperty (org.apache.cayenne.reflect.ToOneProperty)7 HashMap (java.util.HashMap)6 Test (org.junit.Test)6 QuotingStrategy (org.apache.cayenne.dba.QuotingStrategy)5 EJBQLException (org.apache.cayenne.ejbql.EJBQLException)5 HashSet (java.util.HashSet)4 List (java.util.List)3