/* * 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.factory; import java.io.File; import java.util.List; import java.util.Set; import javax.persistence.GenerationType; import javax.sql.DataSource; import javax.transaction.UserTransaction; import org.seasar.extension.jdbc.DbmsDialect; import org.seasar.extension.jdbc.EntityMetaFactory; import org.seasar.extension.jdbc.gen.command.Command; import org.seasar.extension.jdbc.gen.data.Dumper; import org.seasar.extension.jdbc.gen.data.Loader; import org.seasar.extension.jdbc.gen.desc.DatabaseDescFactory; import org.seasar.extension.jdbc.gen.desc.EntitySetDescFactory; import org.seasar.extension.jdbc.gen.dialect.GenDialect; import org.seasar.extension.jdbc.gen.event.GenDdlListener; import org.seasar.extension.jdbc.gen.generator.GenerationContext; import org.seasar.extension.jdbc.gen.generator.Generator; import org.seasar.extension.jdbc.gen.internal.data.DumperImpl; import org.seasar.extension.jdbc.gen.internal.data.LoaderImpl; import org.seasar.extension.jdbc.gen.internal.desc.DatabaseDescFactoryImpl; import org.seasar.extension.jdbc.gen.internal.desc.EntitySetDescFactoryImpl; import org.seasar.extension.jdbc.gen.internal.generator.GenerationContextImpl; import org.seasar.extension.jdbc.gen.internal.generator.GeneratorImpl; import org.seasar.extension.jdbc.gen.internal.meta.DbTableMetaReaderImpl; import org.seasar.extension.jdbc.gen.internal.meta.EntityMetaReaderImpl; import org.seasar.extension.jdbc.gen.internal.model.AbstServiceModelFactoryImpl; import org.seasar.extension.jdbc.gen.internal.model.AssociationModelFactoryImpl; import org.seasar.extension.jdbc.gen.internal.model.AttributeModelFactoryImpl; import org.seasar.extension.jdbc.gen.internal.model.CompositeUniqueConstraintModelFactoryImpl; import org.seasar.extension.jdbc.gen.internal.model.ConditionAssociationModelFactoryImpl; import org.seasar.extension.jdbc.gen.internal.model.ConditionAttributeModelFactoryImpl; import org.seasar.extension.jdbc.gen.internal.model.ConditionModelFactoryImpl; import org.seasar.extension.jdbc.gen.internal.model.EntityModelFactoryImpl; import org.seasar.extension.jdbc.gen.internal.model.EntityTestModelFactoryImpl; import org.seasar.extension.jdbc.gen.internal.model.NamesAggregateModelFactoryImpl; import org.seasar.extension.jdbc.gen.internal.model.NamesModelFactoryImpl; import org.seasar.extension.jdbc.gen.internal.model.ServiceModelFactoryImpl; import org.seasar.extension.jdbc.gen.internal.model.ServiceTestModelFactoryImpl; import org.seasar.extension.jdbc.gen.internal.model.SqlFileConstantsModelFactoryImpl; import org.seasar.extension.jdbc.gen.internal.model.SqlFileTestModelFactoryImpl; import org.seasar.extension.jdbc.gen.internal.model.TableModelFactoryImpl; import org.seasar.extension.jdbc.gen.internal.provider.ValueTypeProviderImpl; import org.seasar.extension.jdbc.gen.internal.sql.SqlFileExecutorImpl; import org.seasar.extension.jdbc.gen.internal.sql.SqlUnitExecutorImpl; import org.seasar.extension.jdbc.gen.internal.version.DdlVersionDirectoryTreeImpl; import org.seasar.extension.jdbc.gen.internal.version.DdlVersionIncrementerImpl; import org.seasar.extension.jdbc.gen.internal.version.MigraterImpl; import org.seasar.extension.jdbc.gen.internal.version.SchemaInfoTableImpl; import org.seasar.extension.jdbc.gen.meta.DbTableMetaReader; import org.seasar.extension.jdbc.gen.meta.EntityMetaReader; import org.seasar.extension.jdbc.gen.model.AbstServiceModelFactory; import org.seasar.extension.jdbc.gen.model.ConditionModelFactory; import org.seasar.extension.jdbc.gen.model.EntityModelFactory; import org.seasar.extension.jdbc.gen.model.EntityTestModelFactory; import org.seasar.extension.jdbc.gen.model.NamesAggregateModelFactory; import org.seasar.extension.jdbc.gen.model.NamesModelFactory; import org.seasar.extension.jdbc.gen.model.ServiceModelFactory; import org.seasar.extension.jdbc.gen.model.ServiceTestModelFactory; import org.seasar.extension.jdbc.gen.model.SqlFileConstantNamingRule; import org.seasar.extension.jdbc.gen.model.SqlFileConstantsModelFactory; import org.seasar.extension.jdbc.gen.model.SqlFileTestModelFactory; import org.seasar.extension.jdbc.gen.model.SqlIdentifierCaseType; import org.seasar.extension.jdbc.gen.model.SqlKeywordCaseType; import org.seasar.extension.jdbc.gen.model.TableModelFactory; import org.seasar.extension.jdbc.gen.provider.ValueTypeProvider; import org.seasar.extension.jdbc.gen.sql.SqlFileExecutor; import org.seasar.extension.jdbc.gen.sql.SqlUnitExecutor; import org.seasar.extension.jdbc.gen.version.DdlVersionDirectoryTree; import org.seasar.extension.jdbc.gen.version.DdlVersionIncrementer; import org.seasar.extension.jdbc.gen.version.Migrater; import org.seasar.extension.jdbc.gen.version.SchemaInfoTable; import org.seasar.framework.convention.PersistenceConvention; /** * {@link Factory}の実装クラスです。 * * @author taedium */ public class FactoryImpl implements Factory { public EntityMetaReader createEntityMetaReader(Command command, File classpathDir, String packageName, EntityMetaFactory entityMetaFactory, String shortClassNamePattern, String ignoreShortClassNamePattern, boolean readComment, List<File> javaFileSrcDirList, String javaFileEncoding) { return new EntityMetaReaderImpl(classpathDir, packageName, entityMetaFactory, shortClassNamePattern, ignoreShortClassNamePattern, readComment, javaFileSrcDirList, javaFileEncoding); } public DatabaseDescFactory createDatabaseDescFactory(Command command, EntityMetaFactory entityMetaFactory, EntityMetaReader entityMetaReader, GenDialect dialect, ValueTypeProvider valueTypeProvider, boolean regardRelationshipAsFk) { return new DatabaseDescFactoryImpl(entityMetaFactory, entityMetaReader, dialect, valueTypeProvider, regardRelationshipAsFk); } public Dumper createDumper(Command command, GenDialect dialect, String dumpFileEncoding) { return new DumperImpl(dialect, dumpFileEncoding); } public SqlUnitExecutor createSqlUnitExecutor(Command command, DataSource dataSource, UserTransaction userTransaction, boolean haltOnError) { return new SqlUnitExecutorImpl(dataSource, userTransaction, haltOnError); } public DbTableMetaReader createDbTableMetaReader(Command command, DataSource dataSource, GenDialect dialect, String schemaName, String tableNamePattern, String ignoreTableNamePattern, boolean readComment) { return new DbTableMetaReaderImpl(dataSource, dialect, schemaName, tableNamePattern, ignoreTableNamePattern, readComment); } public SqlFileExecutor createSqlFileExecutor(Command command, GenDialect dialect, String sqlFileEncoding, char statementDelimiter, String blockDelimiter) { return new SqlFileExecutorImpl(dialect, sqlFileEncoding, statementDelimiter, blockDelimiter); } public ConditionModelFactory createConditionModelFactory(Command command, String packageName, String conditionClassNameSuffix) { ConditionAttributeModelFactoryImpl attributeModelFactory = new ConditionAttributeModelFactoryImpl(); ConditionAssociationModelFactoryImpl associationModelFactory = new ConditionAssociationModelFactoryImpl( conditionClassNameSuffix); return new ConditionModelFactoryImpl(attributeModelFactory, associationModelFactory, packageName, conditionClassNameSuffix); } public Generator createGenerator(Command command, String templateFileEncoding, File templateFilePrimaryDir) { return new GeneratorImpl(templateFileEncoding, templateFilePrimaryDir); } public DdlVersionDirectoryTree createDdlVersionDirectoryTree( Command command, File baseDir, File versionFile, String versionNoPattern, String env, boolean applyEnvToVersion) { return new DdlVersionDirectoryTreeImpl(baseDir, versionFile, versionNoPattern, applyEnvToVersion ? env : null); } public DdlVersionIncrementer createDdlVersionIncrementer(Command command, DdlVersionDirectoryTree ddlVersionDirectoryTree, GenDdlListener genDdlListener, GenDialect dialect, DataSource dataSource, List<String> createDirNameList, List<String> dropFileNameList) { return new DdlVersionIncrementerImpl(ddlVersionDirectoryTree, genDdlListener, dialect, dataSource, createDirNameList, dropFileNameList); } public TableModelFactory createTableModelFactory(Command command, GenDialect dialect, DataSource dataSource, SqlIdentifierCaseType sqlIdentifierCaseType, SqlKeywordCaseType sqlKeywordCaseType, char statementDelimiter, String tableOption, boolean useComment) { return new TableModelFactoryImpl(dialect, dataSource, sqlIdentifierCaseType, sqlKeywordCaseType, statementDelimiter, tableOption, useComment); } public EntitySetDescFactory createEntitySetDescFactory(Command command, DbTableMetaReader dbTableMetaReader, PersistenceConvention persistenceConvention, GenDialect dialect, String versionColumnNamePattern, File pluralFormFile, GenerationType generationType, Integer initialValue, Integer allocationSize) { return new EntitySetDescFactoryImpl(dbTableMetaReader, persistenceConvention, dialect, versionColumnNamePattern, pluralFormFile, generationType, initialValue, allocationSize); } public EntityModelFactory createEntityModelFactory(Command command, String packageName, Class<?> superclass, boolean useTemporalType, boolean useAccessor, boolean useComment, boolean showCatalogName, boolean showSchemaName, boolean showTableName, boolean showColumnName, boolean showColumnDefinition, boolean showJoinColumn, PersistenceConvention persistenceConvention) { return new EntityModelFactoryImpl(packageName, superclass, new AttributeModelFactoryImpl(showColumnName, showColumnDefinition, useTemporalType, persistenceConvention), new AssociationModelFactoryImpl(showJoinColumn), new CompositeUniqueConstraintModelFactoryImpl(), useAccessor, useComment, showCatalogName, showSchemaName, showTableName); } public ServiceModelFactory createServiceModelFactory(Command command, String packageName, String serviceClassNameSuffix, NamesModelFactory namesModelFactory, boolean useNamesClass, String jdbcManagerName) { return new ServiceModelFactoryImpl(packageName, serviceClassNameSuffix, namesModelFactory, useNamesClass, jdbcManagerName); } public ServiceTestModelFactory createServiceTestModelFactory( Command command, String configPath, String packageName, String serviceClassNameSuffix, String testClassNameSuffix, boolean useS2junit4) { return new ServiceTestModelFactoryImpl(configPath, packageName, serviceClassNameSuffix, testClassNameSuffix, useS2junit4); } public AbstServiceModelFactory createAbstServiceModelFactory( Command command, String packageName, String serviceClassNameSuffix) { return new AbstServiceModelFactoryImpl(packageName, serviceClassNameSuffix); } public EntityTestModelFactory createEntityTestModelFactory(Command command, String configPath, String jdbcManagerName, String testClassNameSuffix, NamesModelFactory namesModelFactory, boolean useNamesClass, boolean useS2junit4) { return new EntityTestModelFactoryImpl(configPath, jdbcManagerName, testClassNameSuffix, namesModelFactory, useNamesClass, useS2junit4); } public NamesModelFactory createNamesModelFactory(Command command, String packageName, String namesClassNameSuffix) { return new NamesModelFactoryImpl(packageName, namesClassNameSuffix); } public NamesAggregateModelFactory createNamesAggregateModelFactory( Command command, String packageName, String shortClassName) { return new NamesAggregateModelFactoryImpl(packageName, shortClassName); } public SchemaInfoTable createSchemaInfoTable(Command command, DataSource dataSource, GenDialect dialect, String fullTableName, String columnName) { return new SchemaInfoTableImpl(dataSource, dialect, fullTableName, columnName); } public Migrater createMigrater(Command command, SqlUnitExecutor sqlUnitExecutor, SchemaInfoTable schemaInfoTable, DdlVersionDirectoryTree ddlVersionDirectoryTree, String version, String env) { return new MigraterImpl(sqlUnitExecutor, schemaInfoTable, ddlVersionDirectoryTree, version, env); } public Loader createLoader(Command command, GenDialect dialect, String dumpFileEncoding, int batchSize, boolean delete) { return new LoaderImpl(dialect, dumpFileEncoding, batchSize, delete); } public GenerationContext createGenerationContext(Command command, Object model, File file, String templateName, String encoding, boolean overwrite) { return new GenerationContextImpl(model, file, templateName, encoding, overwrite); } public ValueTypeProvider createValueTypeProvider(Command command, DbmsDialect dbmsDialect) { return new ValueTypeProviderImpl(dbmsDialect); } public SqlFileTestModelFactory createSqlFileTestModelFactory( Command command, File classpathDir, Set<File> sqlFileSet, String configPath, String jdbcManagerName, String packageName, String shortClassName, boolean useS2junit4) { return new SqlFileTestModelFactoryImpl(classpathDir, sqlFileSet, configPath, jdbcManagerName, packageName, shortClassName, useS2junit4); } public SqlFileConstantsModelFactory createSqlFileConstantsModelFactory( Command command, File classpathDir, Set<File> sqlFileSet, SqlFileConstantNamingRule sqlFileConstantNamingRule, String packageName, String shortClassName) { return new SqlFileConstantsModelFactoryImpl(classpathDir, sqlFileSet, sqlFileConstantNamingRule, packageName, shortClassName); } }