svnno****@sourc*****
svnno****@sourc*****
2009年 4月 13日 (月) 20:34:25 JST
Revision: 3259 http://svn.sourceforge.jp/view?root=jiemamy&view=rev&rev=3259 Author: daisuke_m Date: 2009-04-13 20:34:25 +0900 (Mon, 13 Apr 2009) Log Message: ----------- データセットテーブルの追加削除をファサード経由に。(まだコマンドとして実装はされていない)/ pull.bat/sh に entity-io を追加。/ ファサード経由でDomain, Tableを削除した際に、それを参照していたモデルの処理を追加。/ JiemamyFacadeのjavadoc整備。/ metis/documentsに免責事項の断片ファイル追加。 Modified Paths: -------------- artemis/trunk/jiemamy-artemis-test/src/test/java/org/jiemamy/DatabaseTest.java artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/internal/AbstractDialect.java artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/internal/DatabaseReader.java artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/JiemamyFacadeImpl.java artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/builder/DataTypeBuilderImpl.java artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/serializer/JiemamyDomParser.java artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/composer/importer/DatabaseImporterTest.java hestia/trunk/jiemamy-hestia/pull.bat hestia/trunk/jiemamy-hestia/pull.sh hestia/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/dialog/root/DataSetEditDialog.java hestia/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/dialog/root/RootEditDialogDomainTab.java hestia/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/dialog/table/TableEditDialogColumnTab.java hestia/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/utils/LabelStringUtil.java zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/dialect/Dialect.java zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/dialect/MoldManager.java zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/facade/JiemamyFacade.java Added Paths: ----------- metis/documents/trunk/src/docbook/userguide/section_discharge.xml -------------- next part -------------- Modified: artemis/trunk/jiemamy-artemis-test/src/test/java/org/jiemamy/DatabaseTest.java =================================================================== --- artemis/trunk/jiemamy-artemis-test/src/test/java/org/jiemamy/DatabaseTest.java 2009-04-13 10:06:37 UTC (rev 3258) +++ artemis/trunk/jiemamy-artemis-test/src/test/java/org/jiemamy/DatabaseTest.java 2009-04-13 11:34:25 UTC (rev 3259) @@ -360,7 +360,7 @@ DefaultDatabaseImportConfig importConfig = new DefaultDatabaseImportConfig(); BeanUtils.copyProperties(importConfig, connectionConfig); importConfig.setDialect(jiemamy.getDialect(rootModel)); - importConfig.setSchema(rootModel.getSchemaName()); +// importConfig.setSchema(rootModel.getSchemaName()); DatabaseImporter importer = new DatabaseImporter(); importer.importModel(rootModel, importConfig); Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/internal/AbstractDialect.java =================================================================== --- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/internal/AbstractDialect.java 2009-04-13 10:06:37 UTC (rev 3258) +++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/internal/AbstractDialect.java 2009-04-13 11:34:25 UTC (rev 3259) @@ -35,6 +35,7 @@ import org.jiemamy.dialect.MoldManager; import org.jiemamy.model.RootModel; import org.jiemamy.model.attribute.constraint.ForeignKey; +import org.jiemamy.model.datatype.BuiltinDataType; import org.jiemamy.model.datatype.DataType; import org.jiemamy.model.datatype.DataTypeCategory; import org.jiemamy.model.entity.EntityModel; @@ -89,6 +90,11 @@ return emitter.emit(rootModel, config); } + public BuiltinDataTypeMold findDataTypeMold(BuiltinDataType dataType) { + Validate.notNull(dataType); + return moldManager.findDataTypeMold(dataType); + } + public BuiltinDataTypeMold findDataTypeMold(DataTypeCategory category) { Validate.notNull(category); return moldManager.findDataTypeMold(category); Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/internal/DatabaseReader.java =================================================================== --- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/internal/DatabaseReader.java 2009-04-13 10:06:37 UTC (rev 3258) +++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/dialect/internal/DatabaseReader.java 2009-04-13 11:34:25 UTC (rev 3259) @@ -99,7 +99,7 @@ String schema = config.getSchema(); - TypeSafeResultSet<TableMeta> tables = metaData.getTables(null, /*schema*/null, "%", null); + TypeSafeResultSet<TableMeta> tables = metaData.getTables(null, schema, "%", null); T result = ForEachUtil.accept(tables, visitor); return result; Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/JiemamyFacadeImpl.java =================================================================== --- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/JiemamyFacadeImpl.java 2009-04-13 10:06:37 UTC (rev 3258) +++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/JiemamyFacadeImpl.java 2009-04-13 11:34:25 UTC (rev 3259) @@ -18,16 +18,25 @@ */ package org.jiemamy.internal; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; import java.util.Collection; import java.util.List; +import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.Validate; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.jiemamy.EventBroker; import org.jiemamy.Jiemamy; import org.jiemamy.JiemamyFactory; import org.jiemamy.JiemamyProperty; +import org.jiemamy.JiemamyProperty.ColumnProperty; +import org.jiemamy.dialect.BuiltinDataTypeMold; +import org.jiemamy.dialect.Dialect; +import org.jiemamy.dialect.generic.GenericDialect; import org.jiemamy.editcommand.Command; import org.jiemamy.facade.JiemamyFacade; import org.jiemamy.facade.SavePoint; @@ -50,6 +59,7 @@ import org.jiemamy.internal.editcommand.SwapListElementCommand; import org.jiemamy.internal.editcommand.UpdateForeignKeyMappingCommand; import org.jiemamy.model.JiemamyElement; +import org.jiemamy.model.RootModel; import org.jiemamy.model.attribute.AttributeModel; import org.jiemamy.model.attribute.ColumnModel; import org.jiemamy.model.attribute.ColumnRef; @@ -58,7 +68,9 @@ import org.jiemamy.model.attribute.constraint.LocalKeyConstraint; import org.jiemamy.model.dataset.DataSetModel; import org.jiemamy.model.dataset.RecordModel; +import org.jiemamy.model.datatype.BuiltinDataType; import org.jiemamy.model.datatype.DomainModel; +import org.jiemamy.model.datatype.DomainRef; import org.jiemamy.model.entity.EntityModel; import org.jiemamy.model.entity.TableModel; import org.jiemamy.model.index.IndexColumnModel; @@ -70,6 +82,7 @@ import org.jiemamy.utils.model.AttributeUtil; import org.jiemamy.utils.model.EntityUtil; import org.jiemamy.utils.model.ForeignKeyUtil; +import org.jiemamy.utils.model.RootModelUtil; import org.jiemamy.utils.model.TableUtil; /** @@ -79,9 +92,12 @@ */ public class JiemamyFacadeImpl implements JiemamyFacade { + private static Logger logger = LoggerFactory.getLogger(JiemamyFacadeImpl.class); + /** ファサードによる操作の対象となるコンテキスト */ protected final Jiemamy jiemamy; + /** このファサードが発行したセーブポイントの集合 */ private Collection<SavePointImpl> publishedSavePoints = CollectionsUtil.newArrayList(); /** UNDOスタック */ @@ -176,10 +192,12 @@ } public void addKeyColumn(KeyConstraint keyConstraint, ColumnModel columnModel) { + // 既に指定したカラムがキーカラムの要素であった場合は何もしない ColumnRef columnRef = columnModel.getJiemamy().getFactory().newReference(columnModel); if (keyConstraint.getKeyColumns().contains(columnRef)) { return; } + AddColumnToColumnRefListCommand command = new AddColumnToColumnRefListCommand(eventBroker, keyConstraint, keyConstraint.getKeyColumns(), columnModel); @@ -187,6 +205,13 @@ undoStack.push(command.getNegateCommand()); } + public void addRecords(DataSetModel dataSetModel, TableModel tableModel) { + // TODO コマンド化せよ + JiemamyFactory factory = jiemamy.getFactory(); + dataSetModel.getRecords().put(factory.newReference(tableModel), new ArrayList<RecordModel>()); + + } + public <T extends JiemamyElement>void changeModelProperty(T element, JiemamyProperty<T> property, Object newValue) { Command command = new ModifyModelPropertyCommand<T>(eventBroker, element, property, newValue); command.execute(); @@ -194,6 +219,7 @@ } public void removeAttribute(TableModel tableModel, AttributeModel attributeModel) { + // ローカルキーを削除する場合、そのキーを参照する外部キーも同時に削除する if (attributeModel instanceof LocalKeyConstraint) { LocalKeyConstraint localKeyConstraint = (LocalKeyConstraint) attributeModel; TableModel definedTable = AttributeUtil.getDefinedTable(localKeyConstraint); @@ -207,12 +233,11 @@ removeAttribute(dependentTable, foreignKey); } } - } else { - // TODO } } } + // カラムを削除する場合、全てのキーに含まれる該当カラムへの参照も同時に削除する if (attributeModel instanceof ColumnModel) { ColumnModel columnModel = (ColumnModel) attributeModel; List<KeyConstraint> keys = TableUtil.getAttributes(tableModel, KeyConstraint.class, true); @@ -234,6 +259,45 @@ } public void removeDomain(DomainModel domainModel) { + // 該当ドメインへの参照は、ドメインに設定されていた型情報に書き換える + JiemamyFactory factory = jiemamy.getFactory(); + DomainRef domainRef = factory.newReference(domainModel); + RootModel rootModel = factory.getRootModel(); + Dialect dialect; + try { + dialect = RootModelUtil.getDialect(rootModel); + } catch (ClassNotFoundException e) { + logger.warn("Dialectのロスト", e); + dialect = new GenericDialect(); + } + Collection<TableModel> tableModels = RootModelUtil.getEntities(rootModel, TableModel.class); + for (TableModel tableModel : tableModels) { + List<ColumnModel> columns = TableUtil.getColumns(tableModel); + for (ColumnModel columnModel : columns) { + if (columnModel.getDataType().equals(domainRef)) { + BuiltinDataType domainDataType = domainModel.getDataType(); + BuiltinDataTypeMold mold = dialect.findDataTypeMold(domainDataType); + BuiltinDataType newDataType = factory.newDataType(mold); + + List<Object> domainDataTypeAdapters = domainDataType.getAdapters(); + for (Object domainDtaTypeAdapter : domainDataTypeAdapters) { + Class<?> adapterClass = domainDtaTypeAdapter.getClass(); + if (newDataType.hasAdapter(adapterClass)) { + Object newDataTypeAdapter = newDataType.getAdapter(adapterClass); + try { + BeanUtils.copyProperties(newDataTypeAdapter, domainDtaTypeAdapter); + } catch (IllegalAccessException e) { + logger.error("アダプタのコピーに失敗", e); + } catch (InvocationTargetException e) { + logger.error("アダプタのコピーに失敗", e); + } + } + } + changeModelProperty(columnModel, ColumnProperty.dataType, newDataType); + } + } + } + RemoveDomainFromRootCommand command = new RemoveDomainFromRootCommand(eventBroker, jiemamy.getFactory().getRootModel(), domainModel); command.execute(); @@ -242,6 +306,7 @@ public void removeEntity(EntityModel entityModel) { if (entityModel instanceof TableModel) { + // 該当エンティティを参照する外部キーも同時に削除する TableModel tableModel = (TableModel) entityModel; Collection<EntityModel> sourceEntities = EntityUtil.getDependentEntities(tableModel, false); for (EntityModel sourceEntity : sourceEntities) { @@ -255,6 +320,14 @@ } } } + + // DataSetModelが持つテーブルへの参照も同時に削除する + JiemamyFactory factory = jiemamy.getFactory(); + RootModel rootModel = factory.getRootModel(); + List<DataSetModel> dataSets = rootModel.getDataSets(); + for (DataSetModel dataSetModel : dataSets) { + removeRecords(dataSetModel, tableModel); + } } RemoveEntityFromRootCommand command = @@ -276,6 +349,7 @@ } public void removeKeyColumn(KeyConstraint keyConstraint, ColumnModel columnModel) { + // キーカラム要素が、指定したカラムへの参照を保持していなかった場合は、何もしない JiemamyFactory factory = jiemamy.getFactory(); int index = keyConstraint.getKeyColumns().indexOf(factory.newReference(columnModel)); if (index == ArrayUtils.INDEX_NOT_FOUND) { @@ -288,7 +362,7 @@ command.execute(); undoStack.push(command.getNegateCommand()); - // キーカラムが空になってしまったキー制約は意味を成さない為、テーブルからも削除する。 + // 削除の結果、キーカラムの数が0になった場合、キー制約自体を所属テーブルから削除する if (keyConstraint.getKeyColumns().size() == 0) { TableModel definedTable = AttributeUtil.getDefinedTable(keyConstraint); if (definedTable != null) { @@ -296,7 +370,7 @@ } } - // 外部キーであった場合は、対応する参照カラムも削除する。 + // 外部キーであった場合は、対応する参照カラムも削除する if (keyConstraint instanceof ForeignKey) { ForeignKey foreignKey = (ForeignKey) keyConstraint; ColumnRef columnRef = foreignKey.getReferenceColumns().get(index); @@ -309,6 +383,13 @@ } } + public void removeRecords(DataSetModel dataSetModel, TableModel tableModel) { + // TODO コマンド化せよ + JiemamyFactory factory = jiemamy.getFactory(); + dataSetModel.getRecords().remove(factory.newReference(tableModel)); + + } + public void rollback(SavePoint savePoint) { if (publishedSavePoints.contains(savePoint) == false) { throw new IllegalArgumentException(); Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/builder/DataTypeBuilderImpl.java =================================================================== --- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/builder/DataTypeBuilderImpl.java 2009-04-13 10:06:37 UTC (rev 3258) +++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/builder/DataTypeBuilderImpl.java 2009-04-13 11:34:25 UTC (rev 3259) @@ -19,6 +19,8 @@ package org.jiemamy.internal.builder; import org.apache.commons.lang.Validate; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.jiemamy.JiemamyFactory; import org.jiemamy.dialect.BuiltinDataTypeMold; @@ -39,6 +41,8 @@ */ public class DataTypeBuilderImpl implements DataTypeBuilder { + private static Logger logger = LoggerFactory.getLogger(DataTypeBuilderImpl.class); + private BuiltinDataType model; private boolean finished; @@ -57,6 +61,7 @@ try { dialect = RootModelUtil.getDialect(rootModel); } catch (ClassNotFoundException e) { + logger.warn("Dialectのロスト", e); dialect = new GenericDialect(); } BuiltinDataTypeMold mold = dialect.findDataTypeMold(category); Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/serializer/JiemamyDomParser.java =================================================================== --- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/serializer/JiemamyDomParser.java 2009-04-13 10:06:37 UTC (rev 3258) +++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/internal/serializer/JiemamyDomParser.java 2009-04-13 11:34:25 UTC (rev 3259) @@ -218,6 +218,7 @@ try { dialect = RootModelUtil.getDialect(rootModel); } catch (ClassNotFoundException e) { + logger.warn("Dialectのロスト", e); dialect = null; } BuiltinDataTypeMold mold; Modified: artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/composer/importer/DatabaseImporterTest.java =================================================================== --- artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/composer/importer/DatabaseImporterTest.java 2009-04-13 10:06:37 UTC (rev 3258) +++ artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/composer/importer/DatabaseImporterTest.java 2009-04-13 11:34:25 UTC (rev 3259) @@ -215,7 +215,7 @@ config.setPassword(""); config.setSelectedEntities(null); config.setEntityTypes(null); - config.setSchema(rootModel.getSchemaName()); +// config.setSchema(rootModel.getSchemaName()); return config; } Modified: hestia/trunk/jiemamy-hestia/pull.bat =================================================================== --- hestia/trunk/jiemamy-hestia/pull.bat 2009-04-13 10:06:37 UTC (rev 3258) +++ hestia/trunk/jiemamy-hestia/pull.bat 2009-04-13 11:34:25 UTC (rev 3259) @@ -30,6 +30,9 @@ cd ..\jiemamy-commons\ call mvn install -Dmaven.test.skip=true +cd ..\jiemamy-entity-io\ +call mvn install -Dmaven.test.skip=true + cd ..\jiemamy-zeus\ call mvn install -Dmaven.test.skip=true Modified: hestia/trunk/jiemamy-hestia/pull.sh =================================================================== --- hestia/trunk/jiemamy-hestia/pull.sh 2009-04-13 10:06:37 UTC (rev 3258) +++ hestia/trunk/jiemamy-hestia/pull.sh 2009-04-13 11:34:25 UTC (rev 3259) @@ -6,6 +6,10 @@ mvn install -Dmaven.test.skip=true +cd ../jiemamy-entity-io + +mvn install -Dmaven.test.skip=true + cd ../jiemamy-zeus mvn install -Dmaven.test.skip=true Modified: hestia/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/dialog/root/DataSetEditDialog.java =================================================================== --- hestia/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/dialog/root/DataSetEditDialog.java 2009-04-13 10:06:37 UTC (rev 3258) +++ hestia/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/dialog/root/DataSetEditDialog.java 2009-04-13 11:34:25 UTC (rev 3259) @@ -24,7 +24,6 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; -import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Set; @@ -64,7 +63,6 @@ import org.jiemamy.facade.JiemamyFacade; import org.jiemamy.model.RootModel; import org.jiemamy.model.dataset.DataSetModel; -import org.jiemamy.model.dataset.RecordModel; import org.jiemamy.model.entity.TableModel; import org.jiemamy.model.entity.TableRef; import org.jiemamy.utils.model.DataSetUtil; @@ -322,8 +320,7 @@ TableSelectDialog dialog = new TableSelectDialog(getShell(), list); dialog.open(); TableModel tableModel = dialog.getResult(); - // TODO facade経由で - dataSetModel.getRecords().put(factory.newReference(tableModel), new ArrayList<RecordModel>()); + jiemamyFacade.addRecords(dataSetModel, tableModel); addTab(new DataSetEditDialogTableTab(tabFolder, SWT.NONE, dataSetModel, tableModel, jiemamyFacade)); } }); @@ -343,9 +340,7 @@ return; } - // TODO facade経由で - JiemamyFactory factory = dataSetModel.getJiemamy().getFactory(); - dataSetModel.getRecords().remove(factory.newReference(tableModel)); + jiemamyFacade.removeRecords(dataSetModel, tableModel); item.dispose(); } }); Modified: hestia/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/dialog/root/RootEditDialogDomainTab.java =================================================================== --- hestia/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/dialog/root/RootEditDialogDomainTab.java 2009-04-13 10:06:37 UTC (rev 3258) +++ hestia/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/dialog/root/RootEditDialogDomainTab.java 2009-04-13 11:34:25 UTC (rev 3259) @@ -135,6 +135,7 @@ } catch (ClassNotFoundException e) { // TODO DefaultDialectをセットするように変更。 dialect = JiemamyCorePlugin.getDialectResolver().getAllInstance().get(0); + logger.warn("Dialectのロスト", e); } allTypes = CollectionsUtil.newArrayList(dialect.getAllDataTypes().size()); @@ -291,6 +292,7 @@ } catch (ClassNotFoundException e) { // TODO GenericDialectをセットするように dialect = JiemamyCorePlugin.getDialectResolver().getAllInstance().get(0); + logger.warn("Dialectのロスト", e); } assert jiemamy != null; Modified: hestia/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/dialog/table/TableEditDialogColumnTab.java =================================================================== --- hestia/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/dialog/table/TableEditDialogColumnTab.java 2009-04-13 10:06:37 UTC (rev 3258) +++ hestia/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/dialog/table/TableEditDialogColumnTab.java 2009-04-13 11:34:25 UTC (rev 3259) @@ -149,6 +149,7 @@ } catch (ClassNotFoundException e) { // TODO DefaultDialectをセットするように変更。 dialect = JiemamyCorePlugin.getDialectResolver().getAllInstance().get(0); + logger.warn("Dialectのロスト", e); } allTypes = CollectionsUtil.newArrayList(rootModel.getDomains().size() + dialect.getAllDataTypes().size()); @@ -332,6 +333,7 @@ } catch (ClassNotFoundException e) { // TODO GeneriDialectをセットするように dialect = JiemamyCorePlugin.getDialectResolver().getAllInstance().get(0); + logger.warn("Dialectのロスト", e); } assert jiemamy != null; Modified: hestia/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/utils/LabelStringUtil.java =================================================================== --- hestia/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/utils/LabelStringUtil.java 2009-04-13 10:06:37 UTC (rev 3258) +++ hestia/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/utils/LabelStringUtil.java 2009-04-13 11:34:25 UTC (rev 3259) @@ -20,6 +20,9 @@ import java.util.List; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import org.jiemamy.ReferenceResolver; import org.jiemamy.dialect.Dialect; import org.jiemamy.eclipse.editor.DisplayPlace; @@ -46,6 +49,9 @@ */ public class LabelStringUtil { + private static Logger logger = LoggerFactory.getLogger(LabelStringUtil.class); + + /** * DataTypeに対する表示用文字列を取得する。 * @@ -71,6 +77,7 @@ } return sb.toString(); } catch (ClassNotFoundException e) { + logger.warn("Dialectのロスト", e); return DataTypeUtil.toBuiltinDataType(dataType, resolver).getTypeName(); } } Added: metis/documents/trunk/src/docbook/userguide/section_discharge.xml =================================================================== --- metis/documents/trunk/src/docbook/userguide/section_discharge.xml (rev 0) +++ metis/documents/trunk/src/docbook/userguide/section_discharge.xml 2009-04-13 11:34:25 UTC (rev 3259) @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<sect1 lang="ja" xmlns:xi="http://www.w3.org/2001/XInclude"> + <title>免責事項</title> + <para>理由の如何を問わず、Jiemamy(以下、「本ソフトウェア」と呼ぶ。)のインストールに起因して +生じた損害または損失に対して、Jiemamy Project及びその関係者(以下、「甲」と呼ぶ。)は一切の責任を負いません。 + </para> + <para>甲は、本ソフトウェアおよびそのドキュメント類に関して一切の保証を行いません。 +甲は、本ソフトウェアにバグがないこと、これが正常に動作すること、またはユーザ(以下、「乙」と呼ぶ。)の +期待通りに動作することを保証していません。 + </para> + <para>甲は、乙がご使用になるソフトウェア・プログラム(本ソフトウェアを含むがこれに限定されない)の +使用または使用不能に起因する、逸失利益、職務の中断、データの損失を含む(但しこれらに限定されない)、 +特別、派生的、間接的又は類似した損害やその他いかなる損害において、あらかじめ甲がそのような損害の +可能性について知らされていた場合であっても、一切の責任を負いません。 + </para> + <important> + <para>ソフトウェアの性格上、JiemamyからDBに対して操作を行うことがありますが、最悪の場合、 +その際にDBのデータを破壊してしまう可能性もあります。Jiemamyの利用に先立っては、必ず +データのバックアップをお取りください。 + </para> + </important> +</sect1> Property changes on: metis/documents/trunk/src/docbook/userguide/section_discharge.xml ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/dialect/Dialect.java =================================================================== --- zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/dialect/Dialect.java 2009-04-13 10:06:37 UTC (rev 3258) +++ zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/dialect/Dialect.java 2009-04-13 11:34:25 UTC (rev 3259) @@ -25,6 +25,7 @@ import org.jiemamy.model.RootModel; import org.jiemamy.model.attribute.constraint.ForeignKey; +import org.jiemamy.model.datatype.BuiltinDataType; import org.jiemamy.model.datatype.DataTypeCategory; import org.jiemamy.model.entity.EntityModel; import org.jiemamy.model.sql.SqlStatement; @@ -55,6 +56,15 @@ List<SqlStatement> emitStatements(RootModel rootModel, EmitConfig config); /** + * 指定したデータ型に適合する、最も適したモールドを取得する。 + * + * @param dataType データ型 + * @return モールド + * @since 0.2 + */ + BuiltinDataTypeMold findDataTypeMold(BuiltinDataType dataType); + + /** * 指定したカテゴリに最も適したモールドを取得する。 * * <p>typeNameには、{@code category.name()}を用いる。</p> Modified: zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/dialect/MoldManager.java =================================================================== --- zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/dialect/MoldManager.java 2009-04-13 10:06:37 UTC (rev 3258) +++ zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/dialect/MoldManager.java 2009-04-13 11:34:25 UTC (rev 3259) @@ -31,10 +31,10 @@ public interface MoldManager { /** - * TODO for daisuke + * 指定したデータ型に適合する、最も適したモールドを取得する。 * - * @param builtinDataType - * @return + * @param builtinDataType データ型 + * @return モールド * @since 0.2 */ BuiltinDataTypeMold findDataTypeMold(BuiltinDataType builtinDataType); 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-04-13 10:06:37 UTC (rev 3258) +++ zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/facade/JiemamyFacade.java 2009-04-13 11:34:25 UTC (rev 3259) @@ -162,7 +162,9 @@ /** * {@link KeyConstraint}のキーカラム要素にカラムを追加する。 * - * <p>既に指定したカラムがキーカラムの要素であった場合は何もしない。</p> + * <ul> + * <li>既に指定したカラムがキーカラムの要素であった場合は何もしない。</li> + * </ul> * * @param keyConstraint 対象のキー制約 * @param columnModel 追加するカラム @@ -171,6 +173,15 @@ void addKeyColumn(KeyConstraint keyConstraint, ColumnModel columnModel); /** + * TODO for daisuke + * + * @param dataSetModel + * @param tableModel + * @since 0.2 + */ + void addRecords(DataSetModel dataSetModel, TableModel tableModel); + + /** * モデルが持つプロパティの値を変更する。 * * @param <T> 操作対象のモデルの型 @@ -186,6 +197,11 @@ /** * {@link TableModel}から{@link AttributeModel}を削除する。 * + * <ul> + * <li>ローカルキーを削除する場合、そのキーを参照する外部キーも同時に削除する。</li> + * <li>カラムを削除する場合、全てのキーに含まれる該当カラムへの参照も同時に削除する。</li> + * </ul> + * * @param tableModel 削除元テーブル * @param attributeModel 削除対象の属性 * @throws IllegalArgumentException 引数に{@code null}を与えた場合 @@ -205,6 +221,10 @@ /** * {@link RootModel}から{@link DomainModel}を削除する。 * + * <ul> + * <li>該当ドメインへの参照は、ドメインに設定されていた型情報に書き換える。</li> + * </ul> + * * @param domainModel 削除するドメイン * @throws IllegalArgumentException 引数に{@code null}を与えた場合 * @since 0.2 @@ -214,6 +234,11 @@ /** * {@link RootModel}から{@link EntityModel}を削除する。 * + * <ul> + * <li>該当エンティティを参照する外部キーも同時に削除する。</li> + * <li>{@link DataSetModel}が持つテーブルへの参照も同時に削除する。</li> + * </ul> + * * @param entityModel 削除するエンティティ * @throws IllegalArgumentException 引数に{@code null}を与えた場合 * @since 0.2 @@ -242,7 +267,11 @@ /** * {@link KeyConstraint}のキーカラム要素からカラムを削除する。 * - * <p>削除の結果、キーカラムの数が0になった場合、キー制約自体を所属テーブルから削除する。</p> + * <ul> + * <li>キーカラム要素が、指定したカラムへの参照を保持していなかった場合は、何もしない。</li> + * <li>削除の結果、キーカラムの数が0になった場合、キー制約自体を所属テーブルから削除する。</li> + * <li>外部キーであった場合は、対応する参照カラムも削除する。</li> + * </ul> * * @param keyConstraint 対象のキー制約 * @param columnModel 削除するカラム @@ -251,6 +280,15 @@ void removeKeyColumn(KeyConstraint keyConstraint, ColumnModel columnModel); /** + * TODO for daisuke + * + * @param dataSetModel + * @param tableModel + * @since 0.2 + */ + void removeRecords(DataSetModel dataSetModel, TableModel tableModel); + + /** * モデルの状態をセーブポイントまでロールバックする。 * * @param savePoint セーブポイント