svnno****@sourc*****
svnno****@sourc*****
2009年 3月 18日 (水) 01:19:53 JST
Revision: 2899 http://svn.sourceforge.jp/view?root=jiemamy&view=rev&rev=2899 Author: daisuke_m Date: 2009-03-18 01:19:53 +0900 (Wed, 18 Mar 2009) Log Message: ----------- PrimaryKey#keyColumns に、同じカラムが複数登録されてしまうバグ修正。 Modified Paths: -------------- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/ArtemisJiemamyFactory.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/root/RootEditDialogDomainTab.java zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/JiemamyFactory.java zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/facade/JiemamyFacade.java -------------- next part -------------- Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/ArtemisJiemamyFactory.java =================================================================== --- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/ArtemisJiemamyFactory.java 2009-03-17 15:58:59 UTC (rev 2898) +++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/ArtemisJiemamyFactory.java 2009-03-17 16:19:53 UTC (rev 2899) @@ -122,31 +122,14 @@ return builder; } - private BuiltinDataType newBuiltinDataType(BuiltinDataTypeMold mold) { - Validate.notNull(mold); - checkInitialized(); - BuiltinDataTypeImpl dataType = new BuiltinDataTypeImpl(mold.getCategory(), mold.getName()); - Collection<Class<?>> supportedAdapterClasses = mold.getSupportedAdapterClasses(); - for (Class<?> supportedAdapterClass : supportedAdapterClasses) { - try { - Object adapter = supportedAdapterClass.newInstance(); - dataType.registerAdapter(adapter); - } catch (InstantiationException e) { - throw new IllegalImplementationException(supportedAdapterClass); - } catch (IllegalAccessException e) { - throw new IllegalImplementationException(supportedAdapterClass); - } - } - return dataType; - } - - public DataType newDataType(DataTypeMold mold) { + @SuppressWarnings("unchecked") + public <T extends DataType>T newDataType(DataTypeMold<T> mold) { if (mold instanceof DomainModel) { DomainModel domainModel = (DomainModel) mold; - return newReference(domainModel); + return (T) newReference(domainModel); } else if (mold instanceof BuiltinDataTypeMold) { BuiltinDataTypeMold builtinDataTypeMold = (BuiltinDataTypeMold) mold; - return newBuiltinDataType(builtinDataTypeMold); + return (T) newBuiltinDataType(builtinDataTypeMold); } return null; } @@ -231,4 +214,22 @@ } } + private BuiltinDataType newBuiltinDataType(BuiltinDataTypeMold mold) { + Validate.notNull(mold); + checkInitialized(); + BuiltinDataTypeImpl dataType = new BuiltinDataTypeImpl(mold.getCategory(), mold.getName()); + Collection<Class<?>> supportedAdapterClasses = mold.getSupportedAdapterClasses(); + for (Class<?> supportedAdapterClass : supportedAdapterClasses) { + try { + Object adapter = supportedAdapterClass.newInstance(); + dataType.registerAdapter(adapter); + } catch (InstantiationException e) { + throw new IllegalImplementationException(supportedAdapterClass); + } catch (IllegalAccessException e) { + throw new IllegalImplementationException(supportedAdapterClass); + } + } + return dataType; + } + } 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-17 15:58:59 UTC (rev 2898) +++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/facade/JiemamyFacadeImpl.java 2009-03-17 16:19:53 UTC (rev 2899) @@ -168,6 +168,10 @@ } public void addKeyColumn(KeyConstraint keyConstraint, ColumnModel columnModel) { + ColumnRef columnRef = columnModel.getJiemamy().getFactory().newReference(columnModel); + if (keyConstraint.getKeyColumns().contains(columnRef)) { + return; + } AddColumnToColumnRefListCommand command = new AddColumnToColumnRefListCommand(keyConstraint, keyConstraint.getKeyColumns(), columnModel); command.execute(getCommandProcessor()); Modified: vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/dialog/root/RootEditDialogDomainTab.java =================================================================== --- vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/dialog/root/RootEditDialogDomainTab.java 2009-03-17 15:58:59 UTC (rev 2898) +++ vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/dialog/root/RootEditDialogDomainTab.java 2009-03-17 16:19:53 UTC (rev 2899) @@ -316,9 +316,6 @@ for (BuiltinDataTypeMold typeInfo : dialect.getAllDataTypes()) { cmbColumnType.add(typeInfo.getName()); } - for (DomainModel domain : domains) { - cmbColumnType.add(domain.getName()); - } txtDomainName.addFocusListener(new TextSelectionAdapter(txtDomainName)); txtDomainName.addKeyListener(new KeyAdapter() { Modified: zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/JiemamyFactory.java =================================================================== --- zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/JiemamyFactory.java 2009-03-17 15:58:59 UTC (rev 2898) +++ zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/JiemamyFactory.java 2009-03-17 16:19:53 UTC (rev 2899) @@ -26,7 +26,6 @@ import org.jiemamy.model.RootModel; import org.jiemamy.model.attribute.ColumnModel; import org.jiemamy.model.attribute.ColumnRef; -import org.jiemamy.model.datatype.BuiltinDataType; import org.jiemamy.model.datatype.DataType; import org.jiemamy.model.datatype.DataTypeMold; import org.jiemamy.model.datatype.DomainModel; @@ -121,7 +120,7 @@ <M extends JiemamyElement, B extends JiemamyBuilder<M>>B newBuilder(Class<B> clazz); /** - * 鋳型情報から、 {@link BuiltinDataType}のインスタンスを生成する。 + * 鋳型情報から、 {@link DataType}型のインスタンスを生成する。 * * @param <T> * @param mold 鋳型情報 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-17 15:58:59 UTC (rev 2898) +++ zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/facade/JiemamyFacade.java 2009-03-17 16:19:53 UTC (rev 2899) @@ -162,6 +162,8 @@ /** * {@link KeyConstraint}のキーカラム要素にカラムを追加する。 * + * <p>既に指定したカラムがキーカラムの要素であった場合は何もしない。</p> + * * @param keyConstraint 対象のキー制約 * @param columnModel 追加するカラム * @since 0.2