[Jiemamy-notify:1710] commit [2899] PrimaryKey#keyColumns に、同じカラムが複数登録されてしまうバグ修正。

Back to archive index

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



Jiemamy-notify メーリングリストの案内
Back to archive index