[Jiemamy-notify:2679] commit [3618] ExecuteMojoをSQL Exporterに依存するのをやめた。

Back to archive index

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>




Jiemamy-notify メーリングリストの案内
Back to archive index