svnno****@sourc*****
svnno****@sourc*****
2009年 3月 17日 (火) 03:29:38 JST
Revision: 2886 http://svn.sourceforge.jp/view?root=jiemamy&view=rev&rev=2886 Author: daisuke_m Date: 2009-03-17 03:29:38 +0900 (Tue, 17 Mar 2009) Log Message: ----------- 外部キー編集ダイアログからの操作をファサード経由に変更。 Modified Paths: -------------- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/editcommand/CommandProcessorImpl.java artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/facade/JiemamyFacadeImpl.java 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/table/TableEditDialogLocalKeyTab.java zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/facade/JiemamyFacade.java Added Paths: ----------- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/editcommand/impl/UpdateForeignKeyMappingCommand.java Removed Paths: ------------- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/editcommand/impl/UpdateKeyColumnCommand.java -------------- next part -------------- Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/editcommand/CommandProcessorImpl.java =================================================================== --- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/editcommand/CommandProcessorImpl.java 2009-03-16 18:29:14 UTC (rev 2885) +++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/editcommand/CommandProcessorImpl.java 2009-03-16 18:29:38 UTC (rev 2886) @@ -44,7 +44,7 @@ import org.jiemamy.editcommand.impl.RemoveDomainFromRootCommand; import org.jiemamy.editcommand.impl.RemoveEntityFromRootCommand; import org.jiemamy.editcommand.impl.SwapListElementCommand; -import org.jiemamy.editcommand.impl.UpdateKeyColumnCommand; +import org.jiemamy.editcommand.impl.UpdateForeignKeyMappingCommand; import org.jiemamy.exception.JiemamyRuntimeException; import org.jiemamy.exception.UnexpectedConditionError; import org.jiemamy.model.JiemamyElement; @@ -53,7 +53,7 @@ import org.jiemamy.model.attribute.ColumnModel; import org.jiemamy.model.attribute.ColumnRef; import org.jiemamy.model.attribute.ColumnRefImpl; -import org.jiemamy.model.attribute.constraint.KeyConstraint; +import org.jiemamy.model.attribute.constraint.ForeignKey; import org.jiemamy.model.dataset.DataSetModel; import org.jiemamy.model.datatype.DomainModel; import org.jiemamy.model.entity.EntityModel; @@ -247,9 +247,12 @@ * * @param command コマンド */ - public void process(UpdateKeyColumnCommand command) { - KeyConstraint keyConstraint = command.getKeyConstraint(); - keyConstraint.getKeyColumns().set(command.getIndex(), command.getNewRef()); + public void process(UpdateForeignKeyMappingCommand command) { + ForeignKey foreignKey = command.getForeignKey(); + foreignKey.getKeyColumns().clear(); + foreignKey.getKeyColumns().addAll(command.getNewKeyColumns()); + foreignKey.getReferenceColumns().clear(); + foreignKey.getReferenceColumns().addAll(command.getNewReferenceColumns()); // 面倒だけど、全部のprocessメソッドに入れる(Interceptorで手を抜きたい)。 eventBroker.fireCommandProcessed(command); Copied: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/editcommand/impl/UpdateForeignKeyMappingCommand.java (from rev 2880, artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/editcommand/impl/UpdateKeyColumnCommand.java) =================================================================== --- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/editcommand/impl/UpdateForeignKeyMappingCommand.java (rev 0) +++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/editcommand/impl/UpdateForeignKeyMappingCommand.java 2009-03-16 18:29:38 UTC (rev 2886) @@ -0,0 +1,95 @@ +/* + * Copyright 2007-2009 Jiemamy Project and the Others. + * Created on 2009/03/16 + * + * This file is part of Jiemamy. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +package org.jiemamy.editcommand.impl; + +import java.util.List; + +import org.jiemamy.editcommand.Command; +import org.jiemamy.model.JiemamyElement; +import org.jiemamy.model.attribute.ColumnRef; +import org.jiemamy.model.attribute.constraint.ForeignKey; +import org.jiemamy.utils.CollectionsUtil; + +/** + * リスト要素の入れ替えを行うEDITコマンドクラス。 + * + * @author daisuke + */ +public class UpdateForeignKeyMappingCommand extends AbstractCommand { + + private final ForeignKey foreignKey; + + private final List<ColumnRef> newKeyColumns; + + private final List<ColumnRef> newReferenceColumns; + + private final List<ColumnRef> oldKeyColumns; + + private final List<ColumnRef> oldReferenceColumns; + + + /** + * インスタンスを生成する。 + * + * @param foreignKey + * @param newKeyColumns + * @param newReferenceColumns + */ + public UpdateForeignKeyMappingCommand(ForeignKey foreignKey, List<ColumnRef> newKeyColumns, + List<ColumnRef> newReferenceColumns) { + this.foreignKey = foreignKey; + this.newKeyColumns = newKeyColumns; + this.newReferenceColumns = newReferenceColumns; + oldKeyColumns = CollectionsUtil.newArrayList(foreignKey.getKeyColumns()); + oldReferenceColumns = CollectionsUtil.newArrayList(foreignKey.getReferenceColumns()); + } + + /** + * TODO for daisuke + * + * @return + */ + public ForeignKey getForeignKey() { + return foreignKey; + } + + public Command getNegateCommand() { + return new UpdateForeignKeyMappingCommand(foreignKey, oldKeyColumns, oldReferenceColumns); + } + + /** + * TODO for daisuke + * @return the newKeyColumns + */ + public List<ColumnRef> getNewKeyColumns() { + return newKeyColumns; + } + + /** + * TODO for daisuke + * @return the newReferenceColumns + */ + public List<ColumnRef> getNewReferenceColumns() { + return newReferenceColumns; + } + + public JiemamyElement getTarget() { + return foreignKey; + } +} Property changes on: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/editcommand/impl/UpdateForeignKeyMappingCommand.java ___________________________________________________________________ Added: svn:mime-type + text/plain Deleted: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/editcommand/impl/UpdateKeyColumnCommand.java =================================================================== --- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/editcommand/impl/UpdateKeyColumnCommand.java 2009-03-16 18:29:14 UTC (rev 2885) +++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/editcommand/impl/UpdateKeyColumnCommand.java 2009-03-16 18:29:38 UTC (rev 2886) @@ -1,102 +0,0 @@ -/* - * Copyright 2007-2009 Jiemamy Project and the Others. - * Created on 2009/03/16 - * - * This file is part of Jiemamy. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, - * either express or implied. See the License for the specific language - * governing permissions and limitations under the License. - */ -package org.jiemamy.editcommand.impl; - -import org.jiemamy.editcommand.Command; -import org.jiemamy.model.JiemamyElement; -import org.jiemamy.model.attribute.ColumnModel; -import org.jiemamy.model.attribute.ColumnRef; -import org.jiemamy.model.attribute.constraint.KeyConstraint; - -/** - * リスト要素の入れ替えを行うEDITコマンドクラス。 - * - * @author daisuke - */ -public class UpdateKeyColumnCommand extends AbstractCommand { - - private final KeyConstraint keyConstraint; - - private final int index; - - private final ColumnRef newRef; - - private final ColumnRef oldRef; - - - /** - * インスタンスを生成する。 - * - * @param keyConstraint - * @param index - * @param columnModel - */ - public UpdateKeyColumnCommand(KeyConstraint keyConstraint, int index, ColumnModel columnModel) { - this.keyConstraint = keyConstraint; - this.index = index; - newRef = keyConstraint.getJiemamy().getFactory().newReference(columnModel); - oldRef = keyConstraint.getKeyColumns().get(index); - } - - /** - * インスタンスを生成する。 - * - * @param keyConstraint - * @param index - * @param newRef - */ - public UpdateKeyColumnCommand(KeyConstraint keyConstraint, int index, ColumnRef newRef) { - this.keyConstraint = keyConstraint; - this.index = index; - this.newRef = newRef; - oldRef = keyConstraint.getKeyColumns().get(index); - } - - /** - * TODO for daisuke - * @return the index - */ - public int getIndex() { - return index; - } - - /** - * TODO for daisuke - * @return the keyConstraint - */ - public KeyConstraint getKeyConstraint() { - return keyConstraint; - } - - public Command getNegateCommand() { - return new UpdateKeyColumnCommand(keyConstraint, index, oldRef); - } - - /** - * TODO for daisuke - * @return the newRef - */ - public ColumnRef getNewRef() { - return newRef; - } - - public JiemamyElement getTarget() { - return keyConstraint; - } -} Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/facade/JiemamyFacadeImpl.java =================================================================== --- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/facade/JiemamyFacadeImpl.java 2009-03-16 18:29:14 UTC (rev 2885) +++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/facade/JiemamyFacadeImpl.java 2009-03-16 18:29:38 UTC (rev 2886) @@ -44,10 +44,11 @@ import org.jiemamy.editcommand.impl.RemoveIndexColumnCommand; import org.jiemamy.editcommand.impl.RemoveIndexCommand; import org.jiemamy.editcommand.impl.SwapListElementCommand; -import org.jiemamy.editcommand.impl.UpdateKeyColumnCommand; +import org.jiemamy.editcommand.impl.UpdateForeignKeyMappingCommand; import org.jiemamy.model.JiemamyElement; import org.jiemamy.model.attribute.AttributeModel; import org.jiemamy.model.attribute.ColumnModel; +import org.jiemamy.model.attribute.ColumnRef; import org.jiemamy.model.attribute.constraint.ForeignKey; import org.jiemamy.model.attribute.constraint.KeyConstraint; import org.jiemamy.model.dataset.DataSetModel; @@ -287,8 +288,11 @@ undoStack.push(command.getNegateCommand()); } - public void updateKeyColumn(ForeignKey foreignKey, int index, ColumnModel columnModel) { - Command command = new UpdateKeyColumnCommand(foreignKey, index, columnModel); + public void updateForeignKeyMapping(ForeignKey foreignKey, List<ColumnRef> keyColumns, + List<ColumnRef> referenceColumns) { + Validate.isTrue(keyColumns.size() == referenceColumns.size()); + + Command command = new UpdateForeignKeyMappingCommand(foreignKey, keyColumns, referenceColumns); command.execute(getCommandProcessor()); undoStack.push(command.getNegateCommand()); } 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-16 18:29:14 UTC (rev 2885) +++ vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/dialog/foreignkey/ForeignKeyEditDialog.java 2009-03-16 18:29:38 UTC (rev 2886) @@ -187,7 +187,11 @@ @Override protected boolean canExecuteOk() { - // TODO Auto-generated method stub + for (Combo combo : keyColumnCombos) { + if (combo.getSelectionIndex() == -1) { + return false; + } + } return super.canExecuteOk(); } @@ -350,24 +354,19 @@ int selectionIndex = cmbReferenceKey.getSelectionIndex(); LocalKeyConstraint referenceKeyConstraint = referenceKeys.get(selectionIndex); - // TODO facade経由で操作 - foreignKey.getReferenceColumns().clear(); + List<ColumnRef> newReferenceColumns = CollectionsUtil.newArrayList(); for (ColumnRef referenceColumnRef : referenceKeyConstraint.getKeyColumns()) { - // TODO facade経由で操作 - foreignKey.getReferenceColumns().add(new ColumnRefImpl(jiemamy, referenceColumnRef.getReferenceId())); + newReferenceColumns.add(new ColumnRefImpl(jiemamy, referenceColumnRef.getReferenceId())); } - // TODO facade経由で操作 - foreignKey.getKeyColumns().clear(); + List<ColumnRef> newKeyColumns = CollectionsUtil.newArrayList(); for (int i = 0; i < keyColumnCombos.size(); i++) { int index = keyColumnCombos.get(i).getSelectionIndex(); - if (index == -1) { - continue; - } ColumnModel keyColumn = sourceColumns.get(index); - // TODO facade経由で操作 + newKeyColumns.add(jiemamy.getFactory().newReference(keyColumn)); foreignKey.getKeyColumns().add(new ColumnRefImpl(jiemamy, keyColumn.getId())); } + jiemamyFacade.updateForeignKeyMapping(getTargetModel(), newKeyColumns, newReferenceColumns); return true; } Modified: vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/dialog/table/TableEditDialogLocalKeyTab.java =================================================================== --- vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/dialog/table/TableEditDialogLocalKeyTab.java 2009-03-16 18:29:14 UTC (rev 2885) +++ vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/dialog/table/TableEditDialogLocalKeyTab.java 2009-03-16 18:29:38 UTC (rev 2886) @@ -134,31 +134,12 @@ public void commandExecuted(Command command) { logger.debug(LogMarker.LIFECYCLE, "LocalKeyConstraintContentProvider: commandExecuted"); -// if (evt.getPropertyName().equals(TableModel.P_ENTITY_TABLE_UNIQUES)) { localKeyEditor.refreshTable(); -// } else if (evt.getPropertyName().equals(CheckConstraint.P_UNIQUE_NAME)) { -// uniqueEditArea.refreshTable(); -// } else if (evt.getPropertyName().equals(CheckConstraint.P_UNIQUE_DEFINITION)) { -// uniqueEditArea.refreshTable(); -// } else if (evt.getSource() instanceof UniqueConstraint) { -// uniqueEditArea.refreshTable(); -// if (evt.getPropertyName().equals(UniqueConstraint.P_CREATE)) { -// // nothing to do -// } else if (evt.getPropertyName().equals(UniqueConstraint.P_DELETE)) { -// ((AbstractModel) evt.getSource()).removePropertyChangeListener(this); -// } else if (evt.getPropertyName().equals(UniqueConstraint.P_REVERT)) { -// ((AbstractModel) evt.getSource()).addPropertyChangeListener(this); -// } -// } } @Override public void dispose() { logger.debug(LogMarker.LIFECYCLE, "LocalKeyConstraintContentProvider: dispose"); -// tableModel.removePropertyChangeListener(this); -// for (UniqueConstraint uniqueKey : tableModel.getUniques()) { -// ((AbstractModel) uniqueKey).removePropertyChangeListener(this); -// } super.dispose(); } @@ -174,19 +155,6 @@ this.viewer = viewer; -// if (oldInput != null) { -// tableModel.removePropertyChangeListener(this); -// for (UniqueKey uniqueKey : tableModel.getUniques()) { -// ((AbstractModel) uniqueKey).removePropertyChangeListener(this); -// } -// } -// if (newInput != null) { -// tableModel.addPropertyChangeListener(this); -// for (UniqueKey uniqueKey : tableModel.getUniques()) { -// ((AbstractModel) uniqueKey).addPropertyChangeListener(this); -// } -// } - super.inputChanged(viewer, oldInput, newInput); } Modified: zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/facade/JiemamyFacade.java =================================================================== --- zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/facade/JiemamyFacade.java 2009-03-16 18:29:14 UTC (rev 2885) +++ zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/facade/JiemamyFacade.java 2009-03-16 18:29:38 UTC (rev 2886) @@ -25,6 +25,7 @@ import org.jiemamy.model.RootModel; import org.jiemamy.model.attribute.AttributeModel; import org.jiemamy.model.attribute.ColumnModel; +import org.jiemamy.model.attribute.ColumnRef; import org.jiemamy.model.attribute.constraint.ForeignKey; import org.jiemamy.model.attribute.constraint.KeyConstraint; import org.jiemamy.model.dataset.DataSetModel; @@ -203,5 +204,5 @@ */ void swapListElement(JiemamyElement targetElement, List<?> list, int subjectIndex, int objectIndex); - void updateKeyColumn(ForeignKey foreignKey, int index, ColumnModel columnModel); + void updateForeignKeyMapping(ForeignKey foreignKey, List<ColumnRef> keyColumns, List<ColumnRef> referenceColumns); }