svnno****@sourc*****
svnno****@sourc*****
2009年 6月 17日 (水) 22:28:18 JST
Revision: 3429 http://sourceforge.jp/projects/jiemamy/svn/view?view=rev&revision=3429 Author: yamkazu Date: 2009-06-17 22:28:18 +0900 (Wed, 17 Jun 2009) Log Message: ----------- modelを理解しているかは怪しい。 Added Paths: ----------- sandbox/jiemamy-excel-exporter/pom.xml sandbox/jiemamy-excel-exporter/src/ sandbox/jiemamy-excel-exporter/src/main/ sandbox/jiemamy-excel-exporter/src/main/java/ sandbox/jiemamy-excel-exporter/src/main/java/org/ sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/ sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/ sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/DefaultExcelExportConfig.java sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/ExcelExportConfig.java sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/ExcelExporter.java sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/ExcelRowModel.java sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/ExcelRowModelImpl.java sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/ExcelTableModel.java sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/ExcelTableModelImpl.java sandbox/jiemamy-excel-exporter/src/main/resources/ sandbox/jiemamy-excel-exporter/src/main/resources/DefaultTemplate.xls sandbox/jiemamy-excel-exporter/src/test/ sandbox/jiemamy-excel-exporter/src/test/java/ sandbox/jiemamy-excel-exporter/src/test/java/org/ sandbox/jiemamy-excel-exporter/src/test/java/org/jiemamy/ sandbox/jiemamy-excel-exporter/src/test/java/org/jiemamy/composer/ sandbox/jiemamy-excel-exporter/src/test/java/org/jiemamy/composer/ExcelExporterTest.java sandbox/jiemamy-excel-exporter/src/test/resources/ sandbox/jiemamy-excel-exporter/src/test/resources/MyTemplate.xls sandbox/jiemamy-excel-exporter/src/test/resources/jiemamy.jer -------------- next part -------------- Added: sandbox/jiemamy-excel-exporter/pom.xml =================================================================== --- sandbox/jiemamy-excel-exporter/pom.xml (rev 0) +++ sandbox/jiemamy-excel-exporter/pom.xml 2009-06-17 13:28:18 UTC (rev 3429) @@ -0,0 +1,136 @@ +<?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>jiemamy-artemis</artifactId> + <version>0.2.1-SNAPSHOT</version> + <relativePath>../jiemamy-artemis</relativePath> + </parent> + <groupId>org.jiemamy</groupId> + <artifactId>jiemamy-excel-exporter</artifactId> + <name>Jiemamy excel Exporter</name> + <version>0.2.1-SNAPSHOT</version> + <description><![CDATA[JiemamyモデルをDB仕様書excelにエクスポートするエクスポータ。]]></description> + <url>http://report.jiemamy.org/jiemamy-excel-exporter</url> + <issueManagement> + <system>JIRA</system> + <url>http://jira.jiemamy.org/jira/browse/Eexcel</url> + </issueManagement> + <inceptionYear>2007</inceptionYear> + <developers> + <developer> + <id>daisuke</id> + <name>MIYAMOTO Daisuke</name> + <email>daisuke_m****@users*****</email> + <url>http://d.hatena.ne.jp/daisuke-m/</url> + <timezone>+9</timezone> + </developer> + <developer> + <id>yamkazu</id> + <name>YAMAMOTO Kazuki</name> + <email>yam.k****@gmail*****</email> + <url>http://d.hatena.ne.jp/yamkazu/</url> + <timezone>+9</timezone> + </developer> + </developers> + <scm> + <connection>scm:svn:http://svn.sourceforge.jp/svnroot/jiemamy/charon/jiemamy-excel-exporter/trunk</connection> + <developerConnection>scm:svn:svn+ssh://svn.sourceforge.jp/svnroot/jiemamy/charon/jiemamy-excel-exporter/trunk</developerConnection> + <url>http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/charon/jiemamy-excel-exporter/trunk/?root=jiemamy</url> + </scm> + <repositories> + <repository> + <id>maven.seasar.org</id> + <name>The Seasar Foundation Maven2 Repository</name> + <url>http://maven.seasar.org/maven2</url> + </repository> + </repositories> + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.5</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>hamcrest-library</artifactId> + <version>1.1</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.java.dev.jmockit</groupId> + <artifactId>jmockit</artifactId> + <version>0.94</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + <version>1.5.6</version> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>jcl-over-slf4j</artifactId> + <version>1.5.6</version> + </dependency> + <dependency> + <groupId>ch.qos.logback</groupId> + <artifactId>logback-core</artifactId> + <version>0.9.15</version> + </dependency> + <dependency> + <groupId>ch.qos.logback</groupId> + <artifactId>logback-classic</artifactId> + <version>0.9.15</version> + </dependency> + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + <version>2.4</version> + </dependency> + <dependency> + <groupId>org.freemarker</groupId> + <artifactId>freemarker</artifactId> + <version>2.3.11</version> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>jiemamy-spec-core</artifactId> + <version>0.2</version> + </dependency> + <dependency> + <groupId>org.seasar.fisshplate</groupId> + <artifactId>fisshplate</artifactId> + <version>0.1.3</version> + </dependency> + <dependency> + <groupId>org.apache.poi</groupId> + <artifactId>poi</artifactId> + <version>3.2-FINAL</version> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>jiemamy-core</artifactId> + <version>${project.parent.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>jiemamy-dialect-postgresql</artifactId> + <version>${project.parent.version}</version> + <scope>test</scope> + </dependency> + </dependencies> + + <distributionManagement> + <site> + <id>jiemamy-report</id> + <name>maven-jiemamy-plugin-site</name> + <url>scp://report.jiemamy.org/var/www/report/jiemamy-excel-exporter/${project.version}</url> + </site> + </distributionManagement> +</project> \ No newline at end of file Property changes on: sandbox/jiemamy-excel-exporter/pom.xml ___________________________________________________________________ Added: svn:mime-type + text/plain Added: sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/DefaultExcelExportConfig.java =================================================================== --- sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/DefaultExcelExportConfig.java (rev 0) +++ sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/DefaultExcelExportConfig.java 2009-06-17 13:28:18 UTC (rev 3429) @@ -0,0 +1,71 @@ +package org.jiemamy.composer; + +import java.io.File; +import java.net.URISyntaxException; + +import org.apache.commons.lang.Validate; + +/** + * @author yamkazu + * + */ +public class DefaultExcelExportConfig implements ExcelExportConfig { + + /** 出力先ファイル */ + private File outputFile; + + /** 出力先ファイルが既に存在した場合、上書きするかどうか */ + private boolean overwrite; + + /** テンプレートファイル */ + private File templateFile; + + public File getOutputFile() { + return outputFile; + } + + public boolean isOverwrite() { + return overwrite; + } + + /** + * 出力ファイルを設定する。 + * + * @param outputFile + * 出力ファイル + * @throws IllegalArgumentException + * 引数に{@code null}を与えた場合 + */ + public void setOutputFile(File outputFile) { + Validate.notNull(outputFile); + this.outputFile = outputFile; + } + + /** + * 出力ファイルが既に存在した場合、上書きするかどうかを設定する。 + * + * @param overwrite + * 上書きする場合は{@code true}、そうでない場合は{@code false} + */ + public void setOverwrite(boolean overwrite) { + this.overwrite = overwrite; + } + + public File getTemplateFile() { + if (templateFile == null) { + try { + return new File(getClass().getClassLoader().getResource("DefaultTemplate.xls").toURI()); + } catch (URISyntaxException e) { + // あり得ない + throw new IllegalStateException("defalut template file not found"); + } + } + return templateFile; + } + + public void setTemplateFile(File templateFile) { + Validate.notNull(templateFile); + this.templateFile = templateFile; + } + +} Property changes on: sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/DefaultExcelExportConfig.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/ExcelExportConfig.java =================================================================== --- sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/ExcelExportConfig.java (rev 0) +++ sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/ExcelExportConfig.java 2009-06-17 13:28:18 UTC (rev 3429) @@ -0,0 +1,22 @@ +package org.jiemamy.composer; + +import java.io.File; + +/** + * @author yamkazu + * + */ +public interface ExcelExportConfig extends ExportConfig { + + public void setOutputFile(File outputFile); + + public File getOutputFile(); + + public boolean isOverwrite(); + + void setOverwrite(boolean overwrite); + + public void setTemplateFile(File templateFile); + + public File getTemplateFile(); +} Property changes on: sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/ExcelExportConfig.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/ExcelExporter.java =================================================================== --- sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/ExcelExporter.java (rev 0) +++ sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/ExcelExporter.java 2009-06-17 13:28:18 UTC (rev 3429) @@ -0,0 +1,166 @@ +package org.jiemamy.composer; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang.Validate; +import org.apache.commons.lang.builder.ToStringBuilder; +import org.apache.commons.lang.builder.ToStringStyle; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.poifs.filesystem.POIFSFileSystem; +import org.jiemamy.model.RootModel; +import org.jiemamy.model.attribute.ColumnModel; +import org.jiemamy.model.entity.EntityModel; +import org.jiemamy.model.entity.TableModel; +import org.jiemamy.utils.CollectionsUtil; +import org.jiemamy.utils.EntityDependencyCalculator; +import org.seasar.fisshplate.exception.FPMergeException; +import org.seasar.fisshplate.exception.FPParseException; +import org.seasar.fisshplate.template.FPTemplate; + +/** + * @author yamkazu + * + */ +public class ExcelExporter implements Exporter<ExcelExportConfig> { + + public boolean exportModel(RootModel rootModel, ExcelExportConfig config) throws ExportException { + Validate.notNull(rootModel); + Validate.notNull(config); + Validate.notNull(config.getOutputFile()); + + File outputFile = config.getOutputFile(); + if (outputFile.exists()) { + if (config.isOverwrite() == false) { + return false; + } + if (outputFile.isDirectory()) { + deleteDirectory(outputFile); + } + } + + HSSFWorkbook outWorkbook = null; + InputStream in = null; + try { + in = new FileInputStream(config.getTemplateFile()); + outWorkbook = new HSSFWorkbook(new POIFSFileSystem(in)); + } catch (IOException e) { + throw new ExportException("can not open template file", e); + } finally { + IOUtils.closeQuietly(in); + } + + Map<String, Object> data = null; + for (EntityModel entityModel : EntityDependencyCalculator.getSortedEntityList(rootModel)) { + if (entityModel instanceof TableModel) { + TableModel tableModel = (TableModel) entityModel; + List<ExcelRowModel> excelRowModels = CollectionsUtil.newArrayList(); + for (ColumnModel columnModel : tableModel.findColumns()) { + excelRowModels.add(new ExcelRowModelImpl(columnModel)); + } + data = new HashMap<String, Object>(); + data.put("table", new ExcelTableModelImpl(tableModel)); + data.put("columns", excelRowModels); + createSheet(outWorkbook, data); + } + } + removeTemplateSheet(outWorkbook); + writeWorkbook(outWorkbook, outputFile); + return true; + } + + /** + * テンプレートのクローンを生成して、テンプレートの置換を行う。 + * + * @param workbook + * @param data + * @throws ExportException + */ + private void createSheet(HSSFWorkbook workbook, Map<String, Object> data) throws ExportException { + try { + // シートのクローンを作成 + workbook.cloneSheet(0); + + // クローンを一番左へ移動 + int lastIndex = workbook.getNumberOfSheets() - 1; + String sheetName = workbook.getSheetName(lastIndex); + workbook.setSheetOrder(sheetName, 0); + + // 置換を実行 + FPTemplate template = new FPTemplate(); + template.process(workbook, data); + + // 置換シートを一番右へ移動 + workbook.setSheetOrder(sheetName, lastIndex); + workbook.setSheetName(lastIndex, ((ExcelTableModel) data.get("table")).getName()); + } catch (FPParseException e) { + throw new ExportException("fisshplate pase error", e); + } catch (FPMergeException e) { + throw new ExportException("fisshplate merge error", e); + } + } + + /** + * テンプレートのシートを削除する。 + * + * @param workbook + */ + private void removeTemplateSheet(HSSFWorkbook workbook) { + workbook.removeSheetAt(0); + } + + /** + * ワークブックをファイルに書き出します。 + * + * @param workbook + * @param outputFile + * @param config + * @throws ExportException + */ + private void writeWorkbook(HSSFWorkbook workbook, File outputFile) throws ExportException { + FileOutputStream out = null; + try { + out = new FileOutputStream(outputFile); + workbook.write(out); + } catch (FileNotFoundException e) { + throw new ExportException("file no found: " + outputFile.getAbsolutePath(), e); + } catch (IOException e) { + throw new ExportException("can not write: " + outputFile.getAbsolutePath(), e); + } finally { + IOUtils.closeQuietly(out); + } + } + + public String getName() { + return "Excel Exporter"; + } + + @Override + public String toString() { + return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE); + } + + private void deleteDirectory(File directory) throws ExportException { + for (File file : directory.listFiles()) { + if (file.isDirectory()) { + deleteDirectory(file); + } else { + if (file.delete() == false) { + throw new ExportException("Cannot delete file: " + file.getAbsolutePath()); + } + } + } + if (directory.delete() == false) { + throw new ExportException("Cannot delete directory: " + directory.getAbsolutePath()); + } + } + +} Property changes on: sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/ExcelExporter.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/ExcelRowModel.java =================================================================== --- sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/ExcelRowModel.java (rev 0) +++ sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/ExcelRowModel.java 2009-06-17 13:28:18 UTC (rev 3429) @@ -0,0 +1,31 @@ +package org.jiemamy.composer; + +/** + * Excelにテーブルのカラム情報を表示するモデルクラスです。 + * + * <p> + * このクラスは絶対に{@code null}を返しません。情報がない場合は空文字{@code ""}を返します。 + * + * @author yamkazu + * + */ +public interface ExcelRowModel { + + String getLogicalName(); + + String getName(); + + String getDataType(); + + String getSize(); + + String getPrimaryKey(); + + String getNotNull(); + + String getUniqueKey(); + + String getDescription(); + + String getDefaultValue(); +} Property changes on: sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/ExcelRowModel.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/ExcelRowModelImpl.java =================================================================== --- sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/ExcelRowModelImpl.java (rev 0) +++ sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/ExcelRowModelImpl.java 2009-06-17 13:28:18 UTC (rev 3429) @@ -0,0 +1,63 @@ +package org.jiemamy.composer; + +import static org.jiemamy.utils.StringUtil.isEmpty; + +import org.jiemamy.internal.ReferenceResolverImpl; +import org.jiemamy.model.attribute.ColumnModel; +import org.jiemamy.model.datatype.BuiltinDataType; +import org.jiemamy.model.datatype.adapter.SizedDataTypeAdapter; + +/** + * @author yamkazu + * + */ +public class ExcelRowModelImpl implements ExcelRowModel { + + private ColumnModel columnModel; + + public ExcelRowModelImpl(ColumnModel columnModel) { + this.columnModel = columnModel; + } + + public String getDataType() { + String dataType = columnModel.getDataType().toBuiltinDataType(new ReferenceResolverImpl()).getTypeName(); + return isEmpty(dataType) ? "" : dataType; + } + + public String getLogicalName() { + return isEmpty(columnModel.getLogicalName()) ? "" : columnModel.getLogicalName(); + } + + public String getName() { + return isEmpty(columnModel.getName()) ? "" : columnModel.getName(); + } + + public String getSize() { + BuiltinDataType dataType = columnModel.getDataType().toBuiltinDataType(new ReferenceResolverImpl()); + if (dataType.hasAdapter(SizedDataTypeAdapter.class)) { + return String.valueOf(dataType.getAdapter(SizedDataTypeAdapter.class).getSize()); + } + return ""; + } + + public String getPrimaryKey() { + return columnModel.checkPrimaryKeyColumn() ? "○" : ""; + } + + public String getNotNull() { + return columnModel.getNotNullConstraint() == null ? "" : "○"; + } + + public String getUniqueKey() { + return columnModel.getUniqueKey() == null ? "" : "○"; + } + + public String getDescription() { + return isEmpty(columnModel.getDescription()) ? "" : columnModel.getDescription(); + } + + public String getDefaultValue() { + return isEmpty(columnModel.getDefaultValue()) ? "" : columnModel.getDefaultValue(); + } + +} Property changes on: sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/ExcelRowModelImpl.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/ExcelTableModel.java =================================================================== --- sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/ExcelTableModel.java (rev 0) +++ sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/ExcelTableModel.java 2009-06-17 13:28:18 UTC (rev 3429) @@ -0,0 +1,20 @@ +package org.jiemamy.composer; + +/** + * Excelにテーブル情報を表示するモデルです。 + * + * <p> + * このクラスは絶対に{@code null}を返しません。情報がない場合は空文字{@code ""}を返します。 + * + * @author yamkazu + * + */ +public interface ExcelTableModel { + + String getName(); + + String getLogicalName(); + + String getDescription(); + +} Property changes on: sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/ExcelTableModel.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/ExcelTableModelImpl.java =================================================================== --- sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/ExcelTableModelImpl.java (rev 0) +++ sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/ExcelTableModelImpl.java 2009-06-17 13:28:18 UTC (rev 3429) @@ -0,0 +1,27 @@ +package org.jiemamy.composer; + +import static org.jiemamy.utils.StringUtil.isEmpty; + +import org.jiemamy.model.entity.TableModel; + +public class ExcelTableModelImpl implements ExcelTableModel { + + private TableModel tableModel; + + public ExcelTableModelImpl(TableModel tableModel) { + this.tableModel = tableModel; + } + + public String getDescription() { + return isEmpty(tableModel.getDescription()) ? "" : tableModel.getDescription(); + } + + public String getLogicalName() { + return isEmpty(tableModel.getLogicalName()) ? "" : tableModel.getLogicalName(); + } + + public String getName() { + return isEmpty(tableModel.getName()) ? "" : tableModel.getName(); + } + +} Property changes on: sandbox/jiemamy-excel-exporter/src/main/java/org/jiemamy/composer/ExcelTableModelImpl.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: sandbox/jiemamy-excel-exporter/src/main/resources/DefaultTemplate.xls =================================================================== (Binary files differ) Property changes on: sandbox/jiemamy-excel-exporter/src/main/resources/DefaultTemplate.xls ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: sandbox/jiemamy-excel-exporter/src/test/java/org/jiemamy/composer/ExcelExporterTest.java =================================================================== --- sandbox/jiemamy-excel-exporter/src/test/java/org/jiemamy/composer/ExcelExporterTest.java (rev 0) +++ sandbox/jiemamy-excel-exporter/src/test/java/org/jiemamy/composer/ExcelExporterTest.java 2009-06-17 13:28:18 UTC (rev 3429) @@ -0,0 +1,72 @@ +package org.jiemamy.composer; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; + +import java.io.File; +import java.io.InputStream; + +import org.apache.commons.io.IOUtils; +import org.jiemamy.Jiemamy; +import org.jiemamy.model.RootModel; +import org.jiemamy.serializer.JiemamySerializer; +import org.junit.Before; +import org.junit.Test; + +public class ExcelExporterTest { + + RootModel rootModel; + + @Before + public void setUp() throws Exception { + Jiemamy jiemamy = Jiemamy.newInstance(); + JiemamySerializer serializer = jiemamy.getSerializer(); + InputStream in = null; + try { + in = ExcelExporterTest.class.getResourceAsStream("/jiemamy.jer"); + rootModel = serializer.deserialize(in); + } finally { + IOUtils.closeQuietly(in); + } + } + + /** + * @throws Exception + */ + @Test + public void Excelでエクスポートする() throws Exception { + ExcelExporter exporter = new ExcelExporter(); + DefaultExcelExportConfig config = new DefaultExcelExportConfig(); + config.setOutputFile(new File("./target/DefaultTemplateResult.xls")); + config.setOverwrite(true); + assertThat(exporter.exportModel(rootModel, config), is(true)); + } + + /** + * @throws Exception + */ + @Test + public void Overwiteにfalseを設定すると上書きされない() throws Exception { + File deleteFile = new File("./target/OverrideResult.xls"); + if (deleteFile.exists()) { + deleteFile.delete(); + } + ExcelExporter exporter = new ExcelExporter(); + DefaultExcelExportConfig config = new DefaultExcelExportConfig(); + config.setOutputFile(new File("./target/OverrideResult.xls")); + config.setOverwrite(false); + assertThat(exporter.exportModel(rootModel, config), is(true)); + assertThat(exporter.exportModel(rootModel, config), is(false)); + } + + @Test + public void テンプレートを指定するとそのテンプレートでエクスポートされる() throws Exception { + ExcelExporter exporter = new ExcelExporter(); + DefaultExcelExportConfig config = new DefaultExcelExportConfig(); + config.setOutputFile(new File("./target/MyTemplateResult.xls")); + config.setTemplateFile(new File(getClass().getClassLoader().getResource("MyTemplate.xls").toURI())); + config.setOverwrite(true); + assertThat(exporter.exportModel(rootModel, config), is(true)); + } + +} Property changes on: sandbox/jiemamy-excel-exporter/src/test/java/org/jiemamy/composer/ExcelExporterTest.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: sandbox/jiemamy-excel-exporter/src/test/resources/MyTemplate.xls =================================================================== (Binary files differ) Property changes on: sandbox/jiemamy-excel-exporter/src/test/resources/MyTemplate.xls ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: sandbox/jiemamy-excel-exporter/src/test/resources/jiemamy.jer =================================================================== --- sandbox/jiemamy-excel-exporter/src/test/resources/jiemamy.jer (rev 0) +++ sandbox/jiemamy-excel-exporter/src/test/resources/jiemamy.jer 2009-06-17 13:28:18 UTC (rev 3429) @@ -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.0/jiemamy-core.xsd http://jiemamy.org/xml/ns/view null"> + <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>