svnno****@sourc*****
svnno****@sourc*****
2009年 9月 20日 (日) 21:31:06 JST
Revision: 3618 http://sourceforge.jp/projects/jiemamy/svn/view?view=rev&revision=3618 Author: yamkazu Date: 2009-09-20 21:31:06 +0900 (Sun, 20 Sep 2009) Log Message: ----------- ExecuteMojoをSQL Exporterに依存するのをやめた。 SQLをDBに適用する処理を追加。 テストはとりあえず @Ignoreで。 Modified Paths: -------------- eros/maven-jiemamy-plugin/trunk/pom.xml eros/maven-jiemamy-plugin/trunk/src/main/java/org/jiemamy/maven/ExecuteMojo.java Added Paths: ----------- eros/maven-jiemamy-plugin/trunk/src/test/java/org/jiemamy/maven/ExecuteMojoTest.java eros/maven-jiemamy-plugin/trunk/src/test/resources/jiemamy.jer Modified: eros/maven-jiemamy-plugin/trunk/pom.xml =================================================================== --- eros/maven-jiemamy-plugin/trunk/pom.xml 2009-09-18 20:15:25 UTC (rev 3617) +++ eros/maven-jiemamy-plugin/trunk/pom.xml 2009-09-20 12:31:06 UTC (rev 3618) @@ -1,65 +1,70 @@ <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.jiemamy</groupId> - <artifactId>master</artifactId> - <version>1.1</version> - </parent> - <groupId>org.jiemamy</groupId> - <artifactId>maven-jiemamy-plugin</artifactId> - <packaging>maven-plugin</packaging> - <name>Jiemamy Maven Plugin</name> - <version>0.2.1-SNAPSHOT</version> - <url>http://report.jiemamy.org/maven-jiemamy-plugin</url> - <issueManagement> - <system>JIRA</system> - <url>http://jira.jiemamy.org/jira/browse/MVN</url> - </issueManagement> - <developers> - <developer> - <id>daisuke</id> - <name>MIYAMOTO Daisuke</name> - <email>daisuke_m****@users*****</email> - <url>http://d.hatena.ne.jp/cepoc/</url> - <timezone>+9</timezone> - </developer> - </developers> - <scm> - <connection>scm:svn:http://svn.sourceforge.jp/svnroot/jiemamy/eros/maven-jiemamy-plugin/trunk</connection> - <developerConnection>scm:svn:svn+ssh://devel****@svn*****/svnroot/eros/maven-jiemamy-plugin/trunk</developerConnection> - <url>http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/eros/maven-jiemamy-plugin/trunk/?root=jiemamy</url> - </scm> - <repositories> - <repository> - <id>jiemamy.org</id> - <name>Jiemamy Repository</name> - <url>http://maven.jiemamy.org/release</url> - </repository> - </repositories> - <dependencies> - <dependency> - <groupId>org.apache.maven</groupId> - <artifactId>maven-plugin-api</artifactId> - <version>2.0</version> - </dependency> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <version>4.5</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.jiemamy</groupId> - <artifactId>jiemamy-core</artifactId> - <version>0.2.0</version> - </dependency> - <dependency> - <groupId>org.jiemamy</groupId> - <artifactId>jiemamy-dialect-mysql</artifactId> - <version>0.2.0</version> - <scope>test</scope> - </dependency> - </dependencies> + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.jiemamy</groupId> + <artifactId>master</artifactId> + <version>1.1</version> + </parent> + <groupId>org.jiemamy</groupId> + <artifactId>maven-jiemamy-plugin</artifactId> + <packaging>maven-plugin</packaging> + <name>Jiemamy Maven Plugin</name> + <version>0.2.1-SNAPSHOT</version> + <url>http://report.jiemamy.org/maven-jiemamy-plugin</url> + <issueManagement> + <system>JIRA</system> + <url>http://jira.jiemamy.org/jira/browse/MVN</url> + </issueManagement> + <developers> + <developer> + <id>daisuke</id> + <name>MIYAMOTO Daisuke</name> + <email>daisuke_m****@users*****</email> + <url>http://d.hatena.ne.jp/cepoc/</url> + <timezone>+9</timezone> + </developer> + </developers> + <scm> + <connection>scm:svn:http://svn.sourceforge.jp/svnroot/jiemamy/eros/maven-jiemamy-plugin/trunk</connection> + <developerConnection>scm:svn:svn+ssh://devel****@svn*****/svnroot/eros/maven-jiemamy-plugin/trunk</developerConnection> + <url>http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/eros/maven-jiemamy-plugin/trunk/?root=jiemamy</url> + </scm> + <repositories> + <repository> + <id>jiemamy.org</id> + <name>Jiemamy Repository</name> + <url>http://maven.jiemamy.org/release</url> + </repository> + </repositories> + <dependencies> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-plugin-api</artifactId> + <version>2.0</version> + </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.5</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.jiemamy</groupId> + <artifactId>jiemamy-core</artifactId> + <version>0.2.0</version> + </dependency> + <dependency> + <groupId>org.jiemamy</groupId> + <artifactId>jiemamy-dialect-postgresql</artifactId> + <version>0.2.0</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>postgresql</groupId> + <artifactId>postgresql</artifactId> + <version>8.3-603.jdbc4</version> + </dependency> + </dependencies> </project> \ No newline at end of file Modified: eros/maven-jiemamy-plugin/trunk/src/main/java/org/jiemamy/maven/ExecuteMojo.java =================================================================== --- eros/maven-jiemamy-plugin/trunk/src/main/java/org/jiemamy/maven/ExecuteMojo.java 2009-09-18 20:15:25 UTC (rev 3617) +++ eros/maven-jiemamy-plugin/trunk/src/main/java/org/jiemamy/maven/ExecuteMojo.java 2009-09-20 12:31:06 UTC (rev 3618) @@ -21,17 +21,29 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; +import java.io.IOException; +import java.net.URL; +import java.sql.Connection; +import java.sql.Driver; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.List; import java.util.Map; +import java.util.Properties; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.jiemamy.Jiemamy; -import org.jiemamy.composer.ExportException; -import org.jiemamy.composer.exporter.DefaultSqlExportConfig; -import org.jiemamy.composer.exporter.SqlExporter; +import org.jiemamy.composer.importer.DefaultDatabaseImportConfig; +import org.jiemamy.dialect.Dialect; +import org.jiemamy.dialect.EmitConfig; +import org.jiemamy.exception.DriverNotFoundException; import org.jiemamy.model.RootModel; +import org.jiemamy.model.sql.SqlStatement; import org.jiemamy.serializer.SerializationException; +import org.jiemamy.utils.DriverUtil; +import org.jiemamy.utils.JmIOUtil; /** * jerファイルから生成したSQLをDBに適用するゴール。 @@ -41,6 +53,15 @@ */ public class ExecuteMojo extends AbstractMojo { + /** ConfigKey: 出力データセット番号 (Integer) */ + private static final String DATA_SET_INDEX = "dataSetIndex"; + + /** ConfigKey: DROP文を出力するかどうか (Boolean) */ + private static final String DROP = "drop"; + + /** ConfigKey: DROP文を出力するかどうか (Boolean) */ + private static final String SCHEMA = "schema"; + /** * Location of the input model file. * @@ -51,73 +72,217 @@ /** * Parameter for exorter. + * + * <p>example</p> + * + * <pre>{@code + * <parameter> + * <schema>true</schema> + * <drop>true</drop> + * <dataSetIndex>0</dataSetIndex> + * <parameter> + * }</pre> + * * @parameter */ private Map<String, Object> parameter; + /** + * Database Username + * + * @parameter + * @required + */ + private String username; + + /** + * Database Password + * + * @parameter + * @required + */ + private String password; + + /** + * Database Driver + * + * @parameter + * @required + */ + private String driver; + + /** + * Database Uri + * + * @parameter + * @required + */ + private String uri; + + /** + * {@link RootModel}をよりSQLを生成し、DatabaseにSQLを適用します。 + */ public void execute() throws MojoExecutionException { getLog().info(">>>> Starting maven-jiemamy-plugin..."); -// if (outputFile.lastModified() > inputFile.lastModified()) { -// getLog().info("Nothing to generate - SQL file is up to date."); -// getLog().info("Exit maven-jiemamy-plugin."); -// return; -// } - try { getLog().info("Open Jiemamy model file " + inputFile.getName()); - FileInputStream inputStream = new FileInputStream(inputFile); + FileInputStream inputStream; + inputStream = new FileInputStream(inputFile); getLog().info("Serializing stream to model."); Jiemamy jiemamy = Jiemamy.newInstance(); RootModel rootModel = jiemamy.getSerializer().deserialize(inputStream); getLog().debug(rootModel.toString()); - SqlExporter exporter = new SqlExporter(); + getLog().info("Exec Sql..."); + Dialect dialect = jiemamy.getDialect(rootModel); + List<SqlStatement> sqlStatements = dialect.emitStatements(rootModel, newEmitConfig()); + execSqlStatment(sqlStatements); -// @SuppressWarnings("unchecked") -// Exporter<SqlExportConfig> exporter = (Exporter<SqlExportConfig>) Class.forName(exporterClass).newInstance(); - - getLog().info("Configure Exporter..."); - - // TODO Exporter指定されたら、Configも変えなきゃだよな…。 - DefaultSqlExportConfig config = new DefaultSqlExportConfig(); - config.setOutputFile(new File((String) parameter.get(SqlExporter.OUTPUT_FILE))); - config.setOverwrite(Boolean.valueOf((String) parameter.get(SqlExporter.OVERWRITE))); - config.setEmitDropStatements(Boolean.valueOf((String) parameter.get(SqlExporter.DROP))); - config.setEmitCreateSchema(Boolean.valueOf((String) parameter.get(SqlExporter.SCHEMA))); - String indexObject = (String) parameter.get(SqlExporter.DATA_SET_INDEX); - config.setDataSetIndex(indexObject == null ? -1 : Integer.valueOf(indexObject)); - - getLog().info("Executing Exporter..."); - - exporter.exportModel(rootModel, config); } catch (FileNotFoundException e) { - e.printStackTrace(); - throw new MojoExecutionException("Jiemamy model file \"" + inputFile.getName() + "\" is not found.", e); + throw new MojoExecutionException("can not found input file: " + inputFile.getName(), e); } catch (SerializationException e) { - e.printStackTrace(); - throw new MojoExecutionException("Cannot deserialize file \"" + inputFile.getName(), e); -// } catch (ClassNotFoundException e) { -// e.printStackTrace(); -// throw new MojoExecutionException("Exporter \"" + exporterClass + "\" is not found.", e); -// } catch (InstantiationException e) { -// e.printStackTrace(); -// throw new MojoExecutionException("Cannot instantiate Exporter \"" + exporterClass + "\"", e); -// } catch (IllegalAccessException e) { -// e.printStackTrace(); -// throw new MojoExecutionException("Cannot access Exporter \"" + exporterClass + "\"", e); - } catch (ExportException e) { - e.printStackTrace(); - throw new MojoExecutionException("ExportException is thrown.", e); - } catch (Exception e) { - e.printStackTrace(); - throw new MojoExecutionException("Exception is thrown.", e); - } finally { - getLog().info("done."); + throw new MojoExecutionException("can not serialization jiemamy model.", e); + } catch (ClassNotFoundException e) { + throw new MojoExecutionException("can not get Dialect from input file.", e); } getLog().info("<<<< Exit maven-jiemamy-plugin successfully."); } + + /** + * {@link Connection}を取得します。 + * + * @return {@link Connection} + * @throws MojoExecutionException {@link Connection}が取得できなかった場合 + * @since 0.3 + */ + protected Connection getConnection() throws MojoExecutionException { + Connection connection = null; + DefaultDatabaseImportConfig config = new DefaultDatabaseImportConfig(); + config.setDriverClassName(driver); + config.setUsername(username); + config.setPassword(password); + config.setUri(uri); + + Properties props = new Properties(); + props.setProperty("user", config.getUsername()); + props.setProperty("password", config.getPassword()); + + URL[] paths = config.getDriverJarPaths(); + String className = config.getDriverClassName(); + + try { + Driver jdbcDriver = DriverUtil.getDriverInstance(paths, className); + connection = jdbcDriver.connect(config.getUri(), props); + } catch (DriverNotFoundException e) { + throw new MojoExecutionException("", e); + } catch (InstantiationException e) { + throw new MojoExecutionException("", e); + } catch (IllegalAccessException e) { + throw new MojoExecutionException("", e); + } catch (IOException e) { + throw new MojoExecutionException("", e); + } catch (SQLException e) { + throw new MojoExecutionException("", e); + } + + if (connection == null) { + throw new MojoExecutionException("can not create connection"); + } + return connection; + } + + /** + * {@link SqlStatement}の{@link List}からSQLを取得し、実行します。 + * + * @param sqlStatements {@link SqlStatement}のリスト + * @throws MojoExecutionException SQLの実行に失敗した場合 + * @since 0.3 + */ + private void execSqlStatment(List<SqlStatement> sqlStatements) throws MojoExecutionException { + Connection connection = null; + Statement statement = null; + try { + connection = getConnection(); + statement = connection.createStatement(); + try { + for (SqlStatement sqlStatement : sqlStatements) { + getLog().debug(sqlStatement.toString()); + statement.execute(sqlStatement.toString()); + } + } finally { + statement.close(); + } + } catch (SQLException e) { + throw new MojoExecutionException("", e); + } finally { + JmIOUtil.closeQuietly(connection); + } + } + + @SuppressWarnings("unchecked") + private <T>T getConfig(String key, T defaultValue) { + Object value = parameter.get(key); + return value == null ? defaultValue : (T) value; + } + + /** + * {@link #parameter}より{@link EmitConfig}の設定ファイルを生成する。 + * + * @return {@link EmitConfig} + * @since 0.3 + */ + private EmitConfig newEmitConfig() { + boolean schema = getConfig(SCHEMA, true); + boolean drop = getConfig(DROP, true); + int dataSetIndex = getConfig(DATA_SET_INDEX, 0); + return new ExecuteEmitConfig(schema, drop, dataSetIndex); + } + + + /** + * {@link ExecuteMojo}で使用する{@link EmitConfig}。 + * + * @since 0.3 + * @author yamkazu + */ + private static class ExecuteEmitConfig implements EmitConfig { + + boolean emitCreateSchemaStatement; + + boolean emitDropStatements; + + int dataSetIndex; + + + /** + * インスタンスを生成する。 + * + * @param emitCreateSchemaStatement スキーマを出力する場合は{@code true} + * @param emitDropStatements ドロップ文を出力する場合は{@code ture} + * @param dataSetIndex データセットのインデックス + */ + ExecuteEmitConfig(boolean emitCreateSchemaStatement, boolean emitDropStatements, int dataSetIndex) { + super(); + this.emitCreateSchemaStatement = emitCreateSchemaStatement; + this.emitDropStatements = emitDropStatements; + this.dataSetIndex = dataSetIndex; + } + + public boolean emitCreateSchemaStatement() { + return emitCreateSchemaStatement; + } + + public boolean emitDropStatements() { + return emitDropStatements; + } + + public int getDataSetIndex() { + return dataSetIndex; + } + } + } Added: eros/maven-jiemamy-plugin/trunk/src/test/java/org/jiemamy/maven/ExecuteMojoTest.java =================================================================== --- eros/maven-jiemamy-plugin/trunk/src/test/java/org/jiemamy/maven/ExecuteMojoTest.java (rev 0) +++ eros/maven-jiemamy-plugin/trunk/src/test/java/org/jiemamy/maven/ExecuteMojoTest.java 2009-09-20 12:31:06 UTC (rev 3618) @@ -0,0 +1,116 @@ +/* + * Copyright 2007-2009 Jiemamy Project and the Others. + * Created on 2009/09/20 + * + * 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.maven; + +import java.io.File; +import java.lang.reflect.Field; +import java.util.HashMap; + +import org.junit.After; +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; + +/** + * {@link ExecuteMojo}のテストクラス。 + * + * @since 0.3 + * @author yamkazu + */ +public class ExecuteMojoTest { + + /** Database Username */ + private static final String DB_USER = "postgres"; + + /** Database Password */ + private static final String DB_PASSWORD = "postgres"; + + /** Database Url */ + private static final String DB_URL = "jdbc:postgresql:test"; + + /** Database Driver */ + private static final String DB_DRIVER = "org.postgresql.Driver"; + + /** テスト用入力ファイル */ + private static final File inputFile = new File("src/test/resources/jiemamy.jer"); + + /** テスト対象 */ + private ExecuteMojo executeMojo; + + + /** + * テストを初期化する。 + * + * @throws Exception 例外が発生した場合 + */ + @Before + public void setUp() throws Exception { + executeMojo = new ExecuteMojo(); + + HashMap<String, Object> parameter = new HashMap<String, Object>(); + + Field parameterField = ExecuteMojo.class.getDeclaredField("parameter"); + parameterField.setAccessible(true); + parameterField.set(executeMojo, parameter); + + Field inputFileField = ExecuteMojo.class.getDeclaredField("inputFile"); + inputFileField.setAccessible(true); + inputFileField.set(executeMojo, inputFile); + + Field driverField = ExecuteMojo.class.getDeclaredField("driver"); + driverField.setAccessible(true); + driverField.set(executeMojo, DB_DRIVER); + + Field uriField = ExecuteMojo.class.getDeclaredField("uri"); + uriField.setAccessible(true); + uriField.set(executeMojo, DB_URL); + + Field usernameFiled = ExecuteMojo.class.getDeclaredField("username"); + usernameFiled.setAccessible(true); + usernameFiled.set(executeMojo, DB_USER); + + Field passwordField = ExecuteMojo.class.getDeclaredField("password"); + passwordField.setAccessible(true); + passwordField.set(executeMojo, DB_PASSWORD); + + } + + /** + * テストの情報を破棄する。 + * + * @throws Exception 例外が発生した場合 + */ + @After + public void tearDown() throws Exception { + executeMojo = null; + } + + /** + * JiemamyModelからSQLを生成しDBに適用する。 + * + * @throws Exception テストに失敗した場合 + * @since 0.3 + */ + @Test + @Ignore + public void test01_JiemamyModelからSQLを生成しDBに適用する() throws Exception { + executeMojo.execute(); + } + +} Property changes on: eros/maven-jiemamy-plugin/trunk/src/test/java/org/jiemamy/maven/ExecuteMojoTest.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: eros/maven-jiemamy-plugin/trunk/src/test/resources/jiemamy.jer =================================================================== --- eros/maven-jiemamy-plugin/trunk/src/test/resources/jiemamy.jer (rev 0) +++ eros/maven-jiemamy-plugin/trunk/src/test/resources/jiemamy.jer 2009-09-20 12:31:06 UTC (rev 3618) @@ -0,0 +1,364 @@ +<?xml version="1.0" encoding="UTF-8"?> +<jiemamy xmlns="http://jiemamy.org/xml/ns/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="20331948-0618-4069-952c-c884ea4449ed" version="0.2" xsi:schemaLocation="http://jiemamy.org/xml/ns/core http://jiemamy.org/xml/0.2/jiemamy-core.xsd http://jiemamy.org/xml/ns/view http://jiemamy.org/xml/0.2/jiemamy-view.xsd"> + <dialect>org.jiemamy.dialect.postgresql.PostgresqlDialect</dialect> + <endScript>SELECT setval('emp_id_seq', 14);</endScript> + <domains/> + <entities> + <table id="b0eb61af-8f86-47ab-bde4-bc4fc9bdc47a"> + <name>DEPT</name> + <logicalName>部署</logicalName> + <description>部署テーブルです。</description> + <attributes> + <primaryKey id="aa335d18-9a4a-4337-883a-445757fb8d1f"> + <columnRefs> + <columnRef ref="d1bc12f1-068e-4299-9e24-c88bd67e2c13"/> + </columnRefs> + </primaryKey> + <column id="d1bc12f1-068e-4299-9e24-c88bd67e2c13"> + <name>ID</name> + <logicalName>部署ID</logicalName> + <description>ほげほげ</description> + <dataType> + <typeCategory>INTEGER</typeCategory> + <typeName>SERIAL</typeName> + </dataType> + <notNull id="191f5cd2-f063-4454-8467-6342f7f4a822"/> + </column> + <column id="d783d6d9-737b-4198-ae94-42c3d5b3570b"> + <name>DEPT_NO</name> + <logicalName>部署NO</logicalName> + <dataType> + <typeCategory>INTEGER</typeCategory> + <typeName>INTEGER</typeName> + </dataType> + <notNull id="99350550-4ed2-4512-9512-663756587168"/> + </column> + <column id="9fbbd509-18f3-4209-82ea-481ac387980c"> + <name>DEPT_NAME</name> + <logicalName>部署名</logicalName> + <dataType> + <typeCategory>VARCHAR</typeCategory> + <typeName>VARCHAR</typeName> + <adapter class="org.jiemamy.model.datatype.adapter.SizedDataTypeAdapter"> + <size>20</size> + </adapter> + </dataType> + </column> + <column id="626102d4-8235-495e-9759-3ea600dbce6c"> + <name>LOC</name> + <logicalName>ロケーション</logicalName> + <dataType> + <typeCategory>VARCHAR</typeCategory> + <typeName>VARCHAR</typeName> + <adapter class="org.jiemamy.model.datatype.adapter.SizedDataTypeAdapter"> + <size>20</size> + </adapter> + </dataType> + </column> + <column id="00d8aebd-11ec-47d8-9f2e-1ca135c78fcd"> + <name>VERSION_NO</name> + <dataType> + <typeCategory>INTEGER</typeCategory> + <typeName>INTEGER</typeName> + </dataType> + </column> + </attributes> + <indexes/> + </table> + <table id="d492ab23-b213-4cb3-bc50-3c865eb1b59d"> + <name>EMP</name> + <logicalName>従業員</logicalName> + <description>従業員のテーブルです。</description> + <attributes> + <primaryKey id="70fe04ba-e762-453d-8120-2d926e98355b"> + <columnRefs> + <columnRef ref="9b948a38-607b-4883-8ee6-bc44dc00a256"/> + </columnRefs> + </primaryKey> + <column id="9b948a38-607b-4883-8ee6-bc44dc00a256"> + <name>ID</name> + <logicalName>従業員ID</logicalName> + <dataType> + <typeCategory>INTEGER</typeCategory> + <typeName>SERIAL</typeName> + </dataType> + <notNull id="a788908a-7b9d-4d5d-a8e6-c920b0d66947"/> + </column> + <column id="0f469616-6432-4a4d-9de5-a10e100668a4"> + <name>EMP_NO</name> + <logicalName>従業員NO</logicalName> + <dataType> + <typeCategory>INTEGER</typeCategory> + <typeName>INTEGER</typeName> + </dataType> + <notNull id="472f7063-fb7c-489a-b5a7-f693fe066d35"/> + </column> + <column id="52e31885-3619-4185-9bcb-4e8f004a42ad"> + <name>EMP_NAME</name> + <logicalName>従業員名</logicalName> + <dataType> + <typeCategory>VARCHAR</typeCategory> + <typeName>VARCHAR</typeName> + <adapter class="org.jiemamy.model.datatype.adapter.SizedDataTypeAdapter"> + <size>20</size> + </adapter> + </dataType> + </column> + <column id="fbde8ebe-f1d0-4e41-82d3-92915baabdb5"> + <name>MGR_ID</name> + <logicalName>役職ID</logicalName> + <dataType> + <typeCategory>INTEGER</typeCategory> + <typeName>INTEGER</typeName> + </dataType> + <defaultValue>1</defaultValue> + </column> + <column id="bb508d71-e082-4aef-9ee0-b964a5fe16a0"> + <name>HIREDATE</name> + <logicalName>契約日</logicalName> + <dataType> + <typeCategory>DATE</typeCategory> + <typeName>DATE</typeName> + </dataType> + </column> + <column id="c869b6bd-6c90-4194-8664-fa8b57357ff1"> + <name>SAL</name> + <logicalName>給料</logicalName> + <dataType> + <typeCategory>DECIMAL</typeCategory> + <typeName>DECIMAL</typeName> + <adapter class="org.jiemamy.model.datatype.adapter.PrecisionedDataTypeAdapter"> + <precision>7</precision> + <scale>2</scale> + </adapter> + </dataType> + </column> + <column id="4db0a4db-709c-4c80-bc36-f043e8c49116"> + <name>DEPT_ID</name> + <logicalName>部署ID</logicalName> + <description>ほげほげ</description> + <dataType> + <typeCategory>INTEGER</typeCategory> + <typeName>INTEGER</typeName> + </dataType> + </column> + <column id="b1ac3bc7-04b1-41b4-b182-a4002da045c8"> + <name>VERSION_NO</name> + <dataType> + <typeCategory>INTEGER</typeCategory> + <typeName>INTEGER</typeName> + </dataType> + </column> + <foreignKey id="441c5fe6-08ba-49ba-8ca7-3e5cc9e00c97"> + <columnRefs> + <columnRef ref="4db0a4db-709c-4c80-bc36-f043e8c49116"/> + </columnRefs> + <referenceColumns> + <columnRef ref="d1bc12f1-068e-4299-9e24-c88bd67e2c13"/> + </referenceColumns> + </foreignKey> + </attributes> + <indexes/> + </table> + </entities> + <dataSets> + <dataSet id="3d598887-585f-40df-8d5f-3505bc118d5c"> + <name>jiemamy.dml</name> + <tableRef ref="b0eb61af-8f86-47ab-bde4-bc4fc9bdc47a"> + <record id="0d0a3cbb-dd8d-4cda-9935-6f943efa4c84"> + <columnRef ref="2a0b272c-0600-4235-9ba2-d9ce0a959b6e">1</columnRef> + <columnRef ref="d1bc12f1-068e-4299-9e24-c88bd67e2c13">1</columnRef> + <columnRef ref="d783d6d9-737b-4198-ae94-42c3d5b3570b">10</columnRef> + <columnRef ref="9fbbd509-18f3-4209-82ea-481ac387980c">ACCOUNTING</columnRef> + <columnRef ref="626102d4-8235-495e-9759-3ea600dbce6c">NEW YORK</columnRef> + <columnRef ref="00d8aebd-11ec-47d8-9f2e-1ca135c78fcd">1</columnRef> + </record> + <record id="2edb73ee-fd1f-4834-a886-94e7ad4e6d4e"> + <columnRef ref="d1bc12f1-068e-4299-9e24-c88bd67e2c13">2</columnRef> + <columnRef ref="d783d6d9-737b-4198-ae94-42c3d5b3570b">20</columnRef> + <columnRef ref="9fbbd509-18f3-4209-82ea-481ac387980c">RESEARCH</columnRef> + <columnRef ref="626102d4-8235-495e-9759-3ea600dbce6c">DALLAS</columnRef> + <columnRef ref="00d8aebd-11ec-47d8-9f2e-1ca135c78fcd">1</columnRef> + </record> + <record id="3f33079c-5a3d-40f3-9d67-25df203e6398"> + <columnRef ref="d1bc12f1-068e-4299-9e24-c88bd67e2c13">3</columnRef> + <columnRef ref="d783d6d9-737b-4198-ae94-42c3d5b3570b">30</columnRef> + <columnRef ref="9fbbd509-18f3-4209-82ea-481ac387980c">SALES</columnRef> + <columnRef ref="626102d4-8235-495e-9759-3ea600dbce6c">CHICAGO</columnRef> + <columnRef ref="00d8aebd-11ec-47d8-9f2e-1ca135c78fcd">1</columnRef> + </record> + <record id="6ddd388e-8bea-4a79-aed9-b9392da49608"> + <columnRef ref="d1bc12f1-068e-4299-9e24-c88bd67e2c13">4</columnRef> + <columnRef ref="d783d6d9-737b-4198-ae94-42c3d5b3570b">40</columnRef> + <columnRef ref="9fbbd509-18f3-4209-82ea-481ac387980c">OPERATIONS</columnRef> + <columnRef ref="626102d4-8235-495e-9759-3ea600dbce6c">BOSTON</columnRef> + <columnRef ref="00d8aebd-11ec-47d8-9f2e-1ca135c78fcd">1</columnRef> + </record> + </tableRef> + <tableRef ref="d492ab23-b213-4cb3-bc50-3c865eb1b59d"> + <record id="20b4df66-cf21-40a6-82da-44c2f5252c4d"> + <columnRef ref="9b948a38-607b-4883-8ee6-bc44dc00a256">1</columnRef> + <columnRef ref="0f469616-6432-4a4d-9de5-a10e100668a4">7369</columnRef> + <columnRef ref="52e31885-3619-4185-9bcb-4e8f004a42ad">SMITH</columnRef> + <columnRef ref="fbde8ebe-f1d0-4e41-82d3-92915baabdb5">13</columnRef> + <columnRef ref="bb508d71-e082-4aef-9ee0-b964a5fe16a0">1980-12-17</columnRef> + <columnRef ref="c869b6bd-6c90-4194-8664-fa8b57357ff1">800</columnRef> + <columnRef ref="4db0a4db-709c-4c80-bc36-f043e8c49116">2</columnRef> + <columnRef ref="b1ac3bc7-04b1-41b4-b182-a4002da045c8">1</columnRef> + </record> + <record id="efc21a71-f439-4c65-8b9e-51603f8105ea"> + <columnRef ref="9b948a38-607b-4883-8ee6-bc44dc00a256">2</columnRef> + <columnRef ref="0f469616-6432-4a4d-9de5-a10e100668a4">7499</columnRef> + <columnRef ref="52e31885-3619-4185-9bcb-4e8f004a42ad">ALLEN</columnRef> + <columnRef ref="fbde8ebe-f1d0-4e41-82d3-92915baabdb5">6</columnRef> + <columnRef ref="bb508d71-e082-4aef-9ee0-b964a5fe16a0">1981-02-20</columnRef> + <columnRef ref="c869b6bd-6c90-4194-8664-fa8b57357ff1">1600</columnRef> + <columnRef ref="4db0a4db-709c-4c80-bc36-f043e8c49116">3</columnRef> + <columnRef ref="b1ac3bc7-04b1-41b4-b182-a4002da045c8">1</columnRef> + </record> + <record id="7ec3c890-aaea-4d4b-a5ad-89cc933d7afa"> + <columnRef ref="9b948a38-607b-4883-8ee6-bc44dc00a256">3</columnRef> + <columnRef ref="0f469616-6432-4a4d-9de5-a10e100668a4">7521</columnRef> + <columnRef ref="52e31885-3619-4185-9bcb-4e8f004a42ad">WARD</columnRef> + <columnRef ref="fbde8ebe-f1d0-4e41-82d3-92915baabdb5">6</columnRef> + <columnRef ref="bb508d71-e082-4aef-9ee0-b964a5fe16a0">1981-02-22</columnRef> + <columnRef ref="c869b6bd-6c90-4194-8664-fa8b57357ff1">1250</columnRef> + <columnRef ref="4db0a4db-709c-4c80-bc36-f043e8c49116">3</columnRef> + <columnRef ref="b1ac3bc7-04b1-41b4-b182-a4002da045c8">1</columnRef> + </record> + <record id="28837a6d-be6a-4942-9707-94a4010adc3c"> + <columnRef ref="9b948a38-607b-4883-8ee6-bc44dc00a256">4</columnRef> + <columnRef ref="0f469616-6432-4a4d-9de5-a10e100668a4">7566</columnRef> + <columnRef ref="52e31885-3619-4185-9bcb-4e8f004a42ad">JONES</columnRef> + <columnRef ref="fbde8ebe-f1d0-4e41-82d3-92915baabdb5">9</columnRef> + <columnRef ref="bb508d71-e082-4aef-9ee0-b964a5fe16a0">1981-04-02</columnRef> + <columnRef ref="c869b6bd-6c90-4194-8664-fa8b57357ff1">2975</columnRef> + <columnRef ref="4db0a4db-709c-4c80-bc36-f043e8c49116">2</columnRef> + <columnRef ref="b1ac3bc7-04b1-41b4-b182-a4002da045c8">1</columnRef> + </record> + <record id="273d62d0-2231-4e1c-888c-b475c19036b5"> + <columnRef ref="9b948a38-607b-4883-8ee6-bc44dc00a256">5</columnRef> + <columnRef ref="0f469616-6432-4a4d-9de5-a10e100668a4">7654</columnRef> + <columnRef ref="52e31885-3619-4185-9bcb-4e8f004a42ad">MARTIN</columnRef> + <columnRef ref="fbde8ebe-f1d0-4e41-82d3-92915baabdb5">6</columnRef> + <columnRef ref="bb508d71-e082-4aef-9ee0-b964a5fe16a0">1981-09-28</columnRef> + <columnRef ref="c869b6bd-6c90-4194-8664-fa8b57357ff1">1250</columnRef> + <columnRef ref="4db0a4db-709c-4c80-bc36-f043e8c49116">3</columnRef> + <columnRef ref="b1ac3bc7-04b1-41b4-b182-a4002da045c8">1</columnRef> + </record> + <record id="7511ee49-f9b8-482b-a974-8a2ebfa85b03"> + <columnRef ref="9b948a38-607b-4883-8ee6-bc44dc00a256">6</columnRef> + <columnRef ref="0f469616-6432-4a4d-9de5-a10e100668a4">7698</columnRef> + <columnRef ref="52e31885-3619-4185-9bcb-4e8f004a42ad">BLAKE</columnRef> + <columnRef ref="fbde8ebe-f1d0-4e41-82d3-92915baabdb5">9</columnRef> + <columnRef ref="bb508d71-e082-4aef-9ee0-b964a5fe16a0">1981-05-01</columnRef> + <columnRef ref="c869b6bd-6c90-4194-8664-fa8b57357ff1">2850</columnRef> + <columnRef ref="4db0a4db-709c-4c80-bc36-f043e8c49116">3</columnRef> + <columnRef ref="b1ac3bc7-04b1-41b4-b182-a4002da045c8">1</columnRef> + </record> + <record id="f2622432-b82a-43da-b8ff-16344c7f1dcc"> + <columnRef ref="9b948a38-607b-4883-8ee6-bc44dc00a256">7</columnRef> + <columnRef ref="0f469616-6432-4a4d-9de5-a10e100668a4">7782</columnRef> + <columnRef ref="52e31885-3619-4185-9bcb-4e8f004a42ad">CLARK</columnRef> + <columnRef ref="fbde8ebe-f1d0-4e41-82d3-92915baabdb5">9</columnRef> + <columnRef ref="bb508d71-e082-4aef-9ee0-b964a5fe16a0">1981-06-09</columnRef> + <columnRef ref="c869b6bd-6c90-4194-8664-fa8b57357ff1">2450</columnRef> + <columnRef ref="4db0a4db-709c-4c80-bc36-f043e8c49116">1</columnRef> + <columnRef ref="b1ac3bc7-04b1-41b4-b182-a4002da045c8">1</columnRef> + </record> + <record id="bbfac8b8-4e4d-4995-bd09-c3577529fbed"> + <columnRef ref="9b948a38-607b-4883-8ee6-bc44dc00a256">8</columnRef> + <columnRef ref="0f469616-6432-4a4d-9de5-a10e100668a4">7788</columnRef> + <columnRef ref="52e31885-3619-4185-9bcb-4e8f004a42ad">SCOTT</columnRef> + <columnRef ref="fbde8ebe-f1d0-4e41-82d3-92915baabdb5">4</columnRef> + <columnRef ref="bb508d71-e082-4aef-9ee0-b964a5fe16a0">1982-12-09</columnRef> + <columnRef ref="c869b6bd-6c90-4194-8664-fa8b57357ff1">3000.0</columnRef> + <columnRef ref="4db0a4db-709c-4c80-bc36-f043e8c49116">2</columnRef> + <columnRef ref="b1ac3bc7-04b1-41b4-b182-a4002da045c8">1</columnRef> + </record> + <record id="e8ed707a-9bf9-4411-8a2b-b58a12017cee"> + <columnRef ref="9b948a38-607b-4883-8ee6-bc44dc00a256">9</columnRef> + <columnRef ref="0f469616-6432-4a4d-9de5-a10e100668a4">7839</columnRef> + <columnRef ref="52e31885-3619-4185-9bcb-4e8f004a42ad">KING</columnRef> + <columnRef ref="fbde8ebe-f1d0-4e41-82d3-92915baabdb5">NULL</columnRef> + <columnRef ref="bb508d71-e082-4aef-9ee0-b964a5fe16a0">1981-11-17</columnRef> + <columnRef ref="c869b6bd-6c90-4194-8664-fa8b57357ff1">5000</columnRef> + <columnRef ref="4db0a4db-709c-4c80-bc36-f043e8c49116">1</columnRef> + <columnRef ref="b1ac3bc7-04b1-41b4-b182-a4002da045c8">1</columnRef> + </record> + <record id="da68a348-b457-4418-9fe8-0a9c03cf5ea6"> + <columnRef ref="9b948a38-607b-4883-8ee6-bc44dc00a256">10</columnRef> + <columnRef ref="0f469616-6432-4a4d-9de5-a10e100668a4">7844</columnRef> + <columnRef ref="52e31885-3619-4185-9bcb-4e8f004a42ad">TURNER</columnRef> + <columnRef ref="fbde8ebe-f1d0-4e41-82d3-92915baabdb5">6</columnRef> + <columnRef ref="bb508d71-e082-4aef-9ee0-b964a5fe16a0">1981-09-08</columnRef> + <columnRef ref="c869b6bd-6c90-4194-8664-fa8b57357ff1">1500</columnRef> + <columnRef ref="4db0a4db-709c-4c80-bc36-f043e8c49116">3</columnRef> + <columnRef ref="b1ac3bc7-04b1-41b4-b182-a4002da045c8">1</columnRef> + </record> + <record id="5c9aad71-ed2a-4653-a586-fa32ef2517e0"> + <columnRef ref="9b948a38-607b-4883-8ee6-bc44dc00a256">11</columnRef> + <columnRef ref="0f469616-6432-4a4d-9de5-a10e100668a4">7876</columnRef> + <columnRef ref="52e31885-3619-4185-9bcb-4e8f004a42ad">ADAMS</columnRef> + <columnRef ref="fbde8ebe-f1d0-4e41-82d3-92915baabdb5">8</columnRef> + <columnRef ref="bb508d71-e082-4aef-9ee0-b964a5fe16a0">1983-01-12</columnRef> + <columnRef ref="c869b6bd-6c90-4194-8664-fa8b57357ff1">1100</columnRef> + <columnRef ref="4db0a4db-709c-4c80-bc36-f043e8c49116">2</columnRef> + <columnRef ref="b1ac3bc7-04b1-41b4-b182-a4002da045c8">1</columnRef> + </record> + <record id="4c23cfb5-7caa-490e-b856-09d7e20f09e3"> + <columnRef ref="9b948a38-607b-4883-8ee6-bc44dc00a256">12</columnRef> + <columnRef ref="0f469616-6432-4a4d-9de5-a10e100668a4">7900</columnRef> + <columnRef ref="52e31885-3619-4185-9bcb-4e8f004a42ad">JAMES</columnRef> + <columnRef ref="fbde8ebe-f1d0-4e41-82d3-92915baabdb5">6</columnRef> + <columnRef ref="bb508d71-e082-4aef-9ee0-b964a5fe16a0">1981-12-03</columnRef> + <columnRef ref="c869b6bd-6c90-4194-8664-fa8b57357ff1">950</columnRef> + <columnRef ref="4db0a4db-709c-4c80-bc36-f043e8c49116">3</columnRef> + <columnRef ref="b1ac3bc7-04b1-41b4-b182-a4002da045c8">1</columnRef> + </record> + <record id="7e8bdcf4-e091-44d8-bfa0-1ce53fe1357c"> + <columnRef ref="9b948a38-607b-4883-8ee6-bc44dc00a256">13</columnRef> + <columnRef ref="0f469616-6432-4a4d-9de5-a10e100668a4">7902</columnRef> + <columnRef ref="52e31885-3619-4185-9bcb-4e8f004a42ad">FORD</columnRef> + <columnRef ref="fbde8ebe-f1d0-4e41-82d3-92915baabdb5">4</columnRef> + <columnRef ref="bb508d71-e082-4aef-9ee0-b964a5fe16a0">1981-12-03</columnRef> + <columnRef ref="c869b6bd-6c90-4194-8664-fa8b57357ff1">3000</columnRef> + <columnRef ref="4db0a4db-709c-4c80-bc36-f043e8c49116">2</columnRef> + <columnRef ref="b1ac3bc7-04b1-41b4-b182-a4002da045c8">1</columnRef> + </record> + <record id="00c31653-d729-4e3d-ba18-d27f5632721c"> + <columnRef ref="9b948a38-607b-4883-8ee6-bc44dc00a256">14</columnRef> + <columnRef ref="0f469616-6432-4a4d-9de5-a10e100668a4">7934</columnRef> + <columnRef ref="52e31885-3619-4185-9bcb-4e8f004a42ad">MILLER</columnRef> + <columnRef ref="fbde8ebe-f1d0-4e41-82d3-92915baabdb5">7</columnRef> + <columnRef ref="bb508d71-e082-4aef-9ee0-b964a5fe16a0">1982-01-23</columnRef> + <columnRef ref="c869b6bd-6c90-4194-8664-fa8b57357ff1">1300</columnRef> + <columnRef ref="4db0a4db-709c-4c80-bc36-f043e8c49116">1</columnRef> + <columnRef ref="b1ac3bc7-04b1-41b4-b182-a4002da045c8">1</columnRef> + </record> + </tableRef> + </dataSet> + </dataSets> + <view:diagramPresentations xmlns:view="http://jiemamy.org/xml/ns/view"> + <view:diagramPresentation id="fec2a389-88e3-4018-82c3-2595f765fd11"> + <name>default</name> + <view:mode>PHYSICAL</view:mode> + <view:level>ATTRTYPE</view:level> + <view:nodeProfiles> + <view:nodeProfile id="88024377-86f7-4f6c-ad73-9547fa07bbdb"> + <view:nodeObjectRef ref="b0eb61af-8f86-47ab-bde4-bc4fc9bdc47a"/> + <view:boundary height="-1" width="-1" x="79" y="159"/> + </view:nodeProfile> + <view:nodeProfile id="7fbfe69b-6562-4c95-beb2-116329171e5f"> + <view:nodeObjectRef ref="d492ab23-b213-4cb3-bc50-3c865eb1b59d"/> + <view:boundary height="-1" width="-1" x="441" y="114"/> + </view:nodeProfile> + </view:nodeProfiles> + <view:connectionProfiles> + <view:connectionProfile id="d99ecf79-d065-48ce-bff8-9e0f83e4ffad"> + <view:connectionObjectRef ref="441c5fe6-08ba-49ba-8ca7-3e5cc9e00c97"/> + </view:connectionProfile> + </view:connectionProfiles> + </view:diagramPresentation> + </view:diagramPresentations> +</jiemamy>