diff --git a/io/plugins/eu.esdihumboldt.hale.io.csv.ui/src/eu/esdihumboldt/hale/io/csv/ui/CommonInstanceExportConfigurationPage.java b/io/plugins/eu.esdihumboldt.hale.io.csv.ui/src/eu/esdihumboldt/hale/io/csv/ui/CommonInstanceExportConfigurationPage.java new file mode 100644 index 0000000000..c68eea2b23 --- /dev/null +++ b/io/plugins/eu.esdihumboldt.hale.io.csv.ui/src/eu/esdihumboldt/hale/io/csv/ui/CommonInstanceExportConfigurationPage.java @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2014 Data Harmonisation Panel + * + * All rights reserved. This program and the accompanying materials are made + * available under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the License, + * or (at your option) any later version. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this distribution. If not, see . + * + * Contributors: + * Data Harmonisation Panel + */ + +package eu.esdihumboldt.hale.io.csv.ui; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; + +import eu.esdihumboldt.hale.common.core.io.Value; +import eu.esdihumboldt.hale.common.instance.io.InstanceWriter; +import eu.esdihumboldt.hale.io.csv.InstanceTableIOConstants; +import eu.esdihumboldt.hale.ui.io.IOWizard; +import eu.esdihumboldt.hale.ui.io.config.AbstractConfigurationPage; + +/** + * Configuration page for exporting of instances + * + * @author Emanuela Epure + */ +public class CommonInstanceExportConfigurationPage + extends AbstractConfigurationPage> { + + protected Button solveNestedProperties; + protected Button useSchema; + protected Composite page; + + /** + * @param title + * + */ + public CommonInstanceExportConfigurationPage(String title) { + super(title); + setTitle("Additonal Export Options"); + setDescription("Select if nested properties should be solved and a type"); + } + + /** + * @see eu.esdihumboldt.hale.ui.io.config.AbstractConfigurationPage#enable() + */ + @Override + public void enable() { + // not required + } + + /** + * @see eu.esdihumboldt.hale.ui.io.config.AbstractConfigurationPage#disable() + */ + @Override + public void disable() { + // not required + } + + /** + * @see eu.esdihumboldt.hale.ui.io.IOWizardPage#updateConfiguration(eu.esdihumboldt.hale.common.core.io.IOProvider) + */ + @Override + public boolean updateConfiguration(InstanceWriter provider) { + provider.setParameter(InstanceTableIOConstants.SOLVE_NESTED_PROPERTIES, + Value.of(solveNestedProperties.getSelection())); + provider.setParameter(InstanceTableIOConstants.USE_SCHEMA, + Value.of(useSchema.getSelection())); + return true; + } + + /** + * @see eu.esdihumboldt.hale.ui.HaleWizardPage#createContent(org.eclipse.swt.widgets.Composite) + */ + @Override + protected void createContent(Composite page) { + this.page = page; + + page.setLayout(new GridLayout(1, false)); + + solveNestedProperties = new Button(page, SWT.CHECK); + solveNestedProperties.setText("Solve nested properties"); + solveNestedProperties.setSelection(true); + + useSchema = new Button(page, SWT.CHECK); + useSchema.setText("Use the source schema for the order of the exported columns"); + useSchema.setSelection(true); + } + +} diff --git a/io/plugins/eu.esdihumboldt.hale.io.csv.ui/src/eu/esdihumboldt/hale/io/csv/ui/InstanceExportConfigurationPage.java b/io/plugins/eu.esdihumboldt.hale.io.csv.ui/src/eu/esdihumboldt/hale/io/csv/ui/InstanceExportConfigurationPage.java index fd8fc5afcc..a30d08fb84 100644 --- a/io/plugins/eu.esdihumboldt.hale.io.csv.ui/src/eu/esdihumboldt/hale/io/csv/ui/InstanceExportConfigurationPage.java +++ b/io/plugins/eu.esdihumboldt.hale.io.csv.ui/src/eu/esdihumboldt/hale/io/csv/ui/InstanceExportConfigurationPage.java @@ -21,8 +21,6 @@ import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerFilter; import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.ui.PlatformUI; @@ -34,8 +32,6 @@ import eu.esdihumboldt.hale.common.schema.model.TypeDefinition; import eu.esdihumboldt.hale.io.csv.InstanceTableIOConstants; import eu.esdihumboldt.hale.ui.common.definition.selector.TypeDefinitionSelector; -import eu.esdihumboldt.hale.ui.io.IOWizard; -import eu.esdihumboldt.hale.ui.io.config.AbstractConfigurationPage; import eu.esdihumboldt.hale.ui.service.instance.InstanceService; /** @@ -43,13 +39,9 @@ * * @author Patrick Lieb */ -public class InstanceExportConfigurationPage - extends AbstractConfigurationPage> { +public class InstanceExportConfigurationPage extends CommonInstanceExportConfigurationPage { - protected Button solveNestedProperties; - protected Button useSchema; private TypeDefinitionSelector typeSelector; - protected Composite page; private final ViewerFilter validTypesToSelect = new ViewerFilter() { @@ -102,10 +94,7 @@ public void disable() { */ @Override public boolean updateConfiguration(InstanceWriter provider) { - provider.setParameter(InstanceTableIOConstants.SOLVE_NESTED_PROPERTIES, - Value.of(solveNestedProperties.getSelection())); - provider.setParameter(InstanceTableIOConstants.USE_SCHEMA, - Value.of(useSchema.getSelection())); + super.updateConfiguration(provider); provider.setParameter(InstanceTableIOConstants.EXPORT_TYPE, Value.of(typeSelector.getSelectedObject().getName().toString())); return true; @@ -116,17 +105,7 @@ public boolean updateConfiguration(InstanceWriter provider) { */ @Override protected void createContent(Composite page) { - this.page = page; - - page.setLayout(new GridLayout(1, false)); - - solveNestedProperties = new Button(page, SWT.CHECK); - solveNestedProperties.setText("Solve nested properties"); - solveNestedProperties.setSelection(true); - - useSchema = new Button(page, SWT.CHECK); - useSchema.setText("Use the source schema for the order of the exported columns"); - useSchema.setSelection(true); + super.createContent(page); final Label label = new Label(page, SWT.NONE); label.setText("Choose your Type you want to export:"); diff --git a/io/plugins/eu.esdihumboldt.hale.io.csv/src/eu/esdihumboldt/hale/io/csv/InstanceTableIOConstants.java b/io/plugins/eu.esdihumboldt.hale.io.csv/src/eu/esdihumboldt/hale/io/csv/InstanceTableIOConstants.java index 4b9f968c32..1ebaaa38b0 100644 --- a/io/plugins/eu.esdihumboldt.hale.io.csv/src/eu/esdihumboldt/hale/io/csv/InstanceTableIOConstants.java +++ b/io/plugins/eu.esdihumboldt.hale.io.csv/src/eu/esdihumboldt/hale/io/csv/InstanceTableIOConstants.java @@ -48,6 +48,6 @@ public class InstanceTableIOConstants { /** * Parameter for exporting empty feature types to XLS Export */ - public static final String EXPORT_EMPTY_FEATURETYPES = "emptyFeatureTypes"; + public static final String EXPORT_IGNORE_EMPTY_FEATURETYPES = "ignoreEmptyFeaturetypes"; } diff --git a/io/plugins/eu.esdihumboldt.hale.io.xls.test/src/eu/esdihumboldt/hale/io/xls/test/XLSInstanceIOTest.java b/io/plugins/eu.esdihumboldt.hale.io.xls.test/src/eu/esdihumboldt/hale/io/xls/test/XLSInstanceIOTest.java index 46b2017485..a09d9c9581 100644 --- a/io/plugins/eu.esdihumboldt.hale.io.xls.test/src/eu/esdihumboldt/hale/io/xls/test/XLSInstanceIOTest.java +++ b/io/plugins/eu.esdihumboldt.hale.io.xls.test/src/eu/esdihumboldt/hale/io/xls/test/XLSInstanceIOTest.java @@ -18,11 +18,13 @@ import eu.esdihumboldt.hale.common.instance.model.InstanceCollection; import eu.esdihumboldt.hale.common.instance.model.InstanceUtil; import eu.esdihumboldt.hale.common.schema.model.Schema; +import eu.esdihumboldt.hale.common.schema.model.impl.DefaultSchemaSpace; import eu.esdihumboldt.hale.common.test.TestUtil; import eu.esdihumboldt.hale.io.csv.InstanceTableIOConstants; import eu.esdihumboldt.hale.io.csv.reader.CommonSchemaConstants; import eu.esdihumboldt.hale.io.xls.reader.XLSInstanceReader; import eu.esdihumboldt.hale.io.xls.reader.XLSSchemaReader; +import eu.esdihumboldt.hale.io.xls.test.writer.XLSInstanceWriterTestUtil; import eu.esdihumboldt.hale.io.xls.writer.XLSInstanceWriter; import junit.framework.TestCase; @@ -57,10 +59,20 @@ public void test() { IContentType contentType = HalePlatform.getContentTypeManager() .getContentType("eu.esdihumboldt.hale.io.xls.xls"); writer.setParameter(InstanceTableIOConstants.SOLVE_NESTED_PROPERTIES, Value.of(false)); + writer.setParameter(InstanceTableIOConstants.USE_SCHEMA, Value.of(true)); + writer.setParameter(InstanceTableIOConstants.EXPORT_IGNORE_EMPTY_FEATURETYPES, + Value.of(false)); + writer.setParameter(InstanceTableIOConstants.EXPORT_TYPE, Value.of("ItemType")); + File tempDir = Files.createTempDir(); File tempFile = new File(tempDir, "data.xls"); writer.setInstances(instances); try { + Schema schema = XLSInstanceWriterTestUtil.createExampleSchema(); + DefaultSchemaSpace ss = new DefaultSchemaSpace(); + ss.addSchema(schema); + writer.setTargetSchema(ss); + // write instances to a temporary XLS file writer.setTarget(new FileIOSupplier(tempFile)); writer.setContentType(contentType); diff --git a/io/plugins/eu.esdihumboldt.hale.io.xls.test/src/eu/esdihumboldt/hale/io/xls/test/writer/XLSInstanceWriterTest.java b/io/plugins/eu.esdihumboldt.hale.io.xls.test/src/eu/esdihumboldt/hale/io/xls/test/writer/XLSInstanceWriterTest.java index d35cef1a90..2a90b88ce2 100644 --- a/io/plugins/eu.esdihumboldt.hale.io.xls.test/src/eu/esdihumboldt/hale/io/xls/test/writer/XLSInstanceWriterTest.java +++ b/io/plugins/eu.esdihumboldt.hale.io.xls.test/src/eu/esdihumboldt/hale/io/xls/test/writer/XLSInstanceWriterTest.java @@ -42,7 +42,9 @@ import eu.esdihumboldt.hale.common.core.io.report.IOReport; import eu.esdihumboldt.hale.common.core.io.supplier.FileIOSupplier; import eu.esdihumboldt.hale.common.instance.model.InstanceCollection; +import eu.esdihumboldt.hale.common.instance.model.impl.MultiInstanceCollection; import eu.esdihumboldt.hale.common.schema.model.Schema; +import eu.esdihumboldt.hale.common.schema.model.impl.DefaultSchemaSpace; import eu.esdihumboldt.hale.common.test.TestUtil; import eu.esdihumboldt.hale.io.csv.InstanceTableIOConstants; import eu.esdihumboldt.hale.io.xls.writer.XLSInstanceWriter; @@ -94,10 +96,16 @@ public void testWriteSimpleSchemaColOrder() throws Exception { .getContentType("eu.esdihumboldt.hale.io.xls.xls"); writer.setParameter(InstanceTableIOConstants.SOLVE_NESTED_PROPERTIES, Value.of(true)); writer.setParameter(InstanceTableIOConstants.USE_SCHEMA, Value.of(true)); + writer.setParameter(InstanceTableIOConstants.EXPORT_IGNORE_EMPTY_FEATURETYPES, + Value.of(false)); + writer.setParameter(InstanceTableIOConstants.EXPORT_TYPE, Value.of("city")); File tmpFile = tmpFolder.newFile("excelTestWriteSimpleSchema.xls"); writer.setInstances(instance); + DefaultSchemaSpace ss = new DefaultSchemaSpace(); + ss.addSchema(schema); + writer.setTargetSchema(ss); // write instances to a temporary XLS file writer.setTarget(new FileIOSupplier(tmpFile)); writer.setContentType(contentType); @@ -115,6 +123,7 @@ public void testWriteSimpleSchemaColOrder() throws Exception { checkSheetName(sheet, "city"); checkFirstDataRow(sheet, firstDataRow); checkHeaderOrder(sheet, header); + tmpFolder.delete(); } /** @@ -124,7 +133,6 @@ public void testWriteSimpleSchemaColOrder() throws Exception { */ @Test public void testWriteComplexSchema() throws Exception { - TransformationExample example = TransformationExamples .getExample(TransformationExamples.SIMPLE_COMPLEX); // alternative the data could be generated by iterating through the @@ -140,10 +148,17 @@ public void testWriteComplexSchema() throws Exception { .getContentType("eu.esdihumboldt.hale.io.xls.xls"); writer.setParameter(InstanceTableIOConstants.SOLVE_NESTED_PROPERTIES, Value.of(true)); writer.setParameter(InstanceTableIOConstants.USE_SCHEMA, Value.of(false)); + writer.setParameter(InstanceTableIOConstants.EXPORT_IGNORE_EMPTY_FEATURETYPES, + Value.of(true)); + writer.setParameter(InstanceTableIOConstants.EXPORT_TYPE, Value.of("person")); File tmpFile = tmpFolder.newFile("excelTestWriteComplexSchema.xls"); writer.setInstances(example.getSourceInstances()); + Schema schema = XLSInstanceWriterTestUtil.createExampleSchema(); + DefaultSchemaSpace ss = new DefaultSchemaSpace(); + ss.addSchema(schema); + writer.setTargetSchema(ss); // write instances to a temporary XLS file writer.setTarget(new FileIOSupplier(tmpFile)); writer.setContentType(contentType); @@ -160,6 +175,7 @@ public void testWriteComplexSchema() throws Exception { checkHeader(sheet, header); checkSheetName(sheet, "person"); checkFirstDataRow(sheet, firstDataRow); + tmpFolder.delete(); } /** @@ -171,7 +187,6 @@ public void testWriteComplexSchema() throws Exception { */ @Test public void testWriteNotNestedProperties() throws Exception { - TransformationExample example = TransformationExamples .getExample(TransformationExamples.SIMPLE_COMPLEX); // alternative the data could be generated by iterating through the @@ -185,10 +200,17 @@ public void testWriteNotNestedProperties() throws Exception { .getContentType("eu.esdihumboldt.hale.io.xls.xls"); writer.setParameter(InstanceTableIOConstants.SOLVE_NESTED_PROPERTIES, Value.of(false)); writer.setParameter(InstanceTableIOConstants.USE_SCHEMA, Value.of(false)); + writer.setParameter(InstanceTableIOConstants.EXPORT_IGNORE_EMPTY_FEATURETYPES, + Value.of(true)); + writer.setParameter(InstanceTableIOConstants.EXPORT_TYPE, Value.of("person")); File tmpFile = tmpFolder.newFile("excelNotNestedProperties.xls"); writer.setInstances(example.getSourceInstances()); + Schema schema = XLSInstanceWriterTestUtil.createExampleSchema(); + DefaultSchemaSpace ss = new DefaultSchemaSpace(); + ss.addSchema(schema); + writer.setTargetSchema(ss); // write instances to a temporary XLS file writer.setTarget(new FileIOSupplier(tmpFile)); writer.setContentType(contentType); @@ -204,12 +226,13 @@ public void testWriteNotNestedProperties() throws Exception { checkHeader(sheet, header); checkSheetName(sheet, "person"); - checkFirstDataRow(sheet, firstDataRow); + tmpFolder.delete(); } /** - * Test - write data of complex schema and analyze result + * Test - write data for 2 example and create a common excel with multiple + * sheets * * @throws Exception , if an error occurs */ @@ -219,7 +242,7 @@ public void testExportMultiFeatureToExcel() throws Exception { TransformationExample example = TransformationExamples .getExample(TransformationExamples.SIMPLE_COMPLEX); TransformationExample example2 = TransformationExamples - .getExample(TransformationExamples.CARDINALITY_MOVE); + .getExample(TransformationExamples.CARDINALITY_MERGE_1); examples.add(example.getTargetInstances()); examples.add(example2.getTargetInstances()); @@ -229,26 +252,35 @@ public void testExportMultiFeatureToExcel() throws Exception { .getContentType("eu.esdihumboldt.hale.io.xls.xls"); writer.setParameter(InstanceTableIOConstants.SOLVE_NESTED_PROPERTIES, Value.of(false)); writer.setParameter(InstanceTableIOConstants.USE_SCHEMA, Value.of(false)); - writer.setParameter(InstanceTableIOConstants.EXPORT_EMPTY_FEATURETYPES, Value.of(true)); + writer.setParameter(InstanceTableIOConstants.EXPORT_IGNORE_EMPTY_FEATURETYPES, + Value.of(false)); + writer.setParameter(InstanceTableIOConstants.EXPORT_TYPE, Value.of("person" + "," + "t1")); File tmpFile = tmpFolder.newFile("excelWith2Sheets.xls"); // write instances to a temporary XLS file writer.setTarget(new FileIOSupplier(tmpFile)); writer.setContentType(contentType); - for (InstanceCollection instanceCollection : examples) { - writer.setInstances(instanceCollection); - } - System.out.println("XLSInstanceWriterTest.testExportMultiFeatureToExcel()"); + Schema schema = XLSInstanceWriterTestUtil.createExampleSchema(); + DefaultSchemaSpace ss = new DefaultSchemaSpace(); + ss.addSchema(schema); + writer.setTargetSchema(ss); + + InstanceCollection multiInstanceCollection = new MultiInstanceCollection(examples); + writer.setInstances(multiInstanceCollection); IOReport report = writer.execute(null); + assertTrue(report.isSuccess()); + Workbook wb; // https: // poi.apache.org/components/spreadsheet/quick-guide.html#FileInputStream try (POIFSFileSystem fs = new POIFSFileSystem(tmpFile)) { wb = new HSSFWorkbook(fs.getRoot(), true); } int sheetNumber = wb.getNumberOfSheets(); - assertEquals(examples.size(), sheetNumber); + Sheet sheet = wb.getSheetAt(0); + assertEquals(1, sheetNumber); + tmpFolder.delete(); } /** diff --git a/io/plugins/eu.esdihumboldt.hale.io.xls.ui/src/eu/esdihumboldt/hale/io/xls/ui/XLSInstanceExportConfigurationPage.java b/io/plugins/eu.esdihumboldt.hale.io.xls.ui/src/eu/esdihumboldt/hale/io/xls/ui/XLSInstanceExportConfigurationPage.java index aa59ff05fe..c236a7c263 100644 --- a/io/plugins/eu.esdihumboldt.hale.io.xls.ui/src/eu/esdihumboldt/hale/io/xls/ui/XLSInstanceExportConfigurationPage.java +++ b/io/plugins/eu.esdihumboldt.hale.io.xls.ui/src/eu/esdihumboldt/hale/io/xls/ui/XLSInstanceExportConfigurationPage.java @@ -41,18 +41,18 @@ import eu.esdihumboldt.hale.common.instance.io.InstanceWriter; import eu.esdihumboldt.hale.common.schema.model.TypeDefinition; import eu.esdihumboldt.hale.io.csv.InstanceTableIOConstants; -import eu.esdihumboldt.hale.io.csv.ui.InstanceExportConfigurationPage; +import eu.esdihumboldt.hale.io.csv.ui.CommonInstanceExportConfigurationPage; /** * Configuration page for exporting Excel * * @author Emanuela Epure */ -public class XLSInstanceExportConfigurationPage extends InstanceExportConfigurationPage { +public class XLSInstanceExportConfigurationPage extends CommonInstanceExportConfigurationPage { private CheckboxTableViewer featureTypeTable; private Button selectAll = null; - private Button exportEmptyData = null; + private Button ignoreEmptyFeaturetypes = null; private Group chooseFeatureTypes; private Table table; @@ -60,7 +60,9 @@ public class XLSInstanceExportConfigurationPage extends InstanceExportConfigurat * */ public XLSInstanceExportConfigurationPage() { - super(); + super("xlsInstanceExport.configPage"); + setTitle("Additonal Export Options"); + setDescription("Select if nested properties should be solved and a type"); } /** @@ -68,17 +70,7 @@ public XLSInstanceExportConfigurationPage() { */ @Override protected void createContent(Composite page) { - this.page = page; - - page.setLayout(new GridLayout(1, false)); - - solveNestedProperties = new Button(page, SWT.CHECK); - solveNestedProperties.setText("Solve nested properties"); - solveNestedProperties.setSelection(true); - - useSchema = new Button(page, SWT.CHECK); - useSchema.setText("Use the source schema for the order of the exported columns"); - useSchema.setSelection(true); + super.createContent(page); GridDataFactory groupData = GridDataFactory.fillDefaults().grab(true, false); chooseFeatureTypes = new Group(page, SWT.NONE); @@ -99,17 +91,18 @@ protected void createContent(Composite page) { protected void onShowPage(boolean firstShow) { if (firstShow) { - exportEmptyData = new Button(chooseFeatureTypes, SWT.CHECK); - exportEmptyData.setText("Ignore feature types without data"); - exportEmptyData.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1)); + ignoreEmptyFeaturetypes = new Button(chooseFeatureTypes, SWT.CHECK); + ignoreEmptyFeaturetypes.setText("Ignore feature types without data"); + ignoreEmptyFeaturetypes + .setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1)); - exportEmptyData.addSelectionListener(new SelectionAdapter() { + ignoreEmptyFeaturetypes.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { } }); - exportEmptyData.setSelection(false); + ignoreEmptyFeaturetypes.setSelection(false); selectAll = new Button(chooseFeatureTypes, SWT.CHECK); selectAll.setText("Select all"); @@ -129,8 +122,8 @@ public void widgetSelected(SelectionEvent e) { table = new Table(chooseFeatureTypes, SWT.CHECK | SWT.MULTI | SWT.SCROLL_PAGE); table.setHeaderVisible(false); table.setLinesVisible(false); - table.setBackground( - PlatformUI.getWorkbench().getDisplay().getSystemColor(SWT.COLOR_GRAY)); + table.setBackground(PlatformUI.getWorkbench().getDisplay() + .getSystemColor(SWT.COLOR_LIST_BACKGROUND)); GridDataFactory groupData = GridDataFactory.fillDefaults().grab(true, false); groupData.applyTo(table); @@ -154,7 +147,6 @@ public String getText(Object element) { } featureTypeTable.setInput(relevantTypes); - featureTypeTable.addCheckStateListener(new ICheckStateListener() { @Override @@ -179,13 +171,10 @@ private boolean validate() { */ @Override public boolean updateConfiguration(InstanceWriter provider) { - provider.setParameter(InstanceTableIOConstants.SOLVE_NESTED_PROPERTIES, - Value.of(solveNestedProperties.getSelection())); - provider.setParameter(InstanceTableIOConstants.USE_SCHEMA, - Value.of(useSchema.getSelection())); + super.updateConfiguration(provider); - provider.setParameter(InstanceTableIOConstants.EXPORT_EMPTY_FEATURETYPES, - Value.of(exportEmptyData.getSelection())); + provider.setParameter(InstanceTableIOConstants.EXPORT_IGNORE_EMPTY_FEATURETYPES, + Value.of(ignoreEmptyFeaturetypes.getSelection())); Object[] elements = featureTypeTable.getCheckedElements(); String param = ""; @@ -197,4 +186,22 @@ public boolean updateConfiguration(InstanceWriter provider) { return true; } + /** + * @see eu.esdihumboldt.hale.ui.io.config.AbstractConfigurationPage#enable() + */ + @Override + public void enable() { + // TODO Auto-generated method stub + + } + + /** + * @see eu.esdihumboldt.hale.ui.io.config.AbstractConfigurationPage#disable() + */ + @Override + public void disable() { + // TODO Auto-generated method stub + + } + } diff --git a/io/plugins/eu.esdihumboldt.hale.io.xls/plugin.xml b/io/plugins/eu.esdihumboldt.hale.io.xls/plugin.xml index 8b93504b6e..21ede0dab9 100644 --- a/io/plugins/eu.esdihumboldt.hale.io.xls/plugin.xml +++ b/io/plugins/eu.esdihumboldt.hale.io.xls/plugin.xml @@ -92,6 +92,7 @@ + + + + + + selectedFeatureTypes = new ArrayList<>(); - - String[] array = exportType.split(","); - for (String input : array) { - - selectedFeatureTypes.add(QName.valueOf(input)); - - } + boolean ignoreEmptyFeaturetypes = getParameter( + InstanceTableIOConstants.EXPORT_IGNORE_EMPTY_FEATURETYPES).as(Boolean.class, false); // write xls file if (getContentType().getId().equals("eu.esdihumboldt.hale.io.xls.xls")) { @@ -112,71 +101,21 @@ else if (getContentType().getId().equals("eu.esdihumboldt.hale.io.xls.xlsx")) { cellStyle = XLSCellStyles.getNormalStyle(workbook, false); headerStyle = XLSCellStyles.getHeaderStyle(workbook); - List remainingInstances = new ArrayList(); - for (QName selectedTypeName : selectedFeatureTypes) { - - // get all instances of the selected Type - InstanceCollection instances = getInstanceCollection(selectedTypeName); - // use ResourceIterator in a try block because is closable - // - - // avoid infinite - // cleaning project after exporting data - try (ResourceIterator instanceIterator = instances.iterator();) { - Instance instance = null; - try { - instance = instanceIterator.next(); - } catch (NoSuchElementException e) { -// reporter.error( -// new IOMessageImpl("There are no instances for the selected type.", e)); -// return reporter; - - if (!emptyFeatureTypes) { - Sheet sheet = workbook.createSheet(selectedTypeName.getLocalPart()); - sheet.createRow(0); - resizeSheet(sheet); - } - - continue; - } + String exportType = getParameter(InstanceTableIOConstants.EXPORT_TYPE).as(String.class); + ArrayList selectedFeatureTypes = new ArrayList<>(); - headerRowStrings = new ArrayList(); - - boolean useSchema = getParameter(InstanceTableIOConstants.USE_SCHEMA) - .as(Boolean.class, true); - - // all instances with equal type definitions are stored in an - // extra - // sheet - TypeDefinition definition = instance.getDefinition(); - - Sheet sheet; - try { - sheet = workbook.createSheet(definition.getDisplayName()); - - Row headerRow = sheet.createRow(0); - int rowNum = 1; - Row row = sheet.createRow(rowNum++); - writeRow(row, super.getPropertyMap(instance, headerRowStrings, useSchema, - solveNestedProperties)); - - while (instanceIterator.hasNext()) { - Instance nextInst = instanceIterator.next(); - if (nextInst.getDefinition().equals(definition)) { - row = sheet.createRow(rowNum++); - writeRow(row, super.getPropertyMap(nextInst, headerRowStrings, - useSchema, solveNestedProperties)); - } - else - remainingInstances.add(nextInst); - } + if (exportType != null) { + String[] splitExportType = exportType.split(","); + for (String featureType : splitExportType) { - writeHeaderRow(headerRow, headerRowStrings); - setCellStyle(sheet, headerRowStrings.size()); - resizeSheet(sheet); - } catch (Exception e) { - continue; - } + selectedFeatureTypes.add(QName.valueOf(featureType)); + } + for (QName selectedTypeName : selectedFeatureTypes) { + // get all instances of the selected Type + InstanceCollection instances = getInstanceCollection(selectedTypeName); + addSheetByQName(solveNestedProperties, ignoreEmptyFeaturetypes, selectedTypeName, + instances); } } @@ -188,6 +127,71 @@ else if (getContentType().getId().equals("eu.esdihumboldt.hale.io.xls.xlsx")) { return reporter; } // close try-iterator + /** + * @param solveNestedProperties : Solve nested properties + * @param ignoreEmptyFeaturetypes don't add empty feature types to excel + * @param selectedTypeName selected feature type + * @param instances InstanceCollection available + */ + private void addSheetByQName(boolean solveNestedProperties, boolean ignoreEmptyFeaturetypes, + QName selectedTypeName, InstanceCollection instances) { + + // use ResourceIterator in a try block because is closable + // - + // avoid infinite + // cleaning project after exporting data + try (ResourceIterator instanceIterator = instances.iterator();) { + Instance instance = null; + try { + instance = instanceIterator.next(); + } catch (NoSuchElementException e) { + if (!ignoreEmptyFeaturetypes) { + Sheet sheet = workbook.createSheet(selectedTypeName.getLocalPart()); + sheet.createRow(0); + resizeSheet(sheet); + } + return; + } + + headerRowStrings = new ArrayList(); + + boolean useSchema = getParameter(InstanceTableIOConstants.USE_SCHEMA).as(Boolean.class, + true); + + // all instances with equal type definitions are stored in an + // extra + // sheet + TypeDefinition definition = instance.getDefinition(); + + Sheet sheet; + try { + sheet = workbook.createSheet(definition.getDisplayName()); + + Row headerRow = sheet.createRow(0); + int rowNum = 1; + Row row = sheet.createRow(rowNum++); + writeRow(row, super.getPropertyMap(instance, headerRowStrings, useSchema, + solveNestedProperties)); + + while (instanceIterator.hasNext()) { + Instance nextInst = instanceIterator.next(); + if (nextInst.getDefinition().equals(definition)) { + row = sheet.createRow(rowNum++); + writeRow(row, super.getPropertyMap(nextInst, headerRowStrings, useSchema, + solveNestedProperties)); + } + } + + writeHeaderRow(headerRow, headerRowStrings); + setCellStyle(sheet, headerRowStrings.size()); + resizeSheet(sheet); + } catch (Exception e) { + return; + } + + } + } + @Override public boolean isPassthrough() { return true;