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