/* * Copyright 2004-2015 the Seasar Foundation and the Others. * * 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.seasar.extension.jdbc.gen.internal.command; import java.util.List; import org.seasar.extension.jdbc.gen.command.Command; import org.seasar.extension.jdbc.gen.dialect.GenDialect; import org.seasar.extension.jdbc.gen.meta.DbColumnMeta; import org.seasar.extension.jdbc.gen.meta.DbTableMeta; import org.seasar.extension.jdbc.gen.meta.DbTableMetaReader; import org.seasar.framework.log.Logger; /** * {@link DbTableMeta}と{@link DbColumnMeta}をダンプする{@link Command}の実装クラスです。 * * @author taedium */ public class DumpDbMetaCommand extends AbstractCommand { /** ロガー */ protected static Logger logger = Logger.getLogger(DumpDbMetaCommand.class); /** スキーマ名 */ protected String schemaName = null; /** Javaコード生成の対象とするテーブル名の正規表現 */ protected String tableNamePattern = ".*"; /** Javaコード生成の対象としないテーブル名の正規表現 */ protected String ignoreTableNamePattern = ".*\\$.*"; /** {@link GenDialect}の実装クラス名 */ protected String genDialectClassName = null; /** 方言 */ protected GenDialect dialect; /** テーブルメタデータのリーダ */ protected DbTableMetaReader dbTableMetaReader; /** * インスタンスを構築します。 */ public DumpDbMetaCommand() { } /** * スキーマ名を返します。 * * @return スキーマ名 */ public String getSchemaName() { return schemaName; } /** * スキーマ名を設定します。 * * @param schemaName * スキーマ名 */ public void setSchemaName(String schemaName) { this.schemaName = schemaName; } /** * Javaコード生成の対象とするテーブル名の正規表現を返します。 * * @return Javaコード生成の対象とするテーブル名の正規表現 */ public String getTableNamePattern() { return tableNamePattern; } /** * Javaコード生成の対象とするテーブル名の正規表現を設定します。 * * @param tableNamePattern * Javaコード生成の対象とするテーブル名の正規表現 */ public void setTableNamePattern(String tableNamePattern) { this.tableNamePattern = tableNamePattern; } /** * Javaコード生成の対象としないテーブル名の正規表現を返します。 * * @return Javaコード生成の対象としないテーブル名の正規表現 */ public String getIgnoreTableNamePattern() { return ignoreTableNamePattern; } /** * Javaコード生成の対象としないテーブル名の正規表現を設定します。 * * @param ignoreTableNamePattern * Javaコード生成の対象としないテーブル名の正規表現 */ public void setIgnoreTableNamePattern(String ignoreTableNamePattern) { this.ignoreTableNamePattern = ignoreTableNamePattern; } /** * {@link GenDialect}の実装クラス名を返します。 * * @return {@link GenDialect}の実装クラス名 */ public String getGenDialectClassName() { return genDialectClassName; } /** * {@link GenDialect}の実装クラス名を設定します。 * * @param genDialectClassName * {@link GenDialect}の実装クラス名 */ public void setGenDialectClassName(String genDialectClassName) { this.genDialectClassName = genDialectClassName; } @Override protected void doValidate() { } /** * 初期化します。 */ @Override protected void doInit() { dialect = getGenDialect(genDialectClassName); dbTableMetaReader = createDbTableMetaReader(); logRdbmsAndGenDialect(dialect); } @Override protected void doExecute() { List<DbTableMeta> tableMetaList = dbTableMetaReader.read(); for (DbTableMeta table : tableMetaList) { logger.log("IS2JDBCGen0001", new Object[] { table.getCatalogName(), table.getSchemaName(), table.getName(), table.getColumnMetaList().size() }); for (DbColumnMeta column : table.getColumnMetaList()) { logger.log("IS2JDBCGen0002", new Object[] { column.getName(), Integer.toString(column.getSqlType()), column.getTypeName(), column.getLength(), column.getScale(), column.isNullable(), column.isPrimaryKey() }); } } } @Override protected void doDestroy() { } /** * {@link DbTableMetaReader}の実装を作成します。 * * @return {@link DbTableMetaReader}の実装 */ protected DbTableMetaReader createDbTableMetaReader() { return factory.createDbTableMetaReader(this, jdbcManager .getDataSource(), dialect, schemaName, tableNamePattern, ignoreTableNamePattern, false); } @Override protected Logger getLogger() { return logger; } }