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()));
}
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);
}
});
}
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;
}
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();
}
Aggregations