svnno****@sourc*****
svnno****@sourc*****
2009年 4月 19日 (日) 03:11:22 JST
Revision: 3323 http://svn.sourceforge.jp/view?root=jiemamy&view=rev&rev=3323 Author: daisuke_m Date: 2009-04-19 03:11:22 +0900 (Sun, 19 Apr 2009) Log Message: ----------- [CORE-119] [CORE-120] [CORE-121] バリデータの追加・整備。 Modified Paths: -------------- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/AllValidator.java artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/ColumnValidator.java artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/EntityNameCollisionValidator.java artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/ForeignKeyValidator.java artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/IdCollisionValidator.java artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/IndexValidator.java artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/InstanceCollisionValidator.java artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/InstanceSpaceValidator.java artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/KeyConstraintValidator.java artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/PrimaryKeyValidator.java artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/ReferenceValidator.java artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/TableValidator.java Added Paths: ----------- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/CheckConstraintValidator.java -------------- next part -------------- Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/AllValidator.java =================================================================== --- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/AllValidator.java 2009-04-18 14:58:19 UTC (rev 3322) +++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/AllValidator.java 2009-04-18 18:11:22 UTC (rev 3323) @@ -20,6 +20,7 @@ import java.util.List; +import org.jiemamy.validator.impl.CheckConstraintValidator; import org.jiemamy.validator.impl.ColumnValidator; import org.jiemamy.validator.impl.EntityNameCollisionValidator; import org.jiemamy.validator.impl.ForeignKeyValidator; @@ -55,6 +56,7 @@ validators.add(new PrimaryKeyValidator()); validators.add(new ReferenceValidator()); validators.add(new TableValidator()); + validators.add(new CheckConstraintValidator()); } } Added: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/CheckConstraintValidator.java =================================================================== --- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/CheckConstraintValidator.java (rev 0) +++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/CheckConstraintValidator.java 2009-04-18 18:11:22 UTC (rev 3323) @@ -0,0 +1,119 @@ +/* + * Copyright 2007-2009 Jiemamy Project and the Others. + * Created on 2009/01/26 + * + * 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.validator.impl; + +import java.util.Collection; +import java.util.Locale; + +import org.apache.commons.lang.StringUtils; + +import org.jiemamy.model.RootModel; +import org.jiemamy.model.attribute.ColumnModel; +import org.jiemamy.model.attribute.constraint.CheckConstraint; +import org.jiemamy.model.attribute.constraint.TableCheckConstraint; +import org.jiemamy.model.entity.TableModel; +import org.jiemamy.utils.model.RootModelUtil; +import org.jiemamy.utils.model.TableUtil; +import org.jiemamy.validator.AbstractProblem; +import org.jiemamy.validator.AbstractValidator; +import org.jiemamy.validator.Problem; + +/** + * テーブルやカラムが保持するチェック制約に対するバリデータ。 + * + * <ul> + * <li>チェック制約には、制約式が設定されていなければならない。</li> + * </ul> + * + * @author daisuke + */ +public class CheckConstraintValidator extends AbstractValidator { + + @Override + public Collection<Problem> validate(RootModel rootModel) { + Collection<Problem> result = super.validate(rootModel); + Collection<TableModel> tableModels = RootModelUtil.getEntities(rootModel, TableModel.class); + for (TableModel tableModel : tableModels) { + for (ColumnModel columnModel : TableUtil.getColumns(tableModel)) { + CheckConstraint checkConstraint = columnModel.getCheckConstraint(); + if (checkConstraint != null && verify(checkConstraint) == false) { + result.add(new EmptyExpressionProblem(tableModel, columnModel)); + } + } + int index = 0; + for (CheckConstraint checkConstraint : TableUtil.getAttributes(tableModel, TableCheckConstraint.class)) { + if (verify(checkConstraint) == false) { + result.add(new EmptyExpressionProblem(tableModel, index)); + } + index++; + } + } + return result; + } + + /** + * チェック制約のexpressionに問題がないかどうか調べる。 + * + * @param checkConstraint 検査対象のチェック制約 + * @return 問題がない場合は{@code true}、そうでない場合は{@code false} + */ + private boolean verify(CheckConstraint checkConstraint) { + // TODO いつかは構文解析 + return StringUtils.isEmpty(checkConstraint.getExpression()) == false; + } + + + static class EmptyExpressionProblem extends AbstractProblem { + + /** + * インスタンスを生成する。 + * + * @param tableModel 制約式未設定チェック制約が含まれるテーブル + * @param columnModel 制約式未設定チェック制約が設定されているカラム + */ + public EmptyExpressionProblem(TableModel tableModel, ColumnModel columnModel) { + super("X0000"); // TODO エラーコード設定 + registerMessage(Locale.JAPAN, "テーブル{0}のカラム{1}に設定されたチェック制約に制約式がありません"); + setArguments(new Object[] { + tableModel.getName(), + columnModel.getName() + }); + } + + /** + * インスタンスを生成する。 + * + * @param tableModel 制約式未設定チェック制約が含まれるテーブル + * @param index チェック制約のインデックス + */ + public EmptyExpressionProblem(TableModel tableModel, int index) { + super("X0000"); // TODO エラーコード設定 + registerMessage(Locale.JAPAN, "テーブル{0}の{1}番目のチェック制約に制約式がありません"); + setArguments(new Object[] { + tableModel.getName(), + index + }); + } + + public Severity getSeverity() { + return Severity.ERROR; + } + + } +} Property changes on: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/CheckConstraintValidator.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/ColumnValidator.java =================================================================== --- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/ColumnValidator.java 2009-04-18 14:58:19 UTC (rev 3322) +++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/ColumnValidator.java 2009-04-18 18:11:22 UTC (rev 3323) @@ -38,7 +38,11 @@ /** * テーブルに存在するカラムの数のバリデータ。 * - * <p>テーブルにカラムは1つ以上必要である。</p> + * <ul> + * <li>テーブルにカラムは1つ以上必要である。</li> + * <li>カラムには、データ型を設定する必要がある。</li> + * <li>カラムに対して設定されたキー制約は、キーカラムのサイズが1でなければならない。</li> + * </ul> * * @author daisuke */ @@ -129,10 +133,11 @@ */ public MultiKeyColumnProblem(ColumnModel columnModel, LocalKeyConstraint localKeyConstraint) { super("X0000"); // TODO エラーコード設定 - registerMessage(Locale.JAPAN, "カラム{0}のカラムキー制約カラム{1}の構成カラムが複数で構成されています"); + registerMessage(Locale.JAPAN, "カラム{0}に対するキー制約({1})において、キーカラムの構成カラムが無いまたは複数で構成されています"); setArguments(new Object[] { columnModel.getName(), - localKeyConstraint.getName() != null ? localKeyConstraint.getName() : localKeyConstraint.getId().toString() + StringUtils.isEmpty(localKeyConstraint.getName()) ? localKeyConstraint.getId().toString() + : localKeyConstraint.getName() }); } Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/EntityNameCollisionValidator.java =================================================================== --- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/EntityNameCollisionValidator.java 2009-04-18 14:58:19 UTC (rev 3322) +++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/EntityNameCollisionValidator.java 2009-04-18 18:11:22 UTC (rev 3323) @@ -33,6 +33,10 @@ /** * エンティティ名が衝突しているかどうかを調べるバリデータ。 * + * <ul> + * <li>{@link RootModel} が保持する全てのエンティティ間で、名前の重複があってはならない。</li> + * </ul> + * * @author daisuke */ public class EntityNameCollisionValidator extends AbstractValidator { Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/ForeignKeyValidator.java =================================================================== --- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/ForeignKeyValidator.java 2009-04-18 14:58:19 UTC (rev 3322) +++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/ForeignKeyValidator.java 2009-04-18 18:11:22 UTC (rev 3323) @@ -21,6 +21,7 @@ import java.util.Collection; import java.util.Locale; +import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -36,9 +37,10 @@ /** * {@link ForeignKey}の構成を調べるバリデータ。 * - * <p>{@link ForeignKey#getKeyColumns()}と{@link ForeignKey#getReferenceColumns()}の - * 要素数は一致しており、{@link ForeignKey#getReferenceColumns()}は、参照先テーブルが持つ - * いずれかの {@link KeyConstraint} のキー構成カラムと一致していなければならない。</p> + * <ul> + * <li>{@link ForeignKey#getKeyColumns()}と{@link ForeignKey#getReferenceColumns()}の要素数は一致していなければならない。</li> + * <li>{@link ForeignKey#getReferenceColumns()}は、参照先テーブルが持ついずれかの {@link KeyConstraint} のキー構成カラムと一致していなければならない。</li> + * </ul> * * @author daisuke */ @@ -76,7 +78,7 @@ super("X0000"); // TODO エラーコード設定 registerMessage(Locale.JAPAN, "外部キー{0}が参照するカラムはキーになっていません"); setArguments(new Object[] { - foreignKey.getName() != null ? foreignKey.getName() : foreignKey.getId(), + StringUtils.isEmpty(foreignKey.getName()) ? foreignKey.getId().toString() : foreignKey.getName(), foreignKey.getKeyColumns().size(), foreignKey.getReferenceColumns().size() }); Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/IdCollisionValidator.java =================================================================== --- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/IdCollisionValidator.java 2009-04-18 14:58:19 UTC (rev 3322) +++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/IdCollisionValidator.java 2009-04-18 18:11:22 UTC (rev 3323) @@ -30,8 +30,12 @@ import org.jiemamy.validator.Problem; /** - * エンティティ名が衝突しているかどうかを調べるバリデータ。 + * モデルIDが衝突しているかどうかを調べるバリデータ。 * + * <ul> + * <li>全てのモデルは、IDが重複していてはならない。</li> + * </uL> + * * @author daisuke */ public class IdCollisionValidator extends AbstractTraversalValidator<UUID> { Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/IndexValidator.java =================================================================== --- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/IndexValidator.java 2009-04-18 14:58:19 UTC (rev 3322) +++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/IndexValidator.java 2009-04-18 18:11:22 UTC (rev 3323) @@ -22,9 +22,11 @@ import java.util.Locale; import java.util.UUID; +import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.jiemamy.ReferenceResolver; import org.jiemamy.model.RootModel; import org.jiemamy.model.attribute.ColumnModel; import org.jiemamy.model.attribute.ColumnRef; @@ -51,6 +53,7 @@ @Override public Collection<Problem> validate(RootModel rootModel) { Collection<Problem> result = super.validate(rootModel); + ReferenceResolver referenceResolver = rootModel.getJiemamy().getReferenceResolver(); for (TableModel tableModel : RootModelUtil.getEntities(rootModel, TableModel.class)) { Collection<UUID> columnIds = CollectionsUtil.newArrayList(); for (ColumnModel columnModel : TableUtil.getColumns(tableModel)) { @@ -58,8 +61,17 @@ } for (IndexModel indexModel : tableModel.getIndexes()) { + Collection<UUID> referenceColumnIds = CollectionsUtil.newArrayList(); + if (indexModel.getIndexColumns().size() < 1) { + result.add(new NoIndexColumnProblem(tableModel, indexModel)); + } for (IndexColumnModel indexColumnModel : indexModel.getIndexColumns()) { ColumnRef columnRef = indexColumnModel.getColumnRef(); + if (referenceColumnIds.contains(columnRef.getReferenceId())) { + ColumnModel columnModel = referenceResolver.resolve(columnRef); + result.add(new DuplicatedIndexColumnsProblem(indexModel, columnModel)); + } + referenceColumnIds.add(columnRef.getReferenceId()); if (columnIds.contains(columnRef.getReferenceId()) == false) { logger.error("illegal index (" + indexColumnModel.getId() + ")"); result.add(new IllegalIndexColumnRefProblem(tableModel, indexModel, columnRef)); @@ -72,6 +84,29 @@ } + static class DuplicatedIndexColumnsProblem extends AbstractProblem { + + /** + * インスタンスを生成する。 + * + * @param indexModel 同じカラムが複数設定されたインデックス + * @param columnModel 複数設定されたカラム + */ + protected DuplicatedIndexColumnsProblem(IndexModel indexModel, ColumnModel columnModel) { + super("X0000"); // TODO エラーコード設定 + registerMessage(Locale.JAPAN, "インデックス{0}に、同じカラム{1}が複数設定されています"); + setArguments(new Object[] { + StringUtils.isEmpty(indexModel.getName()) ? indexModel.getId().toString() : indexModel.getName(), + columnModel.getName() + }); + } + + public Severity getSeverity() { + return Severity.ERROR; + } + + } + static class IllegalIndexColumnRefProblem extends AbstractProblem { /** @@ -95,4 +130,26 @@ return Severity.ERROR; } } + + static class NoIndexColumnProblem extends AbstractProblem { + + /** + * インスタンスを生成する。 + * + * @param tableModel インデックスカラムを1つも持たないインデックスを持つテーブル + * @param indexModel インデックスカラムを1つも持たないインデックス + */ + public NoIndexColumnProblem(TableModel tableModel, IndexModel indexModel) { + super("X0000"); // TODO エラーコード設定 + registerMessage(Locale.JAPAN, "テーブル{0}のインデックス{2}を構成するカラムが設定されていません"); + setArguments(new Object[] { + StringUtils.isEmpty(tableModel.getName()) ? tableModel.getId().toString() : tableModel.getName(), + StringUtils.isEmpty(indexModel.getName()) ? indexModel.getId().toString() : indexModel.getName(), + }); + } + + public Severity getSeverity() { + return Severity.ERROR; + } + } } Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/InstanceCollisionValidator.java =================================================================== --- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/InstanceCollisionValidator.java 2009-04-18 14:58:19 UTC (rev 3322) +++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/InstanceCollisionValidator.java 2009-04-18 18:11:22 UTC (rev 3323) @@ -30,6 +30,10 @@ /** * 同じインスタンスへの参照を複数保持していないかどうかを調べるバリデータ。 * + * <ul> + * <li>全てのモデルは、同じモデルのインスタンスを複数箇所から参照してはならない。</li> + * </uL> + * * @author daisuke */ public class InstanceCollisionValidator extends AbstractTraversalValidator<Integer> { Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/InstanceSpaceValidator.java =================================================================== --- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/InstanceSpaceValidator.java 2009-04-18 14:58:19 UTC (rev 3322) +++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/InstanceSpaceValidator.java 2009-04-18 18:11:22 UTC (rev 3323) @@ -29,8 +29,12 @@ import org.jiemamy.validator.Problem; /** - * エンティティ名が衝突しているかどうかを調べるバリデータ。 + * 全てのモデルのJiemamyコンテキストの一致を調べるバリデータ。 * + * <ul> + * <li>全てのモデルのJiemamyコンテキストは一致していなければならない。</li> + * </uL> + * * @author daisuke */ public class InstanceSpaceValidator extends AbstractTraversalValidator<Void> { Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/KeyConstraintValidator.java =================================================================== --- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/KeyConstraintValidator.java 2009-04-18 14:58:19 UTC (rev 3322) +++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/KeyConstraintValidator.java 2009-04-18 18:11:22 UTC (rev 3323) @@ -22,6 +22,7 @@ import java.util.Locale; import java.util.UUID; +import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -40,7 +41,9 @@ /** * {@link KeyConstraint#getKeyColumns()}の構成を調べるバリデータ。 * - * <p>keyColumnsは、自テーブルのカラムへの参照で構成されていなければならない。</p> + * <ul> + * <li>keyColumnsは、自テーブルのカラムへの参照で構成されていなければならない。</li> + * </ul> * * @author daisuke */ @@ -57,11 +60,14 @@ for (ColumnModel columnModel : TableUtil.getColumns(tableModel)) { columnIds.add(columnModel.getId()); } - for (KeyConstraint keyModel : TableUtil.getAttributes(tableModel, KeyConstraint.class)) { - for (ColumnRef columnRef : keyModel.getKeyColumns()) { + for (KeyConstraint keyConstraint : TableUtil.getAttributes(tableModel, KeyConstraint.class)) { + if (keyConstraint.getKeyColumns().size() < 1) { + result.add(new NoKeyColumnProblem(tableModel, keyConstraint)); + } + for (ColumnRef columnRef : keyConstraint.getKeyColumns()) { if (columnIds.contains(columnRef.getReferenceId()) == false) { - logger.error("key(" + keyModel.getId() + ") columns error"); - result.add(new IllegalKeyColumnRefProblem(columnRef, keyModel, tableModel)); + logger.error("key(" + keyConstraint.getId() + ") columns error"); + result.add(new IllegalKeyColumnRefProblem(columnRef, keyConstraint, tableModel)); } } } @@ -74,18 +80,19 @@ /** * インスタンスを生成する。 + * * @param columnRef 参照の切れた参照オブジェクト - * @param keyModel 参照オブジェクトを保持するキー + * @param keyConstraint 参照オブジェクトを保持するキー * @param tableModel キーを保持するテーブル */ - public IllegalKeyColumnRefProblem(ColumnRef columnRef, KeyConstraint keyModel, TableModel tableModel) { + public IllegalKeyColumnRefProblem(ColumnRef columnRef, KeyConstraint keyConstraint, TableModel tableModel) { super("X0000"); // TODO エラーコード設定 registerMessage(Locale.JAPAN, "テーブル{0}({1})にキー{2}({3})が参照するカラム{4}は存在しません"); setArguments(new Object[] { tableModel.getName(), tableModel.getId().toString(), - keyModel.getName(), - keyModel.getId().toString(), + keyConstraint.getName(), + keyConstraint.getId().toString(), columnRef.getReferenceId().toString() }); } @@ -94,4 +101,27 @@ return Severity.ERROR; } } + + static class NoKeyColumnProblem extends AbstractProblem { + + /** + * インスタンスを生成する。 + * + * @param tableModel キーカラムを1つも持たないキー制約を持つテーブル + * @param keyConstraint キーカラムを1つも持たないキー制約 + */ + public NoKeyColumnProblem(TableModel tableModel, KeyConstraint keyConstraint) { + super("X0000"); // TODO エラーコード設定 + registerMessage(Locale.JAPAN, "テーブル{0}のキー{2}を構成するカラムが設定されていません"); + setArguments(new Object[] { + StringUtils.isEmpty(tableModel.getName()) ? tableModel.getId().toString() : tableModel.getName(), + StringUtils.isEmpty(keyConstraint.getName()) ? keyConstraint.getId().toString() : keyConstraint + .getName(), + }); + } + + public Severity getSeverity() { + return Severity.ERROR; + } + } } Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/PrimaryKeyValidator.java =================================================================== --- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/PrimaryKeyValidator.java 2009-04-18 14:58:19 UTC (rev 3322) +++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/PrimaryKeyValidator.java 2009-04-18 18:11:22 UTC (rev 3323) @@ -33,8 +33,10 @@ /** * {@link PrimaryKey}の数を調べるバリデータ。 * - * <p>1つのテーブルには1つの{@link PrimaryKey}が含まれてるのが正常である。 - * 複数存在した場合ERROR、1つも存在しなかった場合にはNOTICEとなる。</p> + * <ul> + * <li>1つのテーブルには複数の{@link PrimaryKey}が含まれていてはならない。</li> + * <li>NOTICE: テーブルに{@link PrimaryKey}が1つも存在しなかった場合。</p> + * </ul> * * @author daisuke */ Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/ReferenceValidator.java =================================================================== --- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/ReferenceValidator.java 2009-04-18 14:58:19 UTC (rev 3322) +++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/ReferenceValidator.java 2009-04-18 18:11:22 UTC (rev 3323) @@ -32,8 +32,9 @@ /** * {@link ElementReference}が全て正常に解決できるかどうか調べるバリデータ。 * - * <p>モデルに含まれる {@link ElementReference}は、そのモデルが属するインスタンス空間から - * 取得する{@link ReferenceResolver}で全て解決できなければならない。</p> + * <ul> + * <li>モデルに含まれる {@link ElementReference}は、そのモデルが属するインスタンス空間から取得する{@link ReferenceResolver}で全て解決できなければならない。</li> + * </li> * * @author daisuke */ Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/TableValidator.java =================================================================== --- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/TableValidator.java 2009-04-18 14:58:19 UTC (rev 3322) +++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/validator/impl/TableValidator.java 2009-04-18 18:11:22 UTC (rev 3323) @@ -36,6 +36,11 @@ /** * テーブルのバリデータ。 * + * <ul> + * <li>テーブル名は必須である。</li> + * <li>テーブルにはカラムが1つ以上ひつようである。</li> + * </ul> + * * @author daisuke */ public class TableValidator extends AbstractValidator {