1 56 package org.objectstyle.cayenne.modeler.dialog.objentity; 57 58 import java.util.Collection ; 59 60 import org.apache.log4j.Logger; 61 import org.objectstyle.cayenne.map.DbEntity; 62 import org.objectstyle.cayenne.map.DbRelationship; 63 import org.objectstyle.cayenne.map.ObjRelationship; 64 import org.objectstyle.cayenne.map.event.RelationshipEvent; 65 import org.objectstyle.cayenne.modeler.Application; 66 import org.objectstyle.cayenne.modeler.ProjectController; 67 import org.objectstyle.cayenne.modeler.dialog.ResolveDbRelationshipDialog; 68 import org.objectstyle.cayenne.project.NamedObjectFactory; 69 import org.scopemvc.controller.basic.BasicController; 70 import org.scopemvc.core.Control; 71 import org.scopemvc.core.ControlException; 72 73 77 public class ObjRelationshipInfoController extends BasicController { 78 79 static final Logger logObj = Logger.getLogger(ObjRelationshipInfoController.class); 80 81 public static final String SAVE_CONTROL = "cayenne.modeler.mapObjRelationship.save.button"; 82 public static final String CANCEL_CONTROL = "cayenne.modeler.mapObjRelationship.cancel.button"; 83 public static final String NEW_TOONE_CONTROL = "cayenne.modeler.mapObjRelationship.newtoone.button"; 84 public static final String NEW_TOMANY_CONTROL = "cayenne.modeler.mapObjRelationship.newtomany.button"; 85 86 protected ProjectController mediator; 87 88 public ObjRelationshipInfoController(ProjectController mediator, 89 ObjRelationship relationship) { 90 91 this.mediator = mediator; 92 Collection objEntities = mediator.getCurrentDataMap().getNamespace().getObjEntities(); 93 ObjRelationshipInfoModel model = new ObjRelationshipInfoModel( 94 relationship, 95 objEntities); 96 setModel(model); 97 } 98 99 102 public void startup() { 103 setView(new ObjRelationshipInfoDialog()); 104 super.startup(); 105 } 106 107 protected void doHandleControl(Control control) throws ControlException { 108 if (control.matchesID(CANCEL_CONTROL)) { 109 shutdown(); 110 } 111 else if (control.matchesID(SAVE_CONTROL)) { 112 saveMapping(); 113 } 114 else if (control.matchesID(NEW_TOONE_CONTROL)) { 115 createRelationship(false); 116 } 117 else if (control.matchesID(NEW_TOMANY_CONTROL)) { 118 createRelationship(true); 119 } 120 } 121 122 protected void saveMapping() { 123 ObjRelationshipInfoModel model = (ObjRelationshipInfoModel) getModel(); 124 125 if (model.savePath()) { 126 mediator.fireObjRelationshipEvent(new RelationshipEvent(Application 127 .getFrame(), model.getRelationship(), model 128 .getRelationship() 129 .getSourceEntity())); 130 } 131 shutdown(); 132 } 133 134 139 protected void createRelationship(boolean toMany) { 140 cancelEditing(); 141 142 ObjRelationshipInfoModel model = (ObjRelationshipInfoModel) getModel(); 143 DbEntity source = model.getStartEntity(); 144 DbEntity target = model.getEndEntity(); 145 146 EntityRelationshipsModel selectedPathComponent = model.getSelectedPathComponent(); 147 if (selectedPathComponent != null) { 148 source = (DbEntity) selectedPathComponent.getSourceEntity(); 149 } 150 151 DbRelationship dbRelationship = (DbRelationship) NamedObjectFactory 152 .createRelationship(source, target, toMany); 153 dbRelationship.setSourceEntity(source); 155 dbRelationship.setTargetEntity(target); 156 dbRelationship.setToMany(toMany); 157 source.addRelationship(dbRelationship); 158 159 ResolveDbRelationshipDialog dialog = new ResolveDbRelationshipDialog( 162 dbRelationship); 163 164 dialog.setVisible(true); 165 if (dialog.isCancelPressed()) { 166 source.removeRelationship(dbRelationship.getName()); 167 } 168 else { 169 if (selectedPathComponent == null) { 170 selectedPathComponent = (EntityRelationshipsModel) model 171 .getDbRelationshipPath() 172 .get(0); 173 model.setSelectedPathComponent(selectedPathComponent); 174 } 175 176 selectedPathComponent.setRelationshipName(dbRelationship.getName()); 177 } 178 179 dialog.dispose(); 180 } 181 182 protected void cancelEditing() { 183 ((ObjRelationshipInfoDialog) getView()).cancelTableEditing(); 184 } 185 } | Popular Tags |