import java.util.List;\r
\r
import jp.sourceforge.ea2ddl.common.config.Config;\r
-import jp.sourceforge.ea2ddl.dao.allcommon.cbean.ListResultBean;\r
import jp.sourceforge.ea2ddl.dao.cbean.TConnectorCB;\r
import jp.sourceforge.ea2ddl.dao.cbean.TOperationCB;\r
import jp.sourceforge.ea2ddl.dao.cbean.TOperationparamsCB;\r
import jp.sourceforge.ea2ddl.dao.exbhv.TAttributeBhv;\r
import jp.sourceforge.ea2ddl.dao.exbhv.TConnectorBhv;\r
import jp.sourceforge.ea2ddl.dao.exbhv.TObjectBhv;\r
+import jp.sourceforge.ea2ddl.dao.exbhv.TObjectconstraintBhv;\r
import jp.sourceforge.ea2ddl.dao.exbhv.TObjectpropertiesBhv;\r
import jp.sourceforge.ea2ddl.dao.exbhv.TOperationBhv;\r
import jp.sourceforge.ea2ddl.dao.exbhv.TOperationparamsBhv;\r
import jp.sourceforge.ea2ddl.dao.exentity.TOperation;\r
import jp.sourceforge.ea2ddl.dao.exentity.TOperationparams;\r
import jp.sourceforge.ea2ddl.dao.exentity.TPackage;\r
-import jp.sourceforge.ea2ddl.ddl.factory.DatabaseModelFactory;\r
+import jp.sourceforge.ea2ddl.ddl.ConfigKey;\r
+import jp.sourceforge.ea2ddl.ddl.Constants;\r
+import jp.sourceforge.ea2ddl.ddl.factory.ModelFactory;\r
import jp.sourceforge.ea2ddl.ddl.model.ColumnModel;\r
import jp.sourceforge.ea2ddl.ddl.model.DatabaseModel;\r
import jp.sourceforge.ea2ddl.ddl.model.ForeignKeyModel;\r
+import jp.sourceforge.ea2ddl.ddl.model.IndexModel;\r
import jp.sourceforge.ea2ddl.ddl.model.PrimaryKeyModel;\r
import jp.sourceforge.ea2ddl.ddl.model.TableModel;\r
import jp.sourceforge.ea2ddl.ddl.model.UniqueModel;\r
\r
import org.apache.commons.logging.Log;\r
import org.apache.commons.logging.LogFactory;\r
+import org.seasar.dbflute.cbean.ListResultBean;\r
import org.seasar.framework.container.annotation.tiger.Binding;\r
\r
/**\r
* @author taktos\r
* \r
*/\r
-public class DatabaseModelFactoryImpl implements DatabaseModelFactory {\r
+public class DatabaseModelFactoryImpl implements ModelFactory {\r
private Log _log = LogFactory.getLog(DatabaseModelFactoryImpl.class);\r
\r
private Config _config;\r
private TPackageBhv _tPackageBhv;\r
private TObjectBhv _tObjectBhv;\r
private TObjectpropertiesBhv _tObjectpropertiesBhv;\r
+ private TObjectconstraintBhv _tObjectconstraintBhv;\r
private TAttributeBhv _tAttributeBhv;\r
private TConnectorBhv _tConnectorBhv;\r
private TOperationBhv _tOperationBhv;\r
}\r
\r
@Binding\r
+ public void setTObjectconstraintBhv(TObjectconstraintBhv objectconstraintBhv) {\r
+ _tObjectconstraintBhv = objectconstraintBhv;\r
+ }\r
+\r
+ @Binding\r
public void setTAttributeBhv(TAttributeBhv attributeBhv) {\r
_tAttributeBhv = attributeBhv;\r
}\r
*/\r
public DatabaseModel create() {\r
final DatabaseModel dbModel = new DatabaseModel();\r
- final TPackage pkg = getPackage(_config.getProperty("er.package.tree"));\r
- final List<TObject> objectList = _tObjectBhv.selectListByStereotype(pkg, "table");\r
+ final TPackage pkg = getPackage();\r
+ final List<TObject> objectList = _tObjectBhv.selectListByStereotype(\r
+ pkg, Constants.STEREOTYPE_TABLE);\r
_log.debug(objectList.size());\r
\r
for (TObject object : objectList) {\r
return dbModel;\r
}\r
\r
- protected TPackage getPackage(String packageTree) {\r
- return _tPackageBhv.selectPackage(packageTree);\r
+ protected TPackage getPackage() {\r
+ return _tPackageBhv.selectPackage(_config\r
+ .getProperty(ConfigKey.ER_PACKAGE_TREE));\r
}\r
\r
protected TableModel generateTableModel(TObject tobject) {\r
table.setName(tobject.getName());\r
table.setAlias(tobject.getAlias());\r
table.setNote(tobject.getNote());\r
- if (_config.getBoolean("use.schema")) {\r
- table.setSchema(_tObjectpropertiesBhv.getValue(tobject, "OWNER"));\r
+ if (_config.getBoolean(_config.getProperty(ConfigKey.USE_SCHEMA))) {\r
+ table.setSchema(_tObjectpropertiesBhv.getValue(tobject,\r
+ Constants.OBJECT_PROPERTIES_OWNER));\r
}\r
+ table.setSuppressCommonColumn(_tObjectconstraintBhv.hasConstraint(\r
+ tobject, Constants.SUPPRESS_COMMON_COLUMN));\r
generateColumnModel(table, tobject);\r
generatePKModel(table, tobject);\r
generateFKModel(table, tobject);\r
generateUniqueModel(table, tobject);\r
-\r
+ generateIndexModel(table, tobject);\r
return table;\r
}\r
\r
protected void generateColumnModel(TableModel table, TObject tobject) {\r
- final List<TAttribute> attributes = _tAttributeBhv.selectColumns(tobject);\r
+ final List<TAttribute> attributes = _tAttributeBhv\r
+ .selectColumns(tobject);\r
for (TAttribute attribute : attributes) {\r
- final ColumnModel column = new ColumnModel();\r
- column.setName(attribute.getName());\r
- column.setAlias(attribute.getStyle());\r
- column.setType(attribute.getType());\r
- column.setLength(attribute.getLength());\r
- column.setPrecision(attribute.getPrecision());\r
- column.setScale(attribute.getScale());\r
- column.setNullable(Integer.valueOf(0).equals(attribute.getAllowduplicates()));\r
- column.setNote(attribute.getNotes());\r
- table.addColumn(column);\r
+ table.addColumn(ColumnModel.create(attribute, _config));\r
+ }\r
+ }\r
+\r
+ protected String getColumnType(TAttribute attribute) {\r
+ final String dictionary = _config.getProperty(attribute.getType());\r
+ if (dictionary != null) {\r
+ return dictionary;\r
}\r
+ return attribute.getType();\r
}\r
\r
protected void generatePKModel(TableModel table, TObject tobject) {\r
- final ListResultBean<TOperation> pkList = _tOperationBhv.selectOperation(tobject, "PK");\r
+ final ListResultBean<TOperation> pkList = _tOperationBhv\r
+ .selectOperation(tobject, Constants.STEREOTYPE_PRIMARY_KEY);\r
if (pkList.isEmpty()) {\r
return;\r
}\r
final TOperation opePK = pkList.get(0);\r
- final ListResultBean<TOperationparams> params = _tOperationparamsBhv.selectOperationParams(opePK);\r
+ final ListResultBean<TOperationparams> params = _tOperationparamsBhv\r
+ .selectOperationParams(opePK);\r
if (!params.isEmpty()) {\r
final PrimaryKeyModel pk = new PrimaryKeyModel();\r
pk.setName(opePK.getName());\r
}\r
\r
protected void generateFKModel(TableModel table, TObject tobject) {\r
- final ListResultBean<TOperation> fkList = _tOperationBhv.selectOperation(tobject, "FK");\r
+ final ListResultBean<TOperation> fkList = _tOperationBhv\r
+ .selectOperation(tobject, Constants.STEREOTYPE_FOREIGN_KEY);\r
for (TOperation opeFK : fkList) {\r
final ForeignKeyModel fkModel = new ForeignKeyModel();\r
fkModel.setName(opeFK.getName());\r
\r
{\r
- final ListResultBean<TOperationparams> params = _tOperationparamsBhv.selectOperationParams(opeFK);\r
+ final ListResultBean<TOperationparams> params = _tOperationparamsBhv\r
+ .selectOperationParams(opeFK);\r
for (TOperationparams param : params) {\r
fkModel.addColumnName(param.getName());\r
}\r
conCB.query().setSourcerole_Equal(opeFK.getName());\r
final TConnector con = _tConnectorBhv.selectEntity(conCB);\r
\r
- final TObject targetTable = _tObjectBhv.selectEntity(con.getEndObjectId());\r
+ final TObject targetTable = _tObjectBhv.selectEntity(con\r
+ .getEndObjectId());\r
fkModel.setTargetTable(targetTable.getName());\r
\r
final TOperationCB targetOpeCB = new TOperationCB();\r
targetOpeCB.query().setObjectId_Equal(con.getEndObjectId());\r
targetOpeCB.query().setName_Equal(con.getDestrole());\r
- final TOperation targetOpe = _tOperationBhv.selectEntity(targetOpeCB);\r
+ final TOperation targetOpe = _tOperationBhv\r
+ .selectEntity(targetOpeCB);\r
\r
final ListResultBean<TOperationparams> targetParams = _tOperationparamsBhv\r
.selectOperationParams(targetOpe);\r
protected void generateUniqueModel(TableModel table, TObject tobject) {\r
final TOperationCB cb = new TOperationCB();\r
cb.query().setObjectId_Equal(tobject.getObjectId());\r
- cb.query().setStereotype_Equal("unique");\r
- final ListResultBean<TOperation> uniqueList = _tOperationBhv.selectList(cb);\r
+ cb.query().setStereotype_Equal(Constants.STEREOTYPE_UNIQUE);\r
+ final ListResultBean<TOperation> uniqueList = _tOperationBhv\r
+ .selectList(cb);\r
for (TOperation unique : uniqueList) {\r
final UniqueModel uniqueModel = new UniqueModel();\r
uniqueModel.setName(unique.getName());\r
final TOperationparamsCB opeCB = new TOperationparamsCB();\r
opeCB.query().setOperationid_Equal(unique.getOperationid());\r
opeCB.query().addOrderBy_Pos_Asc();\r
- final ListResultBean<TOperationparams> cols = _tOperationparamsBhv.selectList(opeCB);\r
+ final ListResultBean<TOperationparams> cols = _tOperationparamsBhv\r
+ .selectList(opeCB);\r
for (TOperationparams param : cols) {\r
uniqueModel.addColumnName(param.getName());\r
}\r
table.addUnique(uniqueModel);\r
}\r
}\r
+\r
+ protected void generateIndexModel(TableModel table, TObject tobject) {\r
+ final ListResultBean<TOperation> indexList = _tOperationBhv\r
+ .selectOperation(tobject, "index");\r
+ for (TOperation index : indexList) {\r
+ final IndexModel indexModel = new IndexModel();\r
+ indexModel.setName(index.getName());\r
+ final ListResultBean<TOperationparams> params = _tOperationparamsBhv\r
+ .selectOperationParams(index);\r
+ for (TOperationparams param : params) {\r
+ indexModel.addColumn(param.getName());\r
+ }\r
+ table.addIndex(indexModel);\r
+ }\r
+ }\r
+\r
}\r