[Jiemamy-notify:1652] commit [2851] 外部キーが作成できなかった件に対応。

Zurück zum Archiv-Index

svnno****@sourc***** svnno****@sourc*****
2009年 3月 9日 (月) 21:17:42 JST


Revision: 2851
          http://svn.sourceforge.jp/view?root=jiemamy&view=rev&rev=2851
Author:   daisuke_m
Date:     2009-03-09 21:17:42 +0900 (Mon, 09 Mar 2009)

Log Message:
-----------
外部キーが作成できなかった件に対応。

Modified Paths:
--------------
    artemis/trunk/jiemamy-view/src/main/java/org/jiemamy/facade/JiemamyViewFacadeImpl.java
    artemis/trunk/jiemamy-view/src/main/java/org/jiemamy/model/connection/ConnectionAdapterImpl.java
    vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/CreateConnectionCommand.java
    vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/dialog/foreignkey/ForeignKeyEditDialog.java


-------------- next part --------------
Modified: artemis/trunk/jiemamy-view/src/main/java/org/jiemamy/facade/JiemamyViewFacadeImpl.java
===================================================================
--- artemis/trunk/jiemamy-view/src/main/java/org/jiemamy/facade/JiemamyViewFacadeImpl.java	2009-03-07 17:00:17 UTC (rev 2850)
+++ artemis/trunk/jiemamy-view/src/main/java/org/jiemamy/facade/JiemamyViewFacadeImpl.java	2009-03-09 12:17:42 UTC (rev 2851)
@@ -155,27 +155,32 @@
 	
 	public void createConnection(int diagramIndex, ConnectionAdapter connectionAdapter, TableModel sourceTable,
 			TableModel targetTable) {
-		ForeignKey foreignKey = connectionAdapter.unwrap();
-		Jiemamy jiemamy = foreignKey.getJiemamy();
-		ReferenceResolver referenceResolver = jiemamy.getReferenceResolver();
-		
-		LocalKeyConstraint key = TableUtil.getKey(targetTable);
-		
-		List<ColumnModel> sourceColumns = TableUtil.getColumns(sourceTable);
-		
-		for (ColumnRef columnRef : key.getKeyColumns()) {
-			ColumnModel keyColumn = sourceColumns.get(0);
-			ColumnModel refColumn = referenceResolver.resolve(columnRef);
+		if (connectionAdapter.unwrap() != null) {
+			ForeignKey foreignKey = connectionAdapter.unwrap();
+			Jiemamy jiemamy = foreignKey.getJiemamy();
+			ReferenceResolver referenceResolver = jiemamy.getReferenceResolver();
 			
-			Command command = new AddColumnToColumnRefListCommand(foreignKey, foreignKey.getKeyColumns(), keyColumn);
-			command.execute(commandProcessor);
-			undoStack.push(command.getNegateCommand());
-			command = new AddColumnToColumnRefListCommand(foreignKey, foreignKey.getReferenceColumns(), refColumn);
-			command.execute(commandProcessor);
-			undoStack.push(command.getNegateCommand());
+			LocalKeyConstraint key = TableUtil.getKey(targetTable);
+			
+			List<ColumnModel> sourceColumns = TableUtil.getColumns(sourceTable);
+			
+			for (ColumnRef columnRef : key.getKeyColumns()) {
+				ColumnModel keyColumn = sourceColumns.get(0);
+				ColumnModel refColumn = referenceResolver.resolve(columnRef);
+				
+				Command command =
+						new AddColumnToColumnRefListCommand(foreignKey, foreignKey.getKeyColumns(), keyColumn);
+				command.execute(commandProcessor);
+				undoStack.push(command.getNegateCommand());
+				command = new AddColumnToColumnRefListCommand(foreignKey, foreignKey.getReferenceColumns(), refColumn);
+				command.execute(commandProcessor);
+				undoStack.push(command.getNegateCommand());
+			}
+			
+			super.addForeignKey(sourceTable, foreignKey);
+		} else {
+			// TODO 非wrapping connectionの処理
 		}
-		
-		super.addForeignKey(sourceTable, foreignKey);
 		addConnectionProfile(diagramIndex, connectionAdapter, jiemamy.getFactory().newModel(ConnectionProfile.class));
 		redoStack.clear();
 	}

Modified: artemis/trunk/jiemamy-view/src/main/java/org/jiemamy/model/connection/ConnectionAdapterImpl.java
===================================================================
--- artemis/trunk/jiemamy-view/src/main/java/org/jiemamy/model/connection/ConnectionAdapterImpl.java	2009-03-07 17:00:17 UTC (rev 2850)
+++ artemis/trunk/jiemamy-view/src/main/java/org/jiemamy/model/connection/ConnectionAdapterImpl.java	2009-03-09 12:17:42 UTC (rev 2851)
@@ -53,7 +53,7 @@
 	public NodeAdapter getSource() {
 		List<ColumnRef> keyColumns = coreForeignKey.getKeyColumns();
 		if (keyColumns.size() == 0) {
-			throw new ModelConsistenceException();
+			throw new ModelConsistenceException("foreignKey has no key columns");
 		}
 		ColumnRef columnRef = keyColumns.get(0);
 		ColumnModel columnModel = columnRef.getJiemamy().getReferenceResolver().resolve(columnRef);
@@ -63,7 +63,7 @@
 	public NodeAdapter getTarget() {
 		List<ColumnRef> referenceColumns = coreForeignKey.getReferenceColumns();
 		if (referenceColumns.size() == 0) {
-			throw new ModelConsistenceException();
+			throw new ModelConsistenceException("foreignKey has no reference columns");
 		}
 		ColumnRef columnRef = referenceColumns.get(0);
 		ColumnModel columnModel = columnRef.getJiemamy().getReferenceResolver().resolve(columnRef);

Modified: vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/CreateConnectionCommand.java
===================================================================
--- vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/CreateConnectionCommand.java	2009-03-07 17:00:17 UTC (rev 2850)
+++ vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/CreateConnectionCommand.java	2009-03-09 12:17:42 UTC (rev 2851)
@@ -23,6 +23,8 @@
 import org.eclipse.draw2d.geometry.Dimension;
 import org.eclipse.gef.commands.Command;
 import org.seasar.eclipse.common.util.LogUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import org.jiemamy.Migration;
 import org.jiemamy.eclipse.JiemamyUIPlugin;
@@ -37,6 +39,7 @@
 import org.jiemamy.model.entity.ViewModel;
 import org.jiemamy.model.node.NodeAdapter;
 import org.jiemamy.model.node.StickyModel;
+import org.jiemamy.utils.LogMarker;
 import org.jiemamy.utils.model.TableUtil;
 
 /**
@@ -46,6 +49,8 @@
  */
 public class CreateConnectionCommand extends Command {
 	
+	private static Logger logger = LoggerFactory.getLogger(CreateConnectionCommand.class);
+	
 	/** 接続元ノード */
 	private NodeAdapter source;
 	
@@ -72,15 +77,24 @@
 	 */
 	public CreateConnectionCommand(RootModel rootModel, ConnectionAdapter connection) {
 		this.connection = connection;
-		source = connection.getSource();
-		target = connection.getTarget();
 		
 		jiemamyFacade = new JiemamyViewFacadeImpl(rootModel.getJiemamy());
+		logger.debug(LogMarker.LIFECYCLE, "construct");
 	}
 	
 	@Override
 	public boolean canExecute() {
+		logger.debug(LogMarker.LIFECYCLE, "canExecute");
+//		try {
+//			source = connection.getSource();
+//			target = connection.getTarget();
+//		} catch (ModelConsistenceException e) {
+//			logger.debug("ModelConsistenceException");
+//			return false;
+//		}
+		
 		if (source == null || target == null) {
+			logger.debug("source or target is null: " + source + " " + target);
 			return false;
 		}
 		
@@ -108,7 +122,7 @@
 			return false;
 		}
 		
-		// THINK 違うキー同士で参照してる可能性は?ど
+		// THINK 違うキー同士で参照してる可能性は?
 //		if (connection.unwrap() != null) {
 //			// 循環参照の禁止(ターゲットの親に自分がいたら、参照不可)
 //			
@@ -124,6 +138,7 @@
 	
 	@Override
 	public void execute() {
+		logger.debug(LogMarker.LIFECYCLE, "execute");
 		if (connection.unwrap() != null) {
 			TableModel sourceTable = (TableModel) source.unwrap();
 			TableModel targetTable = (TableModel) target.unwrap();
@@ -153,6 +168,8 @@
 	 * @param source 接続元ノード
 	 */
 	public void setSource(NodeAdapter source) {
+		logger.debug(LogMarker.LIFECYCLE, "setSource");
+		logger.debug(LogMarker.DETAIL, "source = " + source);
 		this.source = source;
 //		connection.setSource(source);
 	}
@@ -163,6 +180,8 @@
 	 * @param target 接続先ノード
 	 */
 	public void setTarget(NodeAdapter target) {
+		logger.debug(LogMarker.LIFECYCLE, "setTarget");
+		logger.debug(LogMarker.DETAIL, "target = " + target);
 		this.target = target;
 //		connection.setTarget(target);
 	}

Modified: vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/dialog/foreignkey/ForeignKeyEditDialog.java
===================================================================
--- vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/dialog/foreignkey/ForeignKeyEditDialog.java	2009-03-07 17:00:17 UTC (rev 2850)
+++ vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/dialog/foreignkey/ForeignKeyEditDialog.java	2009-03-09 12:17:42 UTC (rev 2851)
@@ -110,8 +110,6 @@
 		
 		keyColumnCombos = new ArrayList<Combo>(referenceKeys.size());
 		referenceColumnLabels = new ArrayList<Label>(referenceKeys.size());
-		
-		getShell().pack();
 	}
 	
 	@Override



Jiemamy-notify メーリングリストの案内
Zurück zum Archiv-Index