From c1b7b5767e1718be932194cf0aff82394d1ecf66 Mon Sep 17 00:00:00 2001 From: EHJ-52n Date: Fri, 25 Apr 2014 11:48:31 +0200 Subject: [PATCH 01/15] Minor changes --- .../model/xml/Step7ModelHandlerTest.java | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step7ModelHandlerTest.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step7ModelHandlerTest.java index c96586ef..a29c2f86 100644 --- a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step7ModelHandlerTest.java +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step7ModelHandlerTest.java @@ -31,13 +31,11 @@ import org.n52.sos.importer.model.Step7Model; import org.x52North.sensorweb.sos.importer.x02.SosImportConfigurationDocument.SosImportConfiguration; - /** * @author Eike Hinderk Jürrens - * */ public class Step7ModelHandlerTest { - + @Test public void should_add_binding_if_set_in_model() { @@ -45,26 +43,26 @@ public void should_add_binding_if_set_in_model() final Step7Model stepModel = new Step7Model(null, null, false, null, null, binding); final SosImportConfiguration importConf = SosImportConfiguration.Factory.newInstance(); new Step7ModelHandler().handleModel(stepModel, importConf); - + assertThat(importConf.getSosMetadata().isSetBinding(), is(TRUE)); assertThat(importConf.getSosMetadata().getBinding(), is(binding)); } - + @Test public void should_not_add_binding_if_empty_or_null() { final Step7Model stepModelEmpty = new Step7Model(null, null, false, null, null, ""); final SosImportConfiguration importConfEmpty = SosImportConfiguration.Factory.newInstance(); new Step7ModelHandler().handleModel(stepModelEmpty, importConfEmpty); - + final Step7Model stepModelNull = new Step7Model(null, null, false, null, null, null); final SosImportConfiguration importConfNull = SosImportConfiguration.Factory.newInstance(); new Step7ModelHandler().handleModel(stepModelNull, importConfNull); - + assertThat(importConfEmpty.getSosMetadata().isSetBinding(), is(FALSE)); assertThat(importConfNull.getSosMetadata().isSetBinding(), is(FALSE)); } - + @Test public void should_add_version_if_set_in_model() { @@ -72,21 +70,21 @@ public void should_add_version_if_set_in_model() final Step7Model stepModel = new Step7Model(null, null, false, null, version, null); final SosImportConfiguration importConf = SosImportConfiguration.Factory.newInstance(); new Step7ModelHandler().handleModel(stepModel, importConf); - + assertThat(importConf.getSosMetadata().getVersion(), is(version)); } - + @Test public void should_not_add_version_if_empty_or_null() { final Step7Model stepModelEmpty = new Step7Model(null, null, false, null, "",null); final SosImportConfiguration importConfEmpty = SosImportConfiguration.Factory.newInstance(); new Step7ModelHandler().handleModel(stepModelEmpty, importConfEmpty); - + final Step7Model stepModelNull = new Step7Model(null, null, false, null, null, null); final SosImportConfiguration importConfNull = SosImportConfiguration.Factory.newInstance(); new Step7ModelHandler().handleModel(stepModelNull, importConfNull); - + assertThat(importConfEmpty.getSosMetadata().getVersion(), is(nullValue())); assertThat(importConfNull.getSosMetadata().getVersion(), is(nullValue())); } From 3057f744d0e6cc13f9929fa144f68a58b7c23112 Mon Sep 17 00:00:00 2001 From: EHJ-52n Date: Fri, 25 Apr 2014 12:30:06 +0200 Subject: [PATCH 02/15] add mvc for isSampleBased --- .../importer/controller/Step2Controller.java | 8 ++++ .../n52/sos/importer/model/Step2Model.java | 11 +++++ .../importer/model/xml/Step2ModelHandler.java | 5 ++- .../org/n52/sos/importer/view/Step2Panel.java | 39 ++++++++++++++++ .../org/n52/sos/importer/view/i18n/De.java | 5 +++ .../org/n52/sos/importer/view/i18n/En.java | 5 +++ .../org/n52/sos/importer/view/i18n/Lang.java | 7 +++ .../sos/importer/model/Step2ModelTest.java | 45 +++++++++++++++++++ .../n52/sos/importer/view/Step2PanelTest.java | 45 +++++++++++++++++++ 9 files changed, 169 insertions(+), 1 deletion(-) create mode 100644 52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/Step2ModelTest.java create mode 100644 52n-sos-importer-core/src/test/java/org/n52/sos/importer/view/Step2PanelTest.java diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java index b8a0c2be..1709255e 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java @@ -124,6 +124,10 @@ public void loadSettings() { final char decimalSeparator = step2Model.getDecimalSeparator(); step2Panel.setDecimalSeparator(decimalSeparator+""); + + if (step2Model.isSampleBased()) { + step2Panel.setSampleBased(true); + } } @Override @@ -164,6 +168,10 @@ public void saveSettings() { Constants.THOUSANDS_SEPARATOR = '.'; } + if (step2Panel.isSampleBased()) { + step2Model.setSampleBased(true); + } + step2Panel = null; } diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/Step2Model.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/Step2Model.java index 191a3490..9780ee7b 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/Step2Model.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/Step2Model.java @@ -43,6 +43,8 @@ public class Step2Model implements StepModel { private boolean useHeader; + private boolean isSampleBased; + public Step2Model(final String csvFileContent, final int csvFileRowCount) { this.csvFileContent = csvFileContent; @@ -117,4 +119,13 @@ public char getDecimalSeparator() { public void setDecimalSeparator(final char decimalSeparator) { this.decimalSeparator = decimalSeparator; } + + public boolean isSampleBased() { + return isSampleBased; + } + + public Step2Model setSampleBased(final boolean isSampleBased) { + this.isSampleBased = isSampleBased; + return this; + } } \ No newline at end of file diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/xml/Step2ModelHandler.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/xml/Step2ModelHandler.java index 40287297..86efb2d9 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/xml/Step2ModelHandler.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/xml/Step2ModelHandler.java @@ -40,7 +40,7 @@ * @author Eike Hinderk Jürrens */ public class Step2ModelHandler implements ModelHandler { - + private static final Logger logger = LoggerFactory.getLogger(Step2ModelHandler.class); @Override @@ -67,6 +67,9 @@ public void handleModel(final Step2Model stepModel, p.setCommentIndicator(stepModel.getCommentIndicator()); p.setColumnSeparator(stepModel.getColumnSeparator()); p.setTextIndicator(stepModel.getTextQualifier()); + if (stepModel.isSampleBased()) { + // add other sampling parameters + } } } diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java index 294b9c9a..e421bd76 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java @@ -86,6 +86,9 @@ public class Step2Panel extends JPanel { private final JLabel useHeaderJL; private final JCheckBox useHeaderJCB; + private int firstLineWithDataTmp = -1; + private final JCheckBox isSampleBasedCheckBox; + public Step2Panel(final int csvFileRowCount) { super(); // @@ -213,6 +216,33 @@ public void stateChanged(final ChangeEvent e) { gbc_decimalSeparatorPanel.gridx = 0; gbc_decimalSeparatorPanel.gridy = 4; csvSettingsPanel.add(decimalSeparatorPanel, gbc_decimalSeparatorPanel); + // isSampleBasedFile + isSampleBasedCheckBox = new JCheckBox(); + final JPanel isSampleBasedFilePanel = new JPanel(); + isSampleBasedFilePanel.setLayout(new FlowLayout(FlowLayout.LEADING, 0, 0)); + isSampleBasedFilePanel.add(new JLabel(Lang.l().step2IsSampleBased() + "?")); + isSampleBasedFilePanel.add(isSampleBasedCheckBox); + isSampleBasedCheckBox.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(final ActionEvent e) { + if (isSampleBasedCheckBox.isSelected()) { + // TODO activateSampleBasedGuiElements + firstDataJS.setEnabled(false); + firstLineWithDataTmp = Integer.parseInt(firstDataJS.getValue().toString()); + firstDataJS.setValue(0); + } else { + // TODO disable all sample based elements + firstDataJS.setValue(firstLineWithDataTmp); + firstDataJS.setEnabled(true); + } + } + }); + final GridBagConstraints gbc_isSampleBasedFilePanel = new GridBagConstraints(); + gbc_isSampleBasedFilePanel.fill = GridBagConstraints.BOTH; + gbc_isSampleBasedFilePanel.gridx = 0; + gbc_isSampleBasedFilePanel.gridy = 5; + csvSettingsPanel.add(isSampleBasedFilePanel, gbc_isSampleBasedFilePanel); // // CSV text area // @@ -341,4 +371,13 @@ public boolean getUseHeader() { public void setUseHeader(final boolean useHeader) { useHeaderJCB.setSelected(useHeader); } + + public Step2Panel setSampleBased(final boolean isSampleBased) { + isSampleBasedCheckBox.setSelected(isSampleBased); + return this; + } + + public boolean isSampleBased() { + return isSampleBasedCheckBox.isSelected(); + } } diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java index 0aaa566b..f4c3b1e2 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java @@ -409,6 +409,11 @@ public String step2FirstLineWithData() { return "Ignoriere Daten bis Zeile"; } + @Override + public String step2IsSampleBased() { + return "Besteht die Datei aus Messreihen"; + } + @Override public String step2ParseHeader() { return "Kopfzeile auswerten"; diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java index ccd1b58e..890cd858 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java @@ -412,6 +412,11 @@ public String step2FirstLineWithData() { return "Ignore data until line"; } + @Override + public String step2IsSampleBased() { + return "Is data file sample based"; + } + @Override public String step2ParseHeader() { return "Interpret Header"; diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/Lang.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/Lang.java index 6db2769b..620de15b 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/Lang.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/Lang.java @@ -398,6 +398,13 @@ public String sos() { * @return Text qualifier */ public abstract String step2TextQualifier(); + + /** + * + * @return Is data file sample based + */ + public abstract String step2IsSampleBased(); + /** * @return Step 3a: Choose Metadata for the selected column */ diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/Step2ModelTest.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/Step2ModelTest.java new file mode 100644 index 00000000..9f7adf34 --- /dev/null +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/Step2ModelTest.java @@ -0,0 +1,45 @@ +/** + * Copyright (C) 2014 + * by 52 North Initiative for Geospatial Open Source Software GmbH + * + * Contact: Andreas Wytzisk + * 52 North Initiative for Geospatial Open Source Software GmbH + * Martin-Luther-King-Weg 24 + * 48155 Muenster, Germany + * info@52north.org + * + * This program is free software; you can redistribute and/or modify it under + * the terms of the GNU General Public License version 2 as published by the + * Free Software Foundation. + * + * This program is distributed WITHOUT ANY WARRANTY; even without the implied + * WARRANTY OF MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * this program (see gnu-gpl v2.txt). If not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA or + * visit the Free Software Foundation web page, http://www.fsf.org. + */ +package org.n52.sos.importer.model; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; + +import org.junit.Test; + +/** + * @author Eike Hinderk Jürrens + */ +public class Step2ModelTest { + + @Test + public void shouldReturnTrueIfIsSampleBasedIsSet() { + assertThat(new Step2Model("", 0).setSampleBased(true).isSampleBased(), is(true)); + } + + @Test + public void shouldReturnFalseAsDefaultValueForSampleBased() { + assertThat(new Step2Model("", 0).isSampleBased(), is(false)); + } +} diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/view/Step2PanelTest.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/view/Step2PanelTest.java new file mode 100644 index 00000000..1d2e49d9 --- /dev/null +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/view/Step2PanelTest.java @@ -0,0 +1,45 @@ +/** + * Copyright (C) 2014 + * by 52 North Initiative for Geospatial Open Source Software GmbH + * + * Contact: Andreas Wytzisk + * 52 North Initiative for Geospatial Open Source Software GmbH + * Martin-Luther-King-Weg 24 + * 48155 Muenster, Germany + * info@52north.org + * + * This program is free software; you can redistribute and/or modify it under + * the terms of the GNU General Public License version 2 as published by the + * Free Software Foundation. + * + * This program is distributed WITHOUT ANY WARRANTY; even without the implied + * WARRANTY OF MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * this program (see gnu-gpl v2.txt). If not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA or + * visit the Free Software Foundation web page, http://www.fsf.org. + */ +package org.n52.sos.importer.view; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; + +import org.junit.Test; + +/** + * @author Eike Hinderk Jürrens + */ +public class Step2PanelTest { + + @Test + public void shouldReturnTrueIfIsSampleBasedIsSet() { + assertThat(new Step2Panel(1).setSampleBased(true).isSampleBased(), is(true)); + } + + @Test + public void shouldReturnFalseAsDefaultValueForSampleBased() { + assertThat(new Step2Panel(1).isSampleBased(), is(false)); + } +} From 44501a5bf42b1684b2bac8aa803d1525705b6a09 Mon Sep 17 00:00:00 2001 From: EHJ-52n Date: Fri, 25 Apr 2014 12:45:16 +0200 Subject: [PATCH 03/15] Refactor constructor of Step2Panel --- .../org/n52/sos/importer/view/Step2Panel.java | 307 ++++++++++-------- 1 file changed, 171 insertions(+), 136 deletions(-) diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java index e421bd76..9b84d6e3 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java @@ -23,6 +23,7 @@ */ package org.n52.sos.importer.view; import java.awt.BorderLayout; +import java.awt.Container; import java.awt.FlowLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; @@ -70,102 +71,110 @@ public class Step2Panel extends JPanel { private static final long serialVersionUID = 1L; - private final EditableJComboBoxPanel columnSeparatorCombobox; - private final EditableJComboBoxPanel commentIndicatorCombobox; - private final EditableJComboBoxPanel textQualifierCombobox; + private EditableJComboBoxPanel columnSeparatorCombobox; + private EditableJComboBoxPanel commentIndicatorCombobox; + private EditableJComboBoxPanel textQualifierCombobox; - private final JComboBox decimalSeparatorCombobox; + private JComboBox decimalSeparatorCombobox; - private final JTextArea csvFileTextArea; + private JTextArea csvFileTextArea; private int csvFileRowCount = 0; - private final SpinnerNumberModel lineModel; - private final JSpinner firstDataJS; - private final JLabel firstDataJL; + private SpinnerNumberModel lineModel; + private JSpinner firstDataJS; + private JLabel firstDataJL; - private final JLabel useHeaderJL; - private final JCheckBox useHeaderJCB; + private JLabel useHeaderJL; + private JCheckBox useHeaderJCB; private int firstLineWithDataTmp = -1; - private final JCheckBox isSampleBasedCheckBox; + private JCheckBox isSampleBasedCheckBox; public Step2Panel(final int csvFileRowCount) { super(); - // this.csvFileRowCount = csvFileRowCount; - // + + final JPanel csvSettingsPanel = new JPanel(); + setupStyle(csvSettingsPanel); final EditableComboBoxItems items = EditableComboBoxItems.getInstance(); - // - // FirstLineWithData - // - lineModel = new SpinnerNumberModel(0, 0, this.csvFileRowCount-1, 1); - // - // useHeader Checkbox - // - useHeaderJL = new JLabel(Lang.l().step2ParseHeader() + "?"); - useHeaderJCB = new JCheckBox(); - if (logger.isTraceEnabled()) { - useHeaderJCB.addActionListener(new ActionListener() { - @Override - public void actionPerformed(final ActionEvent e) { - logger.trace("useHeader state changed. is selected?" + - useHeaderJCB.isSelected()); + int gridY = 0; + addColumnSeparator(csvSettingsPanel, items, gridY); + addCommentIndicator(csvSettingsPanel, items, gridY++); + addTextQualifier(csvSettingsPanel, items, gridY++); + addFirstLineWithData(csvFileRowCount, csvSettingsPanel, gridY++); + addDecimalSeparator(csvSettingsPanel, gridY++); + // USE_HEADER uncomment next line to enable again + addUseHeaderCheckbox(csvSettingsPanel, gridY++); + addElementsForSampleBasedFiles(csvSettingsPanel, gridY++); + final JPanel csvDataPanel = new JPanel(); + addCsvDataPanel(csvDataPanel); + + add(csvSettingsPanel); + add(csvDataPanel); + } + + private void addCsvDataPanel(final JPanel csvDataPanel) { + csvFileTextArea = new JTextArea(20, 60); + csvFileTextArea.setEditable(false); + final JScrollPane scrollPane = new JScrollPane(csvFileTextArea); + csvDataPanel.setBorder(new TitledBorder(null, Lang.l().step2DataPreviewLabel(), TitledBorder.LEADING, TitledBorder.TOP, null, null)); + csvDataPanel.setLayout(new BorderLayout(0, 0)); + csvDataPanel.add(scrollPane); + setLayout(new BoxLayout(this, BoxLayout.LINE_AXIS)); + } + + private void addElementsForSampleBasedFiles(final JPanel csvSettingsPanel, int gridY) { + addIsSampleBased(csvSettingsPanel, gridY); + } + + private void addIsSampleBased(final JPanel csvSettingsPanel, final int gridY) { + // isSampleBasedFile + isSampleBasedCheckBox = new JCheckBox(); + final JPanel isSampleBasedFilePanel = new JPanel(); + isSampleBasedFilePanel.setLayout(new FlowLayout(FlowLayout.LEADING, 0, 0)); + isSampleBasedFilePanel.add(new JLabel(Lang.l().step2IsSampleBased() + "?")); + isSampleBasedFilePanel.add(isSampleBasedCheckBox); + isSampleBasedCheckBox.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(final ActionEvent e) { + if (isSampleBasedCheckBox.isSelected()) { + // TODO activateSampleBasedGuiElements + firstDataJS.setEnabled(false); + firstLineWithDataTmp = Integer.parseInt(firstDataJS.getValue().toString()); + firstDataJS.setValue(0); + } else { + // TODO disable all sample based elements + firstDataJS.setValue(firstLineWithDataTmp); + firstDataJS.setEnabled(true); } - }); - } - useHeaderJCB.setSelected(false); - // will be enabled if firstLineWithdata is set to > 0 - useHeaderJCB.setEnabled(false); - final JPanel useHeaderPanel = new JPanel(); - useHeaderPanel.setLayout(new FlowLayout(FlowLayout.RIGHT)); - useHeaderPanel.add(useHeaderJL); - useHeaderPanel.add(useHeaderJCB); - /* - * Decimal Separator - */ - final String[] decimalSeparators = Constants.DECIMAL_SEPARATORS; - // - // - // CSV-setting panel - // - final JPanel csvSettingsPanel = new JPanel(); - csvSettingsPanel.setBorder(new TitledBorder(null, Lang.l().metadata(), TitledBorder.LEADING, TitledBorder.TOP, null, null)); - final GridBagLayout gbl_csvSettingsPanel = new GridBagLayout(); - gbl_csvSettingsPanel.columnWidths = new int[]{239, 0}; - gbl_csvSettingsPanel.rowHeights = new int[]{25, 25, 25, 25, 25, 0}; - gbl_csvSettingsPanel.columnWeights = new double[]{1.0, Double.MIN_VALUE}; - gbl_csvSettingsPanel.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE}; - csvSettingsPanel.setLayout(gbl_csvSettingsPanel); - columnSeparatorCombobox = new EditableJComboBoxPanel( - items.getColumnSeparators(), - Lang.l().step2ColumnSeparator(), - ToolTips.get(ToolTips.COLUMN_SEPARATOR)); - final GridBagConstraints gbc_columnSeparatorCombobox = new GridBagConstraints(); - gbc_columnSeparatorCombobox.fill = GridBagConstraints.BOTH; - gbc_columnSeparatorCombobox.insets = new Insets(0, 0, 5, 0); - gbc_columnSeparatorCombobox.gridx = 0; - gbc_columnSeparatorCombobox.gridy = 0; - csvSettingsPanel.add(columnSeparatorCombobox, gbc_columnSeparatorCombobox); - commentIndicatorCombobox = new EditableJComboBoxPanel( - items.getCommentIndicators(), - Lang.l().step2CommentIndicator(), - ToolTips.get(ToolTips.COMMENT_INDICATOR)); - final GridBagConstraints gbc_commentIndicatorCombobox = new GridBagConstraints(); - gbc_commentIndicatorCombobox.fill = GridBagConstraints.BOTH; - gbc_commentIndicatorCombobox.insets = new Insets(0, 0, 5, 0); - gbc_commentIndicatorCombobox.gridx = 0; - gbc_commentIndicatorCombobox.gridy = 1; - csvSettingsPanel.add(commentIndicatorCombobox, gbc_commentIndicatorCombobox); - textQualifierCombobox = new EditableJComboBoxPanel( - items.getTextQualifiers(), - Lang.l().step2TextQualifier(), - ToolTips.get(ToolTips.TEXT_QUALIFIER)); - final GridBagConstraints gbc_textQualifierCombobox = new GridBagConstraints(); - gbc_textQualifierCombobox.fill = GridBagConstraints.BOTH; - gbc_textQualifierCombobox.insets = new Insets(0, 0, 5, 0); - gbc_textQualifierCombobox.gridx = 0; - gbc_textQualifierCombobox.gridy = 2; - csvSettingsPanel.add(textQualifierCombobox, gbc_textQualifierCombobox); + } + }); + final GridBagConstraints gbc_isSampleBasedFilePanel = new GridBagConstraints(); + gbc_isSampleBasedFilePanel.fill = GridBagConstraints.BOTH; + gbc_isSampleBasedFilePanel.gridx = 0; + gbc_isSampleBasedFilePanel.gridy = gridY; + csvSettingsPanel.add(isSampleBasedFilePanel, gbc_isSampleBasedFilePanel); + } + + private void addDecimalSeparator(final JPanel csvSettingsPanel, final int gridY) { + final JLabel decimalSeparatorLabel = new JLabel(Lang.l().step2DecimalSeparator() + " : "); + decimalSeparatorCombobox = new JComboBox(Constants.DECIMAL_SEPARATORS); + decimalSeparatorCombobox.setSelectedIndex(0); + final JPanel decimalSeparatorPanel = new JPanel(); + decimalSeparatorPanel.setLayout(new FlowLayout(FlowLayout.LEADING,0,0)); + decimalSeparatorPanel.add(decimalSeparatorLabel); + decimalSeparatorPanel.add(decimalSeparatorCombobox); + final GridBagConstraints gbc_decimalSeparatorPanel = new GridBagConstraints(); + gbc_decimalSeparatorPanel.fill = GridBagConstraints.BOTH; + gbc_decimalSeparatorPanel.gridx = 0; + gbc_decimalSeparatorPanel.gridy = gridY; + csvSettingsPanel.add(decimalSeparatorPanel, gbc_decimalSeparatorPanel); + } + + private void addFirstLineWithData(final int csvFileRowCount, + final JPanel csvSettingsPanel, final int gridY) { + lineModel = new SpinnerNumberModel(0, 0, csvFileRowCount-1, 1); firstDataJS = new JSpinner(lineModel); // Highlight the current selected line in the file preview firstDataJS.addChangeListener(new ChangeListener() { @@ -200,62 +209,88 @@ public void stateChanged(final ChangeEvent e) { gbc_firstLineWithDataJPanel.fill = GridBagConstraints.BOTH; gbc_firstLineWithDataJPanel.insets = new Insets(0, 0, 5, 0); gbc_firstLineWithDataJPanel.gridx = 0; - gbc_firstLineWithDataJPanel.gridy = 3; + gbc_firstLineWithDataJPanel.gridy = gridY; csvSettingsPanel.add(firstLineWithDataJPanel, gbc_firstLineWithDataJPanel); - final JLabel decimalSeparatorLabel = new JLabel(Lang.l().step2DecimalSeparator() + " : "); - decimalSeparatorCombobox = new JComboBox(decimalSeparators); - decimalSeparatorCombobox.setSelectedIndex(0); - final JPanel decimalSeparatorPanel = new JPanel(); - decimalSeparatorPanel.setLayout(new FlowLayout(FlowLayout.LEADING,0,0)); - decimalSeparatorPanel.add(decimalSeparatorLabel); - decimalSeparatorPanel.add(decimalSeparatorCombobox); - // USE_HEADER uncomment next line to enable again - // csvSettingsPanel.add(useHeaderPanel); - final GridBagConstraints gbc_decimalSeparatorPanel = new GridBagConstraints(); - gbc_decimalSeparatorPanel.fill = GridBagConstraints.BOTH; - gbc_decimalSeparatorPanel.gridx = 0; - gbc_decimalSeparatorPanel.gridy = 4; - csvSettingsPanel.add(decimalSeparatorPanel, gbc_decimalSeparatorPanel); - // isSampleBasedFile - isSampleBasedCheckBox = new JCheckBox(); - final JPanel isSampleBasedFilePanel = new JPanel(); - isSampleBasedFilePanel.setLayout(new FlowLayout(FlowLayout.LEADING, 0, 0)); - isSampleBasedFilePanel.add(new JLabel(Lang.l().step2IsSampleBased() + "?")); - isSampleBasedFilePanel.add(isSampleBasedCheckBox); - isSampleBasedCheckBox.addActionListener(new ActionListener() { + } - @Override - public void actionPerformed(final ActionEvent e) { - if (isSampleBasedCheckBox.isSelected()) { - // TODO activateSampleBasedGuiElements - firstDataJS.setEnabled(false); - firstLineWithDataTmp = Integer.parseInt(firstDataJS.getValue().toString()); - firstDataJS.setValue(0); - } else { - // TODO disable all sample based elements - firstDataJS.setValue(firstLineWithDataTmp); - firstDataJS.setEnabled(true); + private void addTextQualifier(final JPanel csvSettingsPanel, + final EditableComboBoxItems items, final int gridY) { + textQualifierCombobox = new EditableJComboBoxPanel( + items.getTextQualifiers(), + Lang.l().step2TextQualifier(), + ToolTips.get(ToolTips.TEXT_QUALIFIER)); + final GridBagConstraints gbc_textQualifierCombobox = new GridBagConstraints(); + gbc_textQualifierCombobox.fill = GridBagConstraints.BOTH; + gbc_textQualifierCombobox.insets = new Insets(0, 0, 5, 0); + gbc_textQualifierCombobox.gridx = 0; + gbc_textQualifierCombobox.gridy = gridY; + csvSettingsPanel.add(textQualifierCombobox, gbc_textQualifierCombobox); + } + + private void addCommentIndicator(final JPanel csvSettingsPanel, + final EditableComboBoxItems items, final int gridY) { + commentIndicatorCombobox = new EditableJComboBoxPanel( + items.getCommentIndicators(), + Lang.l().step2CommentIndicator(), + ToolTips.get(ToolTips.COMMENT_INDICATOR)); + final GridBagConstraints gbc_commentIndicatorCombobox = new GridBagConstraints(); + gbc_commentIndicatorCombobox.fill = GridBagConstraints.BOTH; + gbc_commentIndicatorCombobox.insets = new Insets(0, 0, 5, 0); + gbc_commentIndicatorCombobox.gridx = 0; + gbc_commentIndicatorCombobox.gridy = gridY; + csvSettingsPanel.add(commentIndicatorCombobox, gbc_commentIndicatorCombobox); + } + + private void setupStyle(final JPanel csvSettingsPanel) { + csvSettingsPanel.setBorder(new TitledBorder(null, Lang.l().metadata(), TitledBorder.LEADING, TitledBorder.TOP, null, null)); + final GridBagLayout gbl_csvSettingsPanel = new GridBagLayout(); + gbl_csvSettingsPanel.columnWidths = new int[]{239, 0}; + gbl_csvSettingsPanel.rowHeights = new int[]{25, 25, 25, 25, 25, 0}; + gbl_csvSettingsPanel.columnWeights = new double[]{1.0, Double.MIN_VALUE}; + gbl_csvSettingsPanel.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE}; + csvSettingsPanel.setLayout(gbl_csvSettingsPanel); + } + + private void addColumnSeparator(final JPanel csvSettingsPanel, + final EditableComboBoxItems items, + final int gridY) { + columnSeparatorCombobox = new EditableJComboBoxPanel( + items.getColumnSeparators(), + Lang.l().step2ColumnSeparator(), + ToolTips.get(ToolTips.COLUMN_SEPARATOR)); + final GridBagConstraints gbc_columnSeparatorCombobox = new GridBagConstraints(); + gbc_columnSeparatorCombobox.fill = GridBagConstraints.BOTH; + gbc_columnSeparatorCombobox.insets = new Insets(0, 0, 5, 0); + gbc_columnSeparatorCombobox.gridx = 0; + gbc_columnSeparatorCombobox.gridy = gridY; + csvSettingsPanel.add(columnSeparatorCombobox, gbc_columnSeparatorCombobox); + } + + private void addUseHeaderCheckbox(final Container csvSettingsPanel, final int gridY) { + useHeaderJL = new JLabel(Lang.l().step2ParseHeader() + "?"); + useHeaderJCB = new JCheckBox(); + if (logger.isTraceEnabled()) { + useHeaderJCB.addActionListener(new ActionListener() { + @Override + public void actionPerformed(final ActionEvent e) { + logger.trace("useHeader state changed. is selected?" + + useHeaderJCB.isSelected()); } - } - }); - final GridBagConstraints gbc_isSampleBasedFilePanel = new GridBagConstraints(); - gbc_isSampleBasedFilePanel.fill = GridBagConstraints.BOTH; - gbc_isSampleBasedFilePanel.gridx = 0; - gbc_isSampleBasedFilePanel.gridy = 5; - csvSettingsPanel.add(isSampleBasedFilePanel, gbc_isSampleBasedFilePanel); - // - // CSV text area - // - csvFileTextArea = new JTextArea(20, 60); - csvFileTextArea.setEditable(false); - final JScrollPane scrollPane = new JScrollPane(csvFileTextArea); - final JPanel csvDataPanel = new JPanel(); - csvDataPanel.setBorder(new TitledBorder(null, Lang.l().step2DataPreviewLabel(), TitledBorder.LEADING, TitledBorder.TOP, null, null)); - csvDataPanel.setLayout(new BorderLayout(0, 0)); - csvDataPanel.add(scrollPane); - setLayout(new BoxLayout(this, BoxLayout.LINE_AXIS)); - add(csvSettingsPanel); - add(csvDataPanel); + }); + } + useHeaderJCB.setSelected(false); + // will be enabled if firstLineWithdata is set to > 0 + useHeaderJCB.setEnabled(false); + final JPanel useHeaderPanel = new JPanel(); + useHeaderPanel.setLayout(new FlowLayout(FlowLayout.RIGHT)); + useHeaderPanel.add(useHeaderJL); + useHeaderPanel.add(useHeaderJCB); + final GridBagConstraints gbc_useHeaderPanel = new GridBagConstraints(); + gbc_useHeaderPanel.fill = GridBagConstraints.BOTH; + gbc_useHeaderPanel.insets = new Insets(0, 0, 5, 0); + gbc_useHeaderPanel.gridx = 0; + gbc_useHeaderPanel.gridy = gridY; + csvSettingsPanel.add(useHeaderPanel, gbc_useHeaderPanel); } public String getCommentIndicator() { From ea933b792cb9ad502b6d1db986ac05906d7f9e9d Mon Sep 17 00:00:00 2001 From: EHJ-52n Date: Fri, 25 Apr 2014 15:04:42 +0200 Subject: [PATCH 04/15] minor changes --- .../importer/model/xml/Step7ModelHandlerTest.java | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step7ModelHandlerTest.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step7ModelHandlerTest.java index a29c2f86..87b8054f 100644 --- a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step7ModelHandlerTest.java +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step7ModelHandlerTest.java @@ -37,8 +37,7 @@ public class Step7ModelHandlerTest { @Test - public void should_add_binding_if_set_in_model() - { + public void shouldAddBindingIfSetInModel() { final String binding = "test-binding"; final Step7Model stepModel = new Step7Model(null, null, false, null, null, binding); final SosImportConfiguration importConf = SosImportConfiguration.Factory.newInstance(); @@ -49,8 +48,7 @@ public void should_add_binding_if_set_in_model() } @Test - public void should_not_add_binding_if_empty_or_null() - { + public void shouldNotAddBindingIfEmptyOrNull() { final Step7Model stepModelEmpty = new Step7Model(null, null, false, null, null, ""); final SosImportConfiguration importConfEmpty = SosImportConfiguration.Factory.newInstance(); new Step7ModelHandler().handleModel(stepModelEmpty, importConfEmpty); @@ -64,8 +62,7 @@ public void should_not_add_binding_if_empty_or_null() } @Test - public void should_add_version_if_set_in_model() - { + public void shouldAddVersionIfSetInModel() { final String version = "test-version"; final Step7Model stepModel = new Step7Model(null, null, false, null, version, null); final SosImportConfiguration importConf = SosImportConfiguration.Factory.newInstance(); @@ -75,8 +72,7 @@ public void should_add_version_if_set_in_model() } @Test - public void should_not_add_version_if_empty_or_null() - { + public void shouldNotAddVersionIfEmptyOrNull() { final Step7Model stepModelEmpty = new Step7Model(null, null, false, null, "",null); final SosImportConfiguration importConfEmpty = SosImportConfiguration.Factory.newInstance(); new Step7ModelHandler().handleModel(stepModelEmpty, importConfEmpty); From cd3133d6fc7239e06ab2fd617e071957e290817f Mon Sep 17 00:00:00 2001 From: EHJ-52n Date: Fri, 25 Apr 2014 15:24:25 +0200 Subject: [PATCH 05/15] add mvc for sampleStartRegEx --- .../importer/controller/Step2Controller.java | 14 +++- .../n52/sos/importer/model/Step2Model.java | 37 +++++++--- .../importer/model/xml/Step2ModelHandler.java | 34 +++++---- .../org/n52/sos/importer/view/Step2Panel.java | 66 ++++++++++++----- .../org/n52/sos/importer/view/i18n/De.java | 13 +++- .../org/n52/sos/importer/view/i18n/En.java | 15 +++- .../org/n52/sos/importer/view/i18n/Lang.java | 13 ++++ .../controller/Step2ControllerTest.java | 71 +++++++++++++++++++ .../sos/importer/model/Step2ModelTest.java | 23 +++++- .../model/xml/Step2ModelHandlerTest.java | 51 +++++++++++++ .../org/n52/sos/importer/test/Step2Test.java | 43 +++++++++++ .../n52/sos/importer/view/Step2PanelTest.java | 23 +++++- 12 files changed, 353 insertions(+), 50 deletions(-) create mode 100644 52n-sos-importer-core/src/test/java/org/n52/sos/importer/controller/Step2ControllerTest.java create mode 100644 52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step2ModelHandlerTest.java create mode 100644 52n-sos-importer-core/src/test/java/org/n52/sos/importer/test/Step2Test.java diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java index 1709255e..f533e56c 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java @@ -82,6 +82,12 @@ public boolean isFinished() { return false; } + if(step2Model.isSampleBased() && + (step2Model.getSampleBasedStartRegEx() == null || + step2Model.getSampleBasedStartRegEx().isEmpty())) { + return false; + } + return true; } @@ -93,7 +99,7 @@ public StepController getNextStepController() { step2Model.getFirstLineWithData()); return new Step3Controller(0, step2Model.getFirstLineWithData(), - step2Model.getUseHeader()); + step2Model.isUseHeader()); } @Override @@ -118,7 +124,7 @@ public void loadSettings() { final String csvFileContent = step2Model.getCSVFileContent(); step2Panel.setCSVFileContent(csvFileContent); - final boolean useHeader = step2Model.getUseHeader(); + final boolean useHeader = step2Model.isUseHeader(); step2Panel.setUseHeader(useHeader); step2Panel.setCSVFileHighlight(firstLineWithData); @@ -127,6 +133,7 @@ public void loadSettings() { if (step2Model.isSampleBased()) { step2Panel.setSampleBased(true); + step2Panel.setSampleBasedStartRegEx(step2Model.getSampleBasedStartRegEx()); } } @@ -170,6 +177,7 @@ public void saveSettings() { if (step2Panel.isSampleBased()) { step2Model.setSampleBased(true); + step2Model.setSampleBasedStartRegEx(step2Panel.getSampleBasedStartRegEx()); } step2Panel = null; @@ -249,7 +257,7 @@ private CsvData parseCSVFile() { final String quoteChar = step2Model.getCommentIndicator(); final String escape = step2Model.getTextQualifier(); final int firstLineWithData = step2Model.getFirstLineWithData(); - final boolean useHeader = step2Model.getUseHeader(); + final boolean useHeader = step2Model.isUseHeader(); logger.info("Parse CSV file: " + "column separator: '" + separator + "', " + diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/Step2Model.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/Step2Model.java index 9780ee7b..32af2685 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/Step2Model.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/Step2Model.java @@ -45,6 +45,8 @@ public class Step2Model implements StepModel { private boolean isSampleBased; + private String sampleBasedStartRegEx = ""; + public Step2Model(final String csvFileContent, final int csvFileRowCount) { this.csvFileContent = csvFileContent; @@ -60,64 +62,72 @@ public int getCsvFileRowRount() { return csvFileRowRount; } - public void setCsvFileRowRount(final int csvFileRowRount) { + public Step2Model setCsvFileRowRount(final int csvFileRowRount) { this.csvFileRowRount = csvFileRowRount; + return this; } public String getColumnSeparator() { return columnSeparator; } - public void setColumnSeparator(final String selectedColumnSeparator) { + public Step2Model setColumnSeparator(final String selectedColumnSeparator) { columnSeparator = selectedColumnSeparator; + return this; } public String getCommentIndicator() { return commentIndicator; } - public void setCommentIndicator(final String selectedCommentIndicator) { + public Step2Model setCommentIndicator(final String selectedCommentIndicator) { commentIndicator = selectedCommentIndicator; + return this; } public int getFirstLineWithData() { return firstLineWithData; } - public void setFirstLineWithData(final int firstLineWithData) { + public Step2Model setFirstLineWithData(final int firstLineWithData) { this.firstLineWithData = firstLineWithData; + return this; } public String getTextQualifier() { return textQualifier; } - public void setTextQualifier(final String selectedTextQualifier) { + public Step2Model setTextQualifier(final String selectedTextQualifier) { textQualifier = selectedTextQualifier; + return this; } public String getCSVFileContent() { return csvFileContent; } - public void setCSVFileContent(final String cSVFileContent) { + public Step2Model setCSVFileContent(final String cSVFileContent) { csvFileContent = cSVFileContent; + return this; } - public boolean getUseHeader() { + public boolean isUseHeader() { return useHeader; } - public void setUseHeader(final boolean useHeader) { + public Step2Model setUseHeader(final boolean useHeader) { this.useHeader = useHeader; + return this; } public char getDecimalSeparator() { return decimalSeparator; } - public void setDecimalSeparator(final char decimalSeparator) { + public Step2Model setDecimalSeparator(final char decimalSeparator) { this.decimalSeparator = decimalSeparator; + return this; } public boolean isSampleBased() { @@ -128,4 +138,13 @@ public Step2Model setSampleBased(final boolean isSampleBased) { this.isSampleBased = isSampleBased; return this; } + + public Step2Model setSampleBasedStartRegEx(final String sampleBasedStartRegEx) { + this.sampleBasedStartRegEx = sampleBasedStartRegEx; + return this; + } + + public String getSampleBasedStartRegEx() { + return sampleBasedStartRegEx; + } } \ No newline at end of file diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/xml/Step2ModelHandler.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/xml/Step2ModelHandler.java index 86efb2d9..db772b20 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/xml/Step2ModelHandler.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/xml/Step2ModelHandler.java @@ -27,6 +27,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.x52North.sensorweb.sos.importer.x02.CsvMetadataDocument.CsvMetadata; +import org.x52North.sensorweb.sos.importer.x02.DataFileDocument.DataFile; import org.x52North.sensorweb.sos.importer.x02.ParameterDocument.Parameter; import org.x52North.sensorweb.sos.importer.x02.SosImportConfigurationDocument.SosImportConfiguration; @@ -49,26 +50,31 @@ public void handleModel(final Step2Model stepModel, if (logger.isTraceEnabled()) { logger.trace("handleModel()"); } - CsvMetadata cM = sosImportConf.getCsvMetadata(); - Parameter p = null; + CsvMetadata csvMetadata = sosImportConf.getCsvMetadata(); + Parameter parameter = null; // - if (cM == null) { - cM = sosImportConf.addNewCsvMetadata(); - p = cM.addNewParameter(); + if (csvMetadata == null) { + csvMetadata = sosImportConf.addNewCsvMetadata(); + parameter = csvMetadata.addNewParameter(); } else { - p = cM.getParameter(); + parameter = csvMetadata.getParameter(); } - if (p == null) { - p = cM.addNewParameter(); + if (parameter == null) { + parameter = csvMetadata.addNewParameter(); } - cM.setFirstLineWithData(stepModel.getFirstLineWithData()); - cM.setUseHeader(stepModel.getUseHeader()); - cM.setDecimalSeparator(stepModel.getDecimalSeparator()+""); - p.setCommentIndicator(stepModel.getCommentIndicator()); - p.setColumnSeparator(stepModel.getColumnSeparator()); - p.setTextIndicator(stepModel.getTextQualifier()); + csvMetadata.setFirstLineWithData(stepModel.getFirstLineWithData()); + csvMetadata.setUseHeader(stepModel.isUseHeader()); + csvMetadata.setDecimalSeparator(stepModel.getDecimalSeparator()+""); + parameter.setCommentIndicator(stepModel.getCommentIndicator()); + parameter.setColumnSeparator(stepModel.getColumnSeparator()); + parameter.setTextIndicator(stepModel.getTextQualifier()); if (stepModel.isSampleBased()) { // add other sampling parameters + if (sosImportConf.getDataFile() == null) { + sosImportConf.addNewDataFile(); + } + final DataFile dataFile = sosImportConf.getDataFile(); + dataFile.setSampleStartRegEx(stepModel.getSampleBasedStartRegEx()); } } diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java index 9b84d6e3..5c426bc2 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java @@ -27,6 +27,7 @@ import java.awt.FlowLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; +import java.awt.GridLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -40,6 +41,7 @@ import javax.swing.JScrollPane; import javax.swing.JSpinner; import javax.swing.JTextArea; +import javax.swing.JTextField; import javax.swing.SpinnerNumberModel; import javax.swing.border.TitledBorder; import javax.swing.event.ChangeEvent; @@ -89,6 +91,8 @@ public class Step2Panel extends JPanel { private int firstLineWithDataTmp = -1; private JCheckBox isSampleBasedCheckBox; + private JPanel startRegExPanel; + private JTextField startRegExTF; public Step2Panel(final int csvFileRowCount) { super(); @@ -103,8 +107,7 @@ public Step2Panel(final int csvFileRowCount) { addTextQualifier(csvSettingsPanel, items, gridY++); addFirstLineWithData(csvFileRowCount, csvSettingsPanel, gridY++); addDecimalSeparator(csvSettingsPanel, gridY++); - // USE_HEADER uncomment next line to enable again - addUseHeaderCheckbox(csvSettingsPanel, gridY++); + addUseHeaderCheckbox(csvSettingsPanel, gridY/*++*/); addElementsForSampleBasedFiles(csvSettingsPanel, gridY++); final JPanel csvDataPanel = new JPanel(); addCsvDataPanel(csvDataPanel); @@ -124,7 +127,20 @@ private void addCsvDataPanel(final JPanel csvDataPanel) { } private void addElementsForSampleBasedFiles(final JPanel csvSettingsPanel, int gridY) { - addIsSampleBased(csvSettingsPanel, gridY); + addIsSampleBased(csvSettingsPanel, gridY++); + addSampleStartRegEx(csvSettingsPanel, gridY++); + } + + private void addSampleStartRegEx(final JPanel csvSettingsPanel, + final int gridY) { + startRegExTF = new JTextField(28); + startRegExPanel = new JPanel(); + startRegExPanel.setToolTipText(Lang.l().step2SampleBasedStartRegExTooltip()); + startRegExPanel.setLayout(new GridLayout(2, 1)); + startRegExPanel.add(new JLabel(Lang.l().step2SampleBasedStartRegExLabel() + ":")); + startRegExPanel.add(startRegExTF); + startRegExPanel.setVisible(false); + csvSettingsPanel.add(startRegExPanel, simpleConstraints(gridY)); } private void addIsSampleBased(final JPanel csvSettingsPanel, final int gridY) { @@ -138,23 +154,33 @@ private void addIsSampleBased(final JPanel csvSettingsPanel, final int gridY) { @Override public void actionPerformed(final ActionEvent e) { - if (isSampleBasedCheckBox.isSelected()) { + if (isSampleBasedCheckBox.isSelected()) { // TODO activateSampleBasedGuiElements - firstDataJS.setEnabled(false); + setEnabled(true); firstLineWithDataTmp = Integer.parseInt(firstDataJS.getValue().toString()); firstDataJS.setValue(0); } else { // TODO disable all sample based elements + setEnabled(false); firstDataJS.setValue(firstLineWithDataTmp); - firstDataJS.setEnabled(true); } } + + private void setEnabled(final boolean state) { + startRegExPanel.setVisible(state); + firstDataJS.setEnabled(!state); + } }); - final GridBagConstraints gbc_isSampleBasedFilePanel = new GridBagConstraints(); - gbc_isSampleBasedFilePanel.fill = GridBagConstraints.BOTH; - gbc_isSampleBasedFilePanel.gridx = 0; - gbc_isSampleBasedFilePanel.gridy = gridY; - csvSettingsPanel.add(isSampleBasedFilePanel, gbc_isSampleBasedFilePanel); + csvSettingsPanel.add(isSampleBasedFilePanel, simpleConstraints(gridY)); + } + + private GridBagConstraints simpleConstraints(final int gridY) { + final GridBagConstraints simpleConstraints = new GridBagConstraints(); + simpleConstraints.fill = GridBagConstraints.HORIZONTAL; + simpleConstraints.anchor = GridBagConstraints.NORTHWEST; + simpleConstraints.gridx = 0; + simpleConstraints.gridy = gridY; + return simpleConstraints; } private void addDecimalSeparator(final JPanel csvSettingsPanel, final int gridY) { @@ -165,11 +191,7 @@ private void addDecimalSeparator(final JPanel csvSettingsPanel, final int gridY) decimalSeparatorPanel.setLayout(new FlowLayout(FlowLayout.LEADING,0,0)); decimalSeparatorPanel.add(decimalSeparatorLabel); decimalSeparatorPanel.add(decimalSeparatorCombobox); - final GridBagConstraints gbc_decimalSeparatorPanel = new GridBagConstraints(); - gbc_decimalSeparatorPanel.fill = GridBagConstraints.BOTH; - gbc_decimalSeparatorPanel.gridx = 0; - gbc_decimalSeparatorPanel.gridy = gridY; - csvSettingsPanel.add(decimalSeparatorPanel, gbc_decimalSeparatorPanel); + csvSettingsPanel.add(decimalSeparatorPanel, simpleConstraints(gridY)); } private void addFirstLineWithData(final int csvFileRowCount, @@ -290,7 +312,8 @@ public void actionPerformed(final ActionEvent e) { gbc_useHeaderPanel.insets = new Insets(0, 0, 5, 0); gbc_useHeaderPanel.gridx = 0; gbc_useHeaderPanel.gridy = gridY; - csvSettingsPanel.add(useHeaderPanel, gbc_useHeaderPanel); + // TODO uncomment to enable useHeader + // csvSettingsPanel.add(useHeaderPanel, gbc_useHeaderPanel); } public String getCommentIndicator() { @@ -415,4 +438,13 @@ public Step2Panel setSampleBased(final boolean isSampleBased) { public boolean isSampleBased() { return isSampleBasedCheckBox.isSelected(); } + + public String getSampleBasedStartRegEx() { + return startRegExTF.getText(); + } + + public Step2Panel setSampleBasedStartRegEx(final String sampleBasedStartRegEx) { + startRegExTF.setText(sampleBasedStartRegEx); + return this; + } } diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java index f4c3b1e2..635fb7ac 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java @@ -29,8 +29,9 @@ import org.n52.sos.importer.Constants; /** - * @author e.h.juerrens@52north.org * This class contains all String used by the GUI in German + * + * @author e.h.juerrens@52north.org */ public class De extends Lang{ @@ -419,6 +420,16 @@ public String step2ParseHeader() { return "Kopfzeile auswerten"; } + @Override + public String step2SampleBasedStartRegExLabel() { + return "Regulärer Ausdruck \"Beginn der Messreihe\""; + } + + @Override + public String step2SampleBasedStartRegExTooltip() { + return "Wird benutzt um den Start einer Messreihe zu finden.\nMuss für die gesamte Zeile passen"; + } + @Override public String step2TextQualifier() { return "Text-Qualifier"; diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java index 890cd858..33136e6f 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java @@ -30,10 +30,11 @@ import org.n52.sos.importer.Constants; /** - * @author e.h.juerrens@52north.org * This class contains all String used by the GUI in English + * + * @author e.h.juerrens@52north.org */ -public class En extends Lang{ +public class En extends Lang { private final static Locale locale = Locale.ENGLISH; @@ -422,6 +423,16 @@ public String step2ParseHeader() { return "Interpret Header"; } + @Override + public String step2SampleBasedStartRegExLabel() { + return "Regular Expression \"Sample Start\""; + } + + @Override + public String step2SampleBasedStartRegExTooltip() { + return "Used to identify the start of a new sample.\nMUST match the whole line."; + } + @Override public String step2TextQualifier() { return "Text qualifier"; diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/Lang.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/Lang.java index 620de15b..2e19b624 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/Lang.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/Lang.java @@ -934,4 +934,17 @@ public abstract String step7SOSConnectionFailedException(String strURL, * @return Year */ public abstract String year(); + + /** + * + * @return Regular Expression "Sample Start" + */ + public abstract String step2SampleBasedStartRegExLabel(); + + /** + * + * @return Used to identify the start of a new sample.\n + * MUST match the whole line. + */ + public abstract String step2SampleBasedStartRegExTooltip(); } diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/controller/Step2ControllerTest.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/controller/Step2ControllerTest.java new file mode 100644 index 00000000..3b4d0976 --- /dev/null +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/controller/Step2ControllerTest.java @@ -0,0 +1,71 @@ +/** + * Copyright (C) 2014 + * by 52 North Initiative for Geospatial Open Source Software GmbH + * + * Contact: Andreas Wytzisk + * 52 North Initiative for Geospatial Open Source Software GmbH + * Martin-Luther-King-Weg 24 + * 48155 Muenster, Germany + * info@52north.org + * + * This program is free software; you can redistribute and/or modify it under + * the terms of the GNU General Public License version 2 as published by the + * Free Software Foundation. + * + * This program is distributed WITHOUT ANY WARRANTY; even without the implied + * WARRANTY OF MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * this program (see gnu-gpl v2.txt). If not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA or + * visit the Free Software Foundation web page, http://www.fsf.org. + */ +package org.n52.sos.importer.controller; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; + +import org.junit.Before; +import org.junit.Test; +import org.n52.sos.importer.model.Step2Model; + +/** + * @author Eike Hinderk Jürrens + */ +public class Step2ControllerTest { + + private Step2Controller controller; + + @Before + public void init() { + controller = new Step2Controller(new Step2Model("", 1)); + } + + @Test + public void shouldReturnFalseIfStartRegExIsMissingAndSampleBasedIsTrue() { + ((Step2Model)controller.getModel()) + .setColumnSeparator(",") + .setCommentIndicator("#") + .setDecimalSeparator('.') + .setTextQualifier("\"") + .setSampleBased(true); + controller.loadSettings(); + assertThat(controller.isFinished(), is(false)); + } + + @Test + public void shouldReturnTrueIfSampleBasedValuesAreSet() { + ((Step2Model)controller.getModel()) + .setColumnSeparator(",") + .setCommentIndicator("#") + .setDecimalSeparator('.') + .setTextQualifier("\"") + .setSampleBased(true) + .setSampleBasedStartRegEx("test-regex"); + // TODO extend with other sample based parameters + controller.loadSettings(); + assertThat(controller.isFinished(), is(true)); + } + +} diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/Step2ModelTest.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/Step2ModelTest.java index 9f7adf34..454bdbc4 100644 --- a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/Step2ModelTest.java +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/Step2ModelTest.java @@ -26,6 +26,7 @@ import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; +import org.junit.Before; import org.junit.Test; /** @@ -33,13 +34,31 @@ */ public class Step2ModelTest { + private Step2Model model; + + @Before + public void init() { + model = new Step2Model("", 0); + } + @Test public void shouldReturnTrueIfIsSampleBasedIsSet() { - assertThat(new Step2Model("", 0).setSampleBased(true).isSampleBased(), is(true)); + assertThat(model.setSampleBased(true).isSampleBased(), is(true)); } @Test public void shouldReturnFalseAsDefaultValueForSampleBased() { - assertThat(new Step2Model("", 0).isSampleBased(), is(false)); + assertThat(model.isSampleBased(), is(false)); + } + + @Test + public void shouldReturnStringIfIsSampleBasedStartRegExIsSet() { + final String sampleBasedStartRegEx = "test-regex"; + assertThat(model.setSampleBasedStartRegEx(sampleBasedStartRegEx).getSampleBasedStartRegEx(), is(sampleBasedStartRegEx)); + } + + @Test + public void shouldReturnEmptyStringAsDefaultValueForSampleBasedStartRegEx() { + assertThat(model.getSampleBasedStartRegEx(), is("")); } } diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step2ModelHandlerTest.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step2ModelHandlerTest.java new file mode 100644 index 00000000..1880bdad --- /dev/null +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step2ModelHandlerTest.java @@ -0,0 +1,51 @@ +/** + * Copyright (C) 2014 + * by 52 North Initiative for Geospatial Open Source Software GmbH + * + * Contact: Andreas Wytzisk + * 52 North Initiative for Geospatial Open Source Software GmbH + * Martin-Luther-King-Weg 24 + * 48155 Muenster, Germany + * info@52north.org + * + * This program is free software; you can redistribute and/or modify it under + * the terms of the GNU General Public License version 2 as published by the + * Free Software Foundation. + * + * This program is distributed WITHOUT ANY WARRANTY; even without the implied + * WARRANTY OF MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * this program (see gnu-gpl v2.txt). If not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA or + * visit the Free Software Foundation web page, http://www.fsf.org. + */ +package org.n52.sos.importer.model.xml; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; + +import org.junit.Test; +import org.n52.sos.importer.model.Step2Model; +import org.x52North.sensorweb.sos.importer.x02.SosImportConfigurationDocument.SosImportConfiguration; + +/** + * @author Eike Hinderk Jürrens + */ +public class Step2ModelHandlerTest { + + @Test + public void shouldAddVersionIfSetInModel() { + final String sampleBasedStartRegEx = "test-regex"; + final Step2Model stepModel = new Step2Model("",2) + .setSampleBased(true) + .setSampleBasedStartRegEx(sampleBasedStartRegEx); + final SosImportConfiguration importConf = SosImportConfiguration.Factory.newInstance(); + new Step2ModelHandler().handleModel(stepModel, importConf); + + assertThat(importConf.getDataFile().isSetSampleStartRegEx(), is(true)); + assertThat(importConf.getDataFile().getSampleStartRegEx(), is(sampleBasedStartRegEx)); + } + +} diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/test/Step2Test.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/test/Step2Test.java new file mode 100644 index 00000000..58bc2b3f --- /dev/null +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/test/Step2Test.java @@ -0,0 +1,43 @@ +/** + * Copyright (C) 2012 + * by 52North Initiative for Geospatial Open Source Software GmbH + * + * Contact: Andreas Wytzisk + * 52 North Initiative for Geospatial Open Source Software GmbH + * Martin-Luther-King-Weg 24 + * 48155 Muenster, Germany + * info@52north.org + * + * This program is free software; you can redistribute and/or modify it under + * the terms of the GNU General Public License version 2 as published by the + * Free Software Foundation. + * + * This program is distributed WITHOUT ANY WARRANTY; even without the implied + * WARRANTY OF MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * this program (see gnu-gpl v2.txt). If not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA or + * visit the Free Software Foundation web page, http://www.fsf.org. + */ +package org.n52.sos.importer.test; + +import org.n52.sos.importer.controller.MainController; +import org.n52.sos.importer.controller.Step2Controller; +import org.n52.sos.importer.controller.TableController; +import org.n52.sos.importer.model.Step2Model; + +public class Step2Test { + + public static void main(final String[] args) { + final MainController f = MainController.getInstance(); + final TableController tc = TableController.getInstance(); + tc.setContent(TestData.EXAMPLE_TABLE); + final Step2Model s2M = new Step2Model("line 1\nline2", 2); + final Step2Controller s2C = new Step2Controller( + s2M); + // + f.setStepController(s2C); + } +} diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/view/Step2PanelTest.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/view/Step2PanelTest.java index 1d2e49d9..644f6fa9 100644 --- a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/view/Step2PanelTest.java +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/view/Step2PanelTest.java @@ -26,6 +26,7 @@ import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; +import org.junit.Before; import org.junit.Test; /** @@ -33,13 +34,31 @@ */ public class Step2PanelTest { + private Step2Panel panel; + + @Before + public void init() { + panel = new Step2Panel(1); + } + @Test public void shouldReturnTrueIfIsSampleBasedIsSet() { - assertThat(new Step2Panel(1).setSampleBased(true).isSampleBased(), is(true)); + assertThat(panel.setSampleBased(true).isSampleBased(), is(true)); } @Test public void shouldReturnFalseAsDefaultValueForSampleBased() { - assertThat(new Step2Panel(1).isSampleBased(), is(false)); + assertThat(panel.isSampleBased(), is(false)); + } + + @Test + public void shouldReturnStringIfIsSampleBasedStartRegExIsSet() { + final String sampleBasedStartRegEx = "test-regex"; + assertThat(panel.setSampleBasedStartRegEx(sampleBasedStartRegEx).getSampleBasedStartRegEx(), is(sampleBasedStartRegEx)); + } + + @Test + public void shouldReturnEmptyStringAsDefaultValueForSampleBasedStartRegEx() { + assertThat(panel.getSampleBasedStartRegEx(), is("")); } } From d96b5dc5d8988de3bd7e06fe18ea6f05eec442c8 Mon Sep 17 00:00:00 2001 From: EHJ-52n Date: Fri, 25 Apr 2014 15:59:26 +0200 Subject: [PATCH 06/15] add mvc for dateOffset --- .../importer/controller/Step2Controller.java | 5 +- .../n52/sos/importer/model/Step2Model.java | 11 +++ .../importer/model/xml/Step2ModelHandler.java | 1 + .../org/n52/sos/importer/view/Step2Panel.java | 71 +++++++++++++++---- .../org/n52/sos/importer/view/i18n/De.java | 12 +++- .../org/n52/sos/importer/view/i18n/En.java | 10 +++ .../org/n52/sos/importer/view/i18n/Lang.java | 50 ++++++++----- .../controller/Step2ControllerTest.java | 16 ++++- .../sos/importer/model/Step2ModelTest.java | 11 +++ .../model/xml/Step2ModelHandlerTest.java | 16 ++++- .../org/n52/sos/importer/test/Step2Test.java | 2 +- .../n52/sos/importer/view/Step2PanelTest.java | 15 +++- 12 files changed, 180 insertions(+), 40 deletions(-) diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java index f533e56c..51f05a2e 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java @@ -84,7 +84,8 @@ public boolean isFinished() { if(step2Model.isSampleBased() && (step2Model.getSampleBasedStartRegEx() == null || - step2Model.getSampleBasedStartRegEx().isEmpty())) { + step2Model.getSampleBasedStartRegEx().isEmpty() || + step2Model.getSampleBasedDateOffset() < 1)) { return false; } @@ -134,6 +135,7 @@ public void loadSettings() { if (step2Model.isSampleBased()) { step2Panel.setSampleBased(true); step2Panel.setSampleBasedStartRegEx(step2Model.getSampleBasedStartRegEx()); + step2Panel.setSampleBasedDateOffset(step2Model.getSampleBasedDateOffset()); } } @@ -178,6 +180,7 @@ public void saveSettings() { if (step2Panel.isSampleBased()) { step2Model.setSampleBased(true); step2Model.setSampleBasedStartRegEx(step2Panel.getSampleBasedStartRegEx()); + step2Model.setSampleBasedDateOffset(step2Panel.getSampleBasedDateOffset()); } step2Panel = null; diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/Step2Model.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/Step2Model.java index 32af2685..0107955c 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/Step2Model.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/Step2Model.java @@ -47,6 +47,8 @@ public class Step2Model implements StepModel { private String sampleBasedStartRegEx = ""; + private int dateOffset = 0; + public Step2Model(final String csvFileContent, final int csvFileRowCount) { this.csvFileContent = csvFileContent; @@ -147,4 +149,13 @@ public Step2Model setSampleBasedStartRegEx(final String sampleBasedStartRegEx) { public String getSampleBasedStartRegEx() { return sampleBasedStartRegEx; } + + public Step2Model setSampleBasedDateOffset(final int dateOffset) { + this.dateOffset = dateOffset; + return this; + } + + public int getSampleBasedDateOffset() { + return dateOffset; + } } \ No newline at end of file diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/xml/Step2ModelHandler.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/xml/Step2ModelHandler.java index db772b20..6824f050 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/xml/Step2ModelHandler.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/xml/Step2ModelHandler.java @@ -75,6 +75,7 @@ public void handleModel(final Step2Model stepModel, } final DataFile dataFile = sosImportConf.getDataFile(); dataFile.setSampleStartRegEx(stepModel.getSampleBasedStartRegEx()); + dataFile.setSampleDateOffset(stepModel.getSampleBasedDateOffset()); } } diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java index 5c426bc2..f65b7cdc 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java @@ -93,6 +93,9 @@ public class Step2Panel extends JPanel { private JCheckBox isSampleBasedCheckBox; private JPanel startRegExPanel; private JTextField startRegExTF; + private JPanel dateOffsetPanel; + private JSpinner dateOffset; + private SpinnerNumberModel dateOffsetModel; public Step2Panel(final int csvFileRowCount) { super(); @@ -108,7 +111,7 @@ public Step2Panel(final int csvFileRowCount) { addFirstLineWithData(csvFileRowCount, csvSettingsPanel, gridY++); addDecimalSeparator(csvSettingsPanel, gridY++); addUseHeaderCheckbox(csvSettingsPanel, gridY/*++*/); - addElementsForSampleBasedFiles(csvSettingsPanel, gridY++); + addElementsForSampleBasedFiles(csvSettingsPanel, gridY++, csvFileRowCount); final JPanel csvDataPanel = new JPanel(); addCsvDataPanel(csvDataPanel); @@ -126,21 +129,12 @@ private void addCsvDataPanel(final JPanel csvDataPanel) { setLayout(new BoxLayout(this, BoxLayout.LINE_AXIS)); } - private void addElementsForSampleBasedFiles(final JPanel csvSettingsPanel, int gridY) { + private void addElementsForSampleBasedFiles(final JPanel csvSettingsPanel, + int gridY, + final int max) { addIsSampleBased(csvSettingsPanel, gridY++); addSampleStartRegEx(csvSettingsPanel, gridY++); - } - - private void addSampleStartRegEx(final JPanel csvSettingsPanel, - final int gridY) { - startRegExTF = new JTextField(28); - startRegExPanel = new JPanel(); - startRegExPanel.setToolTipText(Lang.l().step2SampleBasedStartRegExTooltip()); - startRegExPanel.setLayout(new GridLayout(2, 1)); - startRegExPanel.add(new JLabel(Lang.l().step2SampleBasedStartRegExLabel() + ":")); - startRegExPanel.add(startRegExTF); - startRegExPanel.setVisible(false); - csvSettingsPanel.add(startRegExPanel, simpleConstraints(gridY)); + addSampleDateOffset(csvSettingsPanel, gridY++, max); } private void addIsSampleBased(final JPanel csvSettingsPanel, final int gridY) { @@ -154,7 +148,7 @@ private void addIsSampleBased(final JPanel csvSettingsPanel, final int gridY) { @Override public void actionPerformed(final ActionEvent e) { - if (isSampleBasedCheckBox.isSelected()) { + if (isSampleBasedCheckBox.isSelected()) { // TODO activateSampleBasedGuiElements setEnabled(true); firstLineWithDataTmp = Integer.parseInt(firstDataJS.getValue().toString()); @@ -168,12 +162,50 @@ public void actionPerformed(final ActionEvent e) { private void setEnabled(final boolean state) { startRegExPanel.setVisible(state); + dateOffsetPanel.setVisible(state); firstDataJS.setEnabled(!state); } }); csvSettingsPanel.add(isSampleBasedFilePanel, simpleConstraints(gridY)); } + private void addSampleStartRegEx(final JPanel csvSettingsPanel, + final int gridY) { + startRegExTF = new JTextField(28); + startRegExPanel = new JPanel(); + startRegExPanel.setToolTipText(Lang.l().step2SampleBasedStartRegExTooltip()); + startRegExPanel.setLayout(new GridLayout(2, 1)); + startRegExPanel.add(new JLabel(Lang.l().step2SampleBasedStartRegExLabel() + ":")); + startRegExPanel.add(startRegExTF); + startRegExPanel.setVisible(false); + csvSettingsPanel.add(startRegExPanel, simpleConstraints(gridY)); + } + + private void addSampleDateOffset(final JPanel csvSettingsPanel, + final int gridY, + final int max) { + dateOffsetModel = new SpinnerNumberModel(1, 1, max, 1); + dateOffsetModel.addChangeListener(new ChangeListener() { + @Override + public void stateChanged(final ChangeEvent e) { + final int number = dateOffsetModel.getNumber().intValue(); + if(number < 0) { + dateOffsetModel.setValue(0); + } else if (number > (csvFileRowCount-1)){ + dateOffsetModel.setValue((csvFileRowCount-1)); + } + } + }); + dateOffset = new JSpinner(dateOffsetModel); + dateOffsetPanel = new JPanel(); + dateOffsetPanel.setToolTipText(Lang.l().step2SampleBasedDateOffsetToolTip()); + dateOffsetPanel.setLayout(new FlowLayout(FlowLayout.LEADING, 0, 0)); + dateOffsetPanel.add(new JLabel(Lang.l().step2SampleBasedDateOffsetLabel() + ":")); + dateOffsetPanel.add(dateOffset); + dateOffsetPanel.setVisible(false); + csvSettingsPanel.add(dateOffsetPanel, simpleConstraints(gridY)); + } + private GridBagConstraints simpleConstraints(final int gridY) { final GridBagConstraints simpleConstraints = new GridBagConstraints(); simpleConstraints.fill = GridBagConstraints.HORIZONTAL; @@ -447,4 +479,13 @@ public Step2Panel setSampleBasedStartRegEx(final String sampleBasedStartRegEx) { startRegExTF.setText(sampleBasedStartRegEx); return this; } + + public int getSampleBasedDateOffset() { + return dateOffsetModel.getNumber().intValue(); + } + + public Step2Panel setSampleBasedDateOffset(final int dateOffset) { + dateOffsetModel.setValue(dateOffset); + return this; + } } diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java index 635fb7ac..06a0da45 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java @@ -33,7 +33,7 @@ * * @author e.h.juerrens@52north.org */ -public class De extends Lang{ +public class De extends Lang { private final static Locale locale = Locale.GERMAN; @@ -420,6 +420,16 @@ public String step2ParseHeader() { return "Kopfzeile auswerten"; } + @Override + public String step2SampleBasedDateOffsetLabel() { + return "Zeilenabstand 'Datumsinformation'"; + } + + @Override + public String step2SampleBasedDateOffsetToolTip() { + return "Der Abstand zwischen dem Start einer Messreihe und der Zeile mit den Datumsinformationen"; + } + @Override public String step2SampleBasedStartRegExLabel() { return "Regulärer Ausdruck \"Beginn der Messreihe\""; diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java index 33136e6f..ba734b3b 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java @@ -423,6 +423,16 @@ public String step2ParseHeader() { return "Interpret Header"; } + @Override + public String step2SampleBasedDateOffsetLabel() { + return "Offset date information"; + } + + @Override + public String step2SampleBasedDateOffsetToolTip() { + return "The offset of the line containing the date of the sample from the start line."; + } + @Override public String step2SampleBasedStartRegExLabel() { return "Regular Expression \"Sample Start\""; diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/Lang.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/Lang.java index 2e19b624..78a2f357 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/Lang.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/Lang.java @@ -390,21 +390,42 @@ public String sos() { * @return Ignore data until line */ public abstract String step2FirstLineWithData(); + /** + * + * @return Is data file sample based + */ + public abstract String step2IsSampleBased(); /** * @return Interpret Header */ public abstract String step2ParseHeader(); + /** - * @return Text qualifier + * @return Offset date information */ - public abstract String step2TextQualifier(); + public abstract String step2SampleBasedDateOffsetLabel(); /** * - * @return Is data file sample based + * @return The offset of the line containing the date of the + * sample from the start line. */ - public abstract String step2IsSampleBased(); - + public abstract String step2SampleBasedDateOffsetToolTip(); + /** + * + * @return Regular Expression "Sample Start" + */ + public abstract String step2SampleBasedStartRegExLabel(); + /** + * + * @return Used to identify the start of a new sample.\n + * MUST match the whole line. + */ + public abstract String step2SampleBasedStartRegExTooltip(); + /** + * @return Text qualifier + */ + public abstract String step2TextQualifier(); /** * @return Step 3a: Choose Metadata for the selected column */ @@ -583,6 +604,7 @@ public String step4bInfoResoureAlreadySet(final Resource resource) { * @return Step 6a: Add missing dates and times */ public abstract String step6aDescription(); + /** * @return What is the Date & Time for all measured values? */ @@ -600,7 +622,6 @@ public String step4bInfoResoureAlreadySet(final Resource resource) { * @return <html>What is the <u>Constants.STRING_REPLACER</u> for the marked measured value Constants.STRING_REPLACER?</html> */ public abstract String step6bModelDescription(); - /** * @return Please select the columns to generate the name.
* \nMultiple columns could be selected. @@ -640,18 +661,22 @@ public String step4bInfoResoureAlreadySet(final Resource resource) { * @return What is the position of */ public abstract String step6cModelDescription(); + /** * @return Automatically Generate Identifier */ public abstract String step6Generation(); + /** * @return Set Identifier Manually */ public abstract String step6ManualInput(); + /** * @return Some User Input is missing. Please enter the required information. */ public abstract String step6MissingUserInput(); + /** * @return No user input at all. Please fill in the required information. */ @@ -934,17 +959,4 @@ public abstract String step7SOSConnectionFailedException(String strURL, * @return Year */ public abstract String year(); - - /** - * - * @return Regular Expression "Sample Start" - */ - public abstract String step2SampleBasedStartRegExLabel(); - - /** - * - * @return Used to identify the start of a new sample.\n - * MUST match the whole line. - */ - public abstract String step2SampleBasedStartRegExTooltip(); } diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/controller/Step2ControllerTest.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/controller/Step2ControllerTest.java index 3b4d0976..1c2e9709 100644 --- a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/controller/Step2ControllerTest.java +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/controller/Step2ControllerTest.java @@ -54,6 +54,19 @@ public void shouldReturnFalseIfStartRegExIsMissingAndSampleBasedIsTrue() { assertThat(controller.isFinished(), is(false)); } + @Test + public void shouldReturnFalseIfDateOffsetIsMissingAndSampleBasedIsTrue() { + ((Step2Model)controller.getModel()) + .setColumnSeparator(",") + .setCommentIndicator("#") + .setDecimalSeparator('.') + .setTextQualifier("\"") + .setSampleBased(true) + .setSampleBasedStartRegEx("test-regex"); + controller.loadSettings(); + assertThat(controller.isFinished(), is(false)); + } + @Test public void shouldReturnTrueIfSampleBasedValuesAreSet() { ((Step2Model)controller.getModel()) @@ -62,7 +75,8 @@ public void shouldReturnTrueIfSampleBasedValuesAreSet() { .setDecimalSeparator('.') .setTextQualifier("\"") .setSampleBased(true) - .setSampleBasedStartRegEx("test-regex"); + .setSampleBasedStartRegEx("test-regex") + .setSampleBasedDateOffset(5); // TODO extend with other sample based parameters controller.loadSettings(); assertThat(controller.isFinished(), is(true)); diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/Step2ModelTest.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/Step2ModelTest.java index 454bdbc4..f6460ca8 100644 --- a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/Step2ModelTest.java +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/Step2ModelTest.java @@ -61,4 +61,15 @@ public void shouldReturnStringIfIsSampleBasedStartRegExIsSet() { public void shouldReturnEmptyStringAsDefaultValueForSampleBasedStartRegEx() { assertThat(model.getSampleBasedStartRegEx(), is("")); } + + @Test + public void shouldReturnValueIfIsSampleBasedDateOffsetIsSet() { + final int dateOffset = 25; + assertThat(model.setSampleBasedDateOffset(dateOffset).getSampleBasedDateOffset(), is(dateOffset)); + } + + @Test + public void shouldReturnZeroAsDefaultValueForSampleBasedDateOffset() { + assertThat(model.getSampleBasedDateOffset(), is(0)); + } } diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step2ModelHandlerTest.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step2ModelHandlerTest.java index 1880bdad..0fddc18b 100644 --- a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step2ModelHandlerTest.java +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step2ModelHandlerTest.java @@ -36,7 +36,7 @@ public class Step2ModelHandlerTest { @Test - public void shouldAddVersionIfSetInModel() { + public void shouldSetSampleBasedStartRegEx() { final String sampleBasedStartRegEx = "test-regex"; final Step2Model stepModel = new Step2Model("",2) .setSampleBased(true) @@ -48,4 +48,18 @@ public void shouldAddVersionIfSetInModel() { assertThat(importConf.getDataFile().getSampleStartRegEx(), is(sampleBasedStartRegEx)); } + @Test + public void shouldSetSampleBasedDateOffset() { + final int dateOffset = 25; + final Step2Model stepModel = new Step2Model("",2) + .setSampleBased(true) + .setSampleBasedStartRegEx("test-regex") + .setSampleBasedDateOffset(dateOffset); + final SosImportConfiguration importConf = SosImportConfiguration.Factory.newInstance(); + new Step2ModelHandler().handleModel(stepModel, importConf); + + assertThat(importConf.getDataFile().isSetSampleDateOffset(), is(true)); + assertThat(importConf.getDataFile().getSampleDateOffset(), is(dateOffset)); + } + } diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/test/Step2Test.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/test/Step2Test.java index 58bc2b3f..5ca44bf9 100644 --- a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/test/Step2Test.java +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/test/Step2Test.java @@ -34,7 +34,7 @@ public static void main(final String[] args) { final MainController f = MainController.getInstance(); final TableController tc = TableController.getInstance(); tc.setContent(TestData.EXAMPLE_TABLE); - final Step2Model s2M = new Step2Model("line 1\nline2", 2); + final Step2Model s2M = new Step2Model("line 1\nline2\nline3\nlin4\nline5\nline6", 6); final Step2Controller s2C = new Step2Controller( s2M); // diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/view/Step2PanelTest.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/view/Step2PanelTest.java index 644f6fa9..1849f467 100644 --- a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/view/Step2PanelTest.java +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/view/Step2PanelTest.java @@ -34,11 +34,13 @@ */ public class Step2PanelTest { + private static final int MAX_ROWS = 30; + private Step2Panel panel; @Before public void init() { - panel = new Step2Panel(1); + panel = new Step2Panel(MAX_ROWS); } @Test @@ -61,4 +63,15 @@ public void shouldReturnStringIfIsSampleBasedStartRegExIsSet() { public void shouldReturnEmptyStringAsDefaultValueForSampleBasedStartRegEx() { assertThat(panel.getSampleBasedStartRegEx(), is("")); } + + @Test + public void shouldReturnValueIfIsSampleBasedStartRegExIsSet() { + final int dateOffset = MAX_ROWS-5; + assertThat(panel.setSampleBasedDateOffset(dateOffset).getSampleBasedDateOffset(), is(dateOffset)); + } + + @Test + public void shouldReturnOneAsDefaultValueForSampleBasedStartRegEx() { + assertThat(panel.getSampleBasedDateOffset(), is(1)); + } } From d61990f975703a3b9b636816101d5bed83b1c9c6 Mon Sep 17 00:00:00 2001 From: EHJ-52n Date: Fri, 25 Apr 2014 16:30:44 +0200 Subject: [PATCH 07/15] add mvc for sampleDateExtractionRegEx --- .../importer/controller/Step2Controller.java | 6 +++- .../n52/sos/importer/model/Step2Model.java | 12 +++++++ .../importer/model/xml/Step2ModelHandler.java | 1 + .../org/n52/sos/importer/view/Step2Panel.java | 36 ++++++++++++++++--- .../org/n52/sos/importer/view/i18n/De.java | 17 +++++++++ .../org/n52/sos/importer/view/i18n/En.java | 15 ++++++++ .../org/n52/sos/importer/view/i18n/Lang.java | 18 ++++++++-- .../controller/Step2ControllerTest.java | 17 ++++++++- .../sos/importer/model/Step2ModelTest.java | 11 ++++++ .../model/xml/Step2ModelHandlerTest.java | 15 ++++++++ .../n52/sos/importer/view/Step2PanelTest.java | 13 +++++++ 11 files changed, 153 insertions(+), 8 deletions(-) diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java index 51f05a2e..884e5094 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java @@ -85,7 +85,9 @@ public boolean isFinished() { if(step2Model.isSampleBased() && (step2Model.getSampleBasedStartRegEx() == null || step2Model.getSampleBasedStartRegEx().isEmpty() || - step2Model.getSampleBasedDateOffset() < 1)) { + step2Model.getSampleBasedDateOffset() < 1 || + step2Model.getSampleBasedDateExtractionRegEx() == null || + step2Model.getSampleBasedDateExtractionRegEx().isEmpty())) { return false; } @@ -136,6 +138,7 @@ public void loadSettings() { step2Panel.setSampleBased(true); step2Panel.setSampleBasedStartRegEx(step2Model.getSampleBasedStartRegEx()); step2Panel.setSampleBasedDateOffset(step2Model.getSampleBasedDateOffset()); + step2Panel.setSampleBasedDateExtractionRegEx(step2Model.getSampleBasedDateExtractionRegEx()); } } @@ -181,6 +184,7 @@ public void saveSettings() { step2Model.setSampleBased(true); step2Model.setSampleBasedStartRegEx(step2Panel.getSampleBasedStartRegEx()); step2Model.setSampleBasedDateOffset(step2Panel.getSampleBasedDateOffset()); + step2Model.setSampleBasedDateExtractionRegEx(step2Panel.getSampleBasedDateExtractionRegEx()); } step2Panel = null; diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/Step2Model.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/Step2Model.java index 0107955c..8b0b4621 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/Step2Model.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/Step2Model.java @@ -49,6 +49,8 @@ public class Step2Model implements StepModel { private int dateOffset = 0; + private String sampleBasedDateExtractionRegEx = ""; + public Step2Model(final String csvFileContent, final int csvFileRowCount) { this.csvFileContent = csvFileContent; @@ -158,4 +160,14 @@ public Step2Model setSampleBasedDateOffset(final int dateOffset) { public int getSampleBasedDateOffset() { return dateOffset; } + + public Step2Model setSampleBasedDateExtractionRegEx(final String sampleBasedDateExtractionRegEx) { + this.sampleBasedDateExtractionRegEx = sampleBasedDateExtractionRegEx; + return this; + } + + public String getSampleBasedDateExtractionRegEx() { + return sampleBasedDateExtractionRegEx; + } + } \ No newline at end of file diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/xml/Step2ModelHandler.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/xml/Step2ModelHandler.java index 6824f050..a615cd63 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/xml/Step2ModelHandler.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/xml/Step2ModelHandler.java @@ -76,6 +76,7 @@ public void handleModel(final Step2Model stepModel, final DataFile dataFile = sosImportConf.getDataFile(); dataFile.setSampleStartRegEx(stepModel.getSampleBasedStartRegEx()); dataFile.setSampleDateOffset(stepModel.getSampleBasedDateOffset()); + dataFile.setSampleDateExtractionRegEx(stepModel.getSampleBasedDateExtractionRegEx()); } } diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java index f65b7cdc..ad6ace92 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java @@ -97,6 +97,10 @@ public class Step2Panel extends JPanel { private JSpinner dateOffset; private SpinnerNumberModel dateOffsetModel; + private JTextField dateExtractionRegExTF; + + private JPanel dateExtractionRegExPanel; + public Step2Panel(final int csvFileRowCount) { super(); this.csvFileRowCount = csvFileRowCount; @@ -133,8 +137,21 @@ private void addElementsForSampleBasedFiles(final JPanel csvSettingsPanel, int gridY, final int max) { addIsSampleBased(csvSettingsPanel, gridY++); - addSampleStartRegEx(csvSettingsPanel, gridY++); - addSampleDateOffset(csvSettingsPanel, gridY++, max); + addStartRegEx(csvSettingsPanel, gridY++); + addDateOffset(csvSettingsPanel, gridY++, max); + addDateExtractionRegEx(csvSettingsPanel, gridY++); + } + + private void addDateExtractionRegEx(final JPanel csvSettingsPanel, + final int gridY) { + dateExtractionRegExTF = new JTextField(28); + dateExtractionRegExPanel = new JPanel(); + dateExtractionRegExPanel.setToolTipText(Lang.l().step2SampleBasedDateExtractionRegExTooltip()); + dateExtractionRegExPanel.setLayout(new GridLayout(2, 1)); + dateExtractionRegExPanel.add(new JLabel(Lang.l().step2SampleBasedDateExtractionRegExLabel() + ":")); + dateExtractionRegExPanel.add(dateExtractionRegExTF); + dateExtractionRegExPanel.setVisible(false); + csvSettingsPanel.add(dateExtractionRegExPanel, simpleConstraints(gridY)); } private void addIsSampleBased(final JPanel csvSettingsPanel, final int gridY) { @@ -163,13 +180,14 @@ public void actionPerformed(final ActionEvent e) { private void setEnabled(final boolean state) { startRegExPanel.setVisible(state); dateOffsetPanel.setVisible(state); + dateExtractionRegExPanel.setVisible(state); firstDataJS.setEnabled(!state); } }); csvSettingsPanel.add(isSampleBasedFilePanel, simpleConstraints(gridY)); } - private void addSampleStartRegEx(final JPanel csvSettingsPanel, + private void addStartRegEx(final JPanel csvSettingsPanel, final int gridY) { startRegExTF = new JTextField(28); startRegExPanel = new JPanel(); @@ -181,7 +199,7 @@ private void addSampleStartRegEx(final JPanel csvSettingsPanel, csvSettingsPanel.add(startRegExPanel, simpleConstraints(gridY)); } - private void addSampleDateOffset(final JPanel csvSettingsPanel, + private void addDateOffset(final JPanel csvSettingsPanel, final int gridY, final int max) { dateOffsetModel = new SpinnerNumberModel(1, 1, max, 1); @@ -488,4 +506,14 @@ public Step2Panel setSampleBasedDateOffset(final int dateOffset) { dateOffsetModel.setValue(dateOffset); return this; } + + public String getSampleBasedDateExtractionRegEx() { + return dateExtractionRegExTF.getText(); + } + + public Step2Panel setSampleBasedDateExtractionRegEx(final String sampleBasedDateExtractionRegEx) { + dateExtractionRegExTF.setText(sampleBasedDateExtractionRegEx); + return this; + } + } diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java index 06a0da45..5fd14530 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java @@ -420,6 +420,23 @@ public String step2ParseHeader() { return "Kopfzeile auswerten"; } + @Override + public String step2SampleBasedDateExtractionRegExLabel() { + return "Regulärer Ausdruck \"Datumsinformation\""; + } + + @Override + public String step2SampleBasedDateExtractionRegExTooltip() { + return new StringBuffer("Der Reguläre Ausdruck mit dessen Hilfe die\n") + .append("Datumsinformatione aus der Zeile extrahiert werden, die\n") + .append("die entspr. Informationen für die aktuelle Messreihe\n") + .append("enthält. Das Ergebnis des Asudrucks MUSS genau EINE\n") + .append("Gruppe enthalten. Diese Gruppe wird mit Hilfe des\n") + .append("Attributes \"sampleDatePattern\" in einen Zeitstempel\n") + .append("umgewandelt.") + .toString(); + } + @Override public String step2SampleBasedDateOffsetLabel() { return "Zeilenabstand 'Datumsinformation'"; diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java index ba734b3b..a18259e0 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java @@ -423,6 +423,21 @@ public String step2ParseHeader() { return "Interpret Header"; } + @Override + public String step2SampleBasedDateExtractionRegExLabel() { + return "Regular Expression \"Date Extraction\""; + } + + @Override + public String step2SampleBasedDateExtractionRegExTooltip() { + return new StringBuffer("The regular expression to extract the date\n") + .append("information from the line containing the date\n") + .append("information of the current sample. The expression MUST\n") + .append("result in ONE group. This group will be parsed to a\n") + .append("java.util.Date using \"sampleDatePattern\" attribute.") + .toString(); + } + @Override public String step2SampleBasedDateOffsetLabel() { return "Offset date information"; diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/Lang.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/Lang.java index 78a2f357..4f6e3417 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/Lang.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/Lang.java @@ -400,11 +400,23 @@ public String sos() { */ public abstract String step2ParseHeader(); + /** + * @return Regular Expression "Date Extraction" + */ + public abstract String step2SampleBasedDateExtractionRegExLabel(); + + /** + * @return The regular expression to extract the date information from the + * line containing the date information of the current sample. + * The expression MUST result in ONE group. This group will be + * parsed to a {@link java.util.Date} using + * "sampleDatePattern" attribute. + */ + public abstract String step2SampleBasedDateExtractionRegExTooltip(); /** * @return Offset date information */ public abstract String step2SampleBasedDateOffsetLabel(); - /** * * @return The offset of the line containing the date of the @@ -596,6 +608,7 @@ public String step4bInfoResoureAlreadySet(final Resource resource) { * @return Step 5c: Complete position data */ public abstract String step5cDescription(); + /** * @return Complete missing information for the marked position. */ @@ -604,7 +617,6 @@ public String step4bInfoResoureAlreadySet(final Resource resource) { * @return Step 6a: Add missing dates and times */ public abstract String step6aDescription(); - /** * @return What is the Date & Time for all measured values? */ @@ -652,11 +664,13 @@ public String step4bInfoResoureAlreadySet(final Resource resource) { * @return Set Position */ public abstract String step6cInfoToolName(); + /** * * @return Set the position by clicking on the map */ public abstract String step6cInfoToolTooltip(); + /** * @return What is the position of */ diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/controller/Step2ControllerTest.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/controller/Step2ControllerTest.java index 1c2e9709..fc0c25ef 100644 --- a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/controller/Step2ControllerTest.java +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/controller/Step2ControllerTest.java @@ -67,6 +67,20 @@ public void shouldReturnFalseIfDateOffsetIsMissingAndSampleBasedIsTrue() { assertThat(controller.isFinished(), is(false)); } + @Test + public void shouldReturnFalseIfDateExtractionRegExIsMissingAndSampleBasedIsTrue() { + ((Step2Model)controller.getModel()) + .setColumnSeparator(",") + .setCommentIndicator("#") + .setDecimalSeparator('.') + .setTextQualifier("\"") + .setSampleBased(true) + .setSampleBasedStartRegEx("test-regex") + .setSampleBasedDateOffset(5); + controller.loadSettings(); + assertThat(controller.isFinished(), is(false)); + } + @Test public void shouldReturnTrueIfSampleBasedValuesAreSet() { ((Step2Model)controller.getModel()) @@ -76,7 +90,8 @@ public void shouldReturnTrueIfSampleBasedValuesAreSet() { .setTextQualifier("\"") .setSampleBased(true) .setSampleBasedStartRegEx("test-regex") - .setSampleBasedDateOffset(5); + .setSampleBasedDateOffset(5) + .setSampleBasedDateExtractionRegEx("test-regex2"); // TODO extend with other sample based parameters controller.loadSettings(); assertThat(controller.isFinished(), is(true)); diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/Step2ModelTest.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/Step2ModelTest.java index f6460ca8..28e62c13 100644 --- a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/Step2ModelTest.java +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/Step2ModelTest.java @@ -72,4 +72,15 @@ public void shouldReturnValueIfIsSampleBasedDateOffsetIsSet() { public void shouldReturnZeroAsDefaultValueForSampleBasedDateOffset() { assertThat(model.getSampleBasedDateOffset(), is(0)); } + + @Test + public void shouldReturnStringIfIsSampleBasedDateExtractionRegExIsSet() { + final String sampleBasedDateExtractionRegEx = "test-regex"; + assertThat(model.setSampleBasedDateExtractionRegEx(sampleBasedDateExtractionRegEx).getSampleBasedDateExtractionRegEx(), is(sampleBasedDateExtractionRegEx)); + } + + @Test + public void shouldReturnEmptyStringAsDefaultValueForSampleBasedDateExtractionRegEx() { + assertThat(model.getSampleBasedDateExtractionRegEx(), is("")); + } } diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step2ModelHandlerTest.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step2ModelHandlerTest.java index 0fddc18b..52698650 100644 --- a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step2ModelHandlerTest.java +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step2ModelHandlerTest.java @@ -62,4 +62,19 @@ public void shouldSetSampleBasedDateOffset() { assertThat(importConf.getDataFile().getSampleDateOffset(), is(dateOffset)); } + @Test + public void shouldSetSampleBasedDateExtractionRegEx() { + final String dateExtractionRegEx = "test-regex-2"; + final Step2Model stepModel = new Step2Model("",2) + .setSampleBased(true) + .setSampleBasedStartRegEx("test-regex") + .setSampleBasedDateOffset(25) + .setSampleBasedDateExtractionRegEx(dateExtractionRegEx); + final SosImportConfiguration importConf = SosImportConfiguration.Factory.newInstance(); + new Step2ModelHandler().handleModel(stepModel, importConf); + + assertThat(importConf.getDataFile().isSetSampleDateExtractionRegEx(), is(true)); + assertThat(importConf.getDataFile().getSampleDateExtractionRegEx(), is(dateExtractionRegEx)); + } + } diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/view/Step2PanelTest.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/view/Step2PanelTest.java index 1849f467..4c057932 100644 --- a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/view/Step2PanelTest.java +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/view/Step2PanelTest.java @@ -74,4 +74,17 @@ public void shouldReturnValueIfIsSampleBasedStartRegExIsSet() { public void shouldReturnOneAsDefaultValueForSampleBasedStartRegEx() { assertThat(panel.getSampleBasedDateOffset(), is(1)); } + + @Test + public void shouldReturnStringIfIsSampleBasedDateExtractionRegExIsSet() { + final String dateExtractionRegEx = "test-regex"; + assertThat(panel.setSampleBasedDateExtractionRegEx(dateExtractionRegEx) + .getSampleBasedDateExtractionRegEx(), + is(dateExtractionRegEx)); + } + + @Test + public void shouldReturnEmptyStringAsDefaultValueForSampleBasedDateExtractionRegEx() { + assertThat(panel.getSampleBasedDateExtractionRegEx(), is("")); + } } From cc12c19590bc0de02529468b2588b8601f10160c Mon Sep 17 00:00:00 2001 From: EHJ-52n Date: Fri, 25 Apr 2014 16:54:05 +0200 Subject: [PATCH 08/15] Fix wrong term in release notes and configuration.xsd --- .../src/main/resources/import-configuration.xsd | 2 +- RELEASE_NOTES | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/52n-sos-importer-bindings/src/main/resources/import-configuration.xsd b/52n-sos-importer-bindings/src/main/resources/import-configuration.xsd index 59f43783..e614e3fc 100644 --- a/52n-sos-importer-bindings/src/main/resources/import-configuration.xsd +++ b/52n-sos-importer-bindings/src/main/resources/import-configuration.xsd @@ -655,7 +655,7 @@ Defines the pattern used to parse the date information - of the current pattern. + of the current sample. diff --git a/RELEASE_NOTES b/RELEASE_NOTES index 4bf0db40..ca17d30b 100644 --- a/RELEASE_NOTES +++ b/RELEASE_NOTES @@ -45,7 +45,7 @@ Features: group will be parsed to a java.util.Date using "sampleDatePattern" attribute. * "sampleDatePattern" - the pattern used to parse the date information of - the current pattern. + the current sample. * "sampleDataOffset" - the offset in lines from sample beginning till the first lines with data. * "sampleSizeOffset" - the offset in lines from sample beginning till the From f564a8305f5c27c77e8441835d09d21c15df980f Mon Sep 17 00:00:00 2001 From: EHJ-52n Date: Fri, 25 Apr 2014 17:05:23 +0200 Subject: [PATCH 09/15] add mvc for datePattern --- .../importer/controller/Step2Controller.java | 7 ++- .../n52/sos/importer/model/Step2Model.java | 11 +++++ .../importer/model/xml/Step2ModelHandler.java | 1 + .../org/n52/sos/importer/view/Step2Panel.java | 45 ++++++++++++++----- .../org/n52/sos/importer/view/i18n/De.java | 10 +++++ .../org/n52/sos/importer/view/i18n/En.java | 10 +++++ .../org/n52/sos/importer/view/i18n/Lang.java | 22 ++++++++- .../controller/Step2ControllerTest.java | 38 +++++++++++----- .../sos/importer/model/Step2ModelTest.java | 11 +++++ .../model/xml/Step2ModelHandlerTest.java | 16 +++++++ .../n52/sos/importer/view/Step2PanelTest.java | 11 +++++ 11 files changed, 159 insertions(+), 23 deletions(-) diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java index 884e5094..a0f934fe 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java @@ -87,7 +87,10 @@ public boolean isFinished() { step2Model.getSampleBasedStartRegEx().isEmpty() || step2Model.getSampleBasedDateOffset() < 1 || step2Model.getSampleBasedDateExtractionRegEx() == null || - step2Model.getSampleBasedDateExtractionRegEx().isEmpty())) { + step2Model.getSampleBasedDateExtractionRegEx().isEmpty() || + step2Model.getSampleBasedDatePattern() == null || + step2Model.getSampleBasedDatePattern().isEmpty() + )) { return false; } @@ -139,6 +142,7 @@ public void loadSettings() { step2Panel.setSampleBasedStartRegEx(step2Model.getSampleBasedStartRegEx()); step2Panel.setSampleBasedDateOffset(step2Model.getSampleBasedDateOffset()); step2Panel.setSampleBasedDateExtractionRegEx(step2Model.getSampleBasedDateExtractionRegEx()); + step2Panel.setSampleBasedDatePattern(step2Model.getSampleBasedDatePattern()); } } @@ -185,6 +189,7 @@ public void saveSettings() { step2Model.setSampleBasedStartRegEx(step2Panel.getSampleBasedStartRegEx()); step2Model.setSampleBasedDateOffset(step2Panel.getSampleBasedDateOffset()); step2Model.setSampleBasedDateExtractionRegEx(step2Panel.getSampleBasedDateExtractionRegEx()); + step2Model.setSampleBasedDatePattern(step2Panel.getSampleBasedDatePattern()); } step2Panel = null; diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/Step2Model.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/Step2Model.java index 8b0b4621..fd8f3027 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/Step2Model.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/Step2Model.java @@ -51,6 +51,8 @@ public class Step2Model implements StepModel { private String sampleBasedDateExtractionRegEx = ""; + private String sampleBasedDatePattern = ""; + public Step2Model(final String csvFileContent, final int csvFileRowCount) { this.csvFileContent = csvFileContent; @@ -170,4 +172,13 @@ public String getSampleBasedDateExtractionRegEx() { return sampleBasedDateExtractionRegEx; } + public Step2Model setSampleBasedDatePattern(final String sampleBasedDateDatePattern) { + sampleBasedDatePattern = sampleBasedDateDatePattern; + return this; + } + + public String getSampleBasedDatePattern() { + return sampleBasedDatePattern; + } + } \ No newline at end of file diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/xml/Step2ModelHandler.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/xml/Step2ModelHandler.java index a615cd63..b15fca51 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/xml/Step2ModelHandler.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/xml/Step2ModelHandler.java @@ -77,6 +77,7 @@ public void handleModel(final Step2Model stepModel, dataFile.setSampleStartRegEx(stepModel.getSampleBasedStartRegEx()); dataFile.setSampleDateOffset(stepModel.getSampleBasedDateOffset()); dataFile.setSampleDateExtractionRegEx(stepModel.getSampleBasedDateExtractionRegEx()); + dataFile.setSampleDatePattern(stepModel.getSampleBasedDatePattern()); } } diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java index ad6ace92..a596032b 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java @@ -96,10 +96,10 @@ public class Step2Panel extends JPanel { private JPanel dateOffsetPanel; private JSpinner dateOffset; private SpinnerNumberModel dateOffsetModel; - private JTextField dateExtractionRegExTF; - private JPanel dateExtractionRegExPanel; + private JTextField datePatternTF; + private JPanel datePatternPanel; public Step2Panel(final int csvFileRowCount) { super(); @@ -140,6 +140,19 @@ private void addElementsForSampleBasedFiles(final JPanel csvSettingsPanel, addStartRegEx(csvSettingsPanel, gridY++); addDateOffset(csvSettingsPanel, gridY++, max); addDateExtractionRegEx(csvSettingsPanel, gridY++); + addDatePattern(csvSettingsPanel, gridY++); + } + + private void addDatePattern(final JPanel csvSettingsPanel, + final int gridY) { + datePatternTF = new JTextField(28); + datePatternPanel = new JPanel(); + datePatternPanel.setToolTipText(Lang.l().step2SampleBasedDatePatternTooltip()); + datePatternPanel.setLayout(new GridLayout(2, 1)); + datePatternPanel.add(new JLabel(Lang.l().step2SampleBasedDatePatternLabel() + ":")); + datePatternPanel.add(datePatternTF); + datePatternPanel.setVisible(false); + csvSettingsPanel.add(datePatternPanel, simpleConstraints(gridY)); } private void addDateExtractionRegEx(final JPanel csvSettingsPanel, @@ -167,26 +180,28 @@ private void addIsSampleBased(final JPanel csvSettingsPanel, final int gridY) { public void actionPerformed(final ActionEvent e) { if (isSampleBasedCheckBox.isSelected()) { // TODO activateSampleBasedGuiElements - setEnabled(true); + setSampleBasedElementsEnabled(true); firstLineWithDataTmp = Integer.parseInt(firstDataJS.getValue().toString()); firstDataJS.setValue(0); } else { // TODO disable all sample based elements - setEnabled(false); + setSampleBasedElementsEnabled(false); firstDataJS.setValue(firstLineWithDataTmp); } } - private void setEnabled(final boolean state) { - startRegExPanel.setVisible(state); - dateOffsetPanel.setVisible(state); - dateExtractionRegExPanel.setVisible(state); - firstDataJS.setEnabled(!state); - } }); csvSettingsPanel.add(isSampleBasedFilePanel, simpleConstraints(gridY)); } + private void setSampleBasedElementsEnabled(final boolean state) { + startRegExPanel.setVisible(state); + dateOffsetPanel.setVisible(state); + dateExtractionRegExPanel.setVisible(state); + datePatternPanel.setVisible(state); + firstDataJS.setEnabled(!state); + } + private void addStartRegEx(final JPanel csvSettingsPanel, final int gridY) { startRegExTF = new JTextField(28); @@ -482,6 +497,7 @@ public void setUseHeader(final boolean useHeader) { public Step2Panel setSampleBased(final boolean isSampleBased) { isSampleBasedCheckBox.setSelected(isSampleBased); + setSampleBasedElementsEnabled(isSampleBased); return this; } @@ -516,4 +532,13 @@ public Step2Panel setSampleBasedDateExtractionRegEx(final String sampleBasedDate return this; } + public String getSampleBasedDatePattern() { + return datePatternTF.getText(); + } + + public Step2Panel setSampleBasedDatePattern(final String sampleBasedDatePattern) { + datePatternTF.setText(sampleBasedDatePattern); + return this; + } + } diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java index 5fd14530..06ce298e 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java @@ -447,6 +447,16 @@ public String step2SampleBasedDateOffsetToolTip() { return "Der Abstand zwischen dem Start einer Messreihe und der Zeile mit den Datumsinformationen"; } + @Override + public String step2SampleBasedDatePatternLabel() { + return "Analyse Muster \"Datumsinformationen\""; + } + + @Override + public String step2SampleBasedDatePatternTooltip() { + return "Muster, das zur Interpretation der Datumsinformationen für die aktuelle Messreihe verwendet wird."; + } + @Override public String step2SampleBasedStartRegExLabel() { return "Regulärer Ausdruck \"Beginn der Messreihe\""; diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java index a18259e0..7fab0551 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java @@ -448,6 +448,16 @@ public String step2SampleBasedDateOffsetToolTip() { return "The offset of the line containing the date of the sample from the start line."; } + @Override + public String step2SampleBasedDatePatternLabel() { + return "Parse Pattern \"Date Information\""; + } + + @Override + public String step2SampleBasedDatePatternTooltip() { + return "The pattern used to parse the date information of the current sample."; + } + @Override public String step2SampleBasedStartRegExLabel() { return "Regular Expression \"Sample Start\""; diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/Lang.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/Lang.java index 4f6e3417..00317a1a 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/Lang.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/Lang.java @@ -413,35 +413,53 @@ public String sos() { * "sampleDatePattern" attribute. */ public abstract String step2SampleBasedDateExtractionRegExTooltip(); + /** * @return Offset date information */ public abstract String step2SampleBasedDateOffsetLabel(); + /** * * @return The offset of the line containing the date of the * sample from the start line. */ public abstract String step2SampleBasedDateOffsetToolTip(); + + /** + * @return Parse Pattern "Date Information" + */ + public abstract String step2SampleBasedDatePatternLabel(); + + /** + * @return The pattern used to parse the date information of the + * current sample. + */ + public abstract String step2SampleBasedDatePatternTooltip(); + /** * * @return Regular Expression "Sample Start" */ public abstract String step2SampleBasedStartRegExLabel(); + /** * * @return Used to identify the start of a new sample.\n * MUST match the whole line. */ public abstract String step2SampleBasedStartRegExTooltip(); + /** * @return Text qualifier */ public abstract String step2TextQualifier(); + /** * @return Step 3a: Choose Metadata for the selected column */ public abstract String step3aDescription(); + /** * @return You have to specify at least one measured value column. */ @@ -600,6 +618,7 @@ public String step4bInfoResoureAlreadySet(final Resource resource) { * @return Step 5a: Complete time data */ public abstract String step5aDescription(); + /** * @return Complete missing information for the marked date and time. */ @@ -608,7 +627,6 @@ public String step4bInfoResoureAlreadySet(final Resource resource) { * @return Step 5c: Complete position data */ public abstract String step5cDescription(); - /** * @return Complete missing information for the marked position. */ @@ -655,10 +673,12 @@ public String step4bInfoResoureAlreadySet(final Resource resource) { * @return Use Name after prefix? */ public abstract String step6bUseNameAfterPrefix(); + /** * @return Step 6c: Add missing positions */ public abstract String step6cDescription(); + /** * * @return Set Position diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/controller/Step2ControllerTest.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/controller/Step2ControllerTest.java index fc0c25ef..9cde2a46 100644 --- a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/controller/Step2ControllerTest.java +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/controller/Step2ControllerTest.java @@ -30,7 +30,7 @@ import org.junit.Test; import org.n52.sos.importer.model.Step2Model; -/** +/* * @author Eike Hinderk Jürrens */ public class Step2ControllerTest { @@ -81,20 +81,36 @@ public void shouldReturnFalseIfDateExtractionRegExIsMissingAndSampleBasedIsTrue( assertThat(controller.isFinished(), is(false)); } + @Test + public void shouldReturnFalseIfDatePatternIsMissingAndSampleBasedIsTrue() { + ((Step2Model)controller.getModel()) + .setColumnSeparator(",") + .setCommentIndicator("#") + .setDecimalSeparator('.') + .setTextQualifier("\"") + .setSampleBased(true) + .setSampleBasedStartRegEx("test-regex") + .setSampleBasedDateOffset(5) + .setSampleBasedDateExtractionRegEx("test-regex-2"); + controller.loadSettings(); + assertThat(controller.isFinished(), is(false)); + } + @Test public void shouldReturnTrueIfSampleBasedValuesAreSet() { ((Step2Model)controller.getModel()) - .setColumnSeparator(",") - .setCommentIndicator("#") - .setDecimalSeparator('.') - .setTextQualifier("\"") - .setSampleBased(true) - .setSampleBasedStartRegEx("test-regex") - .setSampleBasedDateOffset(5) - .setSampleBasedDateExtractionRegEx("test-regex2"); + .setColumnSeparator(",") + .setCommentIndicator("#") + .setDecimalSeparator('.') + .setTextQualifier("\"") + .setSampleBased(true) + .setSampleBasedStartRegEx("test-regex") + .setSampleBasedDateOffset(5) + .setSampleBasedDateExtractionRegEx("test-regex2") + .setSampleBasedDatePattern("date-pattern"); // TODO extend with other sample based parameters - controller.loadSettings(); - assertThat(controller.isFinished(), is(true)); + controller.loadSettings(); + assertThat(controller.isFinished(), is(true)); } } diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/Step2ModelTest.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/Step2ModelTest.java index 28e62c13..2ebf82c0 100644 --- a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/Step2ModelTest.java +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/Step2ModelTest.java @@ -83,4 +83,15 @@ public void shouldReturnStringIfIsSampleBasedDateExtractionRegExIsSet() { public void shouldReturnEmptyStringAsDefaultValueForSampleBasedDateExtractionRegEx() { assertThat(model.getSampleBasedDateExtractionRegEx(), is("")); } + + @Test + public void shouldReturnStringIfIsSampleBasedDatePatternIsSet() { + final String datePattern = "test-regex"; + assertThat(model.setSampleBasedDatePattern(datePattern).getSampleBasedDatePattern(), is(datePattern)); + } + + @Test + public void shouldReturnEmptyStringAsDefaultValueForSampleBasedDatePattern() { + assertThat(model.getSampleBasedDatePattern(), is("")); + } } diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step2ModelHandlerTest.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step2ModelHandlerTest.java index 52698650..40eb0fea 100644 --- a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step2ModelHandlerTest.java +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step2ModelHandlerTest.java @@ -77,4 +77,20 @@ public void shouldSetSampleBasedDateExtractionRegEx() { assertThat(importConf.getDataFile().getSampleDateExtractionRegEx(), is(dateExtractionRegEx)); } + @Test + public void shouldSetSampleBasedDatePattern() { + final String datePattern = "test-regex-2"; + final Step2Model stepModel = new Step2Model("",2) + .setSampleBased(true) + .setSampleBasedStartRegEx("test-regex") + .setSampleBasedDateOffset(25) + .setSampleBasedDateExtractionRegEx("test-regex-2") + .setSampleBasedDatePattern(datePattern); + final SosImportConfiguration importConf = SosImportConfiguration.Factory.newInstance(); + new Step2ModelHandler().handleModel(stepModel, importConf); + + assertThat(importConf.getDataFile().isSetSampleDatePattern(), is(true)); + assertThat(importConf.getDataFile().getSampleDatePattern(), is(datePattern)); + } + } diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/view/Step2PanelTest.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/view/Step2PanelTest.java index 4c057932..7e2e55e2 100644 --- a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/view/Step2PanelTest.java +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/view/Step2PanelTest.java @@ -87,4 +87,15 @@ public void shouldReturnStringIfIsSampleBasedDateExtractionRegExIsSet() { public void shouldReturnEmptyStringAsDefaultValueForSampleBasedDateExtractionRegEx() { assertThat(panel.getSampleBasedDateExtractionRegEx(), is("")); } + + @Test + public void shouldReturnStringIfIsSampleBasedDatePatternIsSet() { + final String datePattern = "test-regex"; + assertThat(panel.setSampleBasedDatePattern(datePattern).getSampleBasedDatePattern(), is(datePattern)); + } + + @Test + public void shouldReturnEmptyStringAsDefaultValueForSampleBasedDatePattern() { + assertThat(panel.getSampleBasedDatePattern(), is("")); + } } From 1685cdb70ed382c538a99f4f049aec34ab412f86 Mon Sep 17 00:00:00 2001 From: EHJ-52n Date: Mon, 28 Apr 2014 09:25:44 +0200 Subject: [PATCH 10/15] Add check for regEx group in date extraction regEx --- .../java/org/n52/sos/importer/controller/Step2Controller.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java index a0f934fe..6a04d0fc 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java @@ -88,6 +88,8 @@ public boolean isFinished() { step2Model.getSampleBasedDateOffset() < 1 || step2Model.getSampleBasedDateExtractionRegEx() == null || step2Model.getSampleBasedDateExtractionRegEx().isEmpty() || + step2Model.getSampleBasedDateExtractionRegEx().indexOf("(") < 0 || + step2Model.getSampleBasedDateExtractionRegEx().indexOf(")") < 1 || step2Model.getSampleBasedDatePattern() == null || step2Model.getSampleBasedDatePattern().isEmpty() )) { From eb916eead6d14d027dd1aa9f1e3053da1ec7bc40 Mon Sep 17 00:00:00 2001 From: EHJ-52n Date: Mon, 28 Apr 2014 09:27:08 +0200 Subject: [PATCH 11/15] Remove useless parameter as value is available via field --- .../java/org/n52/sos/importer/view/Step2Panel.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java index a596032b..bc93404b 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java @@ -115,7 +115,7 @@ public Step2Panel(final int csvFileRowCount) { addFirstLineWithData(csvFileRowCount, csvSettingsPanel, gridY++); addDecimalSeparator(csvSettingsPanel, gridY++); addUseHeaderCheckbox(csvSettingsPanel, gridY/*++*/); - addElementsForSampleBasedFiles(csvSettingsPanel, gridY++, csvFileRowCount); + addElementsForSampleBasedFiles(csvSettingsPanel, gridY++); final JPanel csvDataPanel = new JPanel(); addCsvDataPanel(csvDataPanel); @@ -134,11 +134,10 @@ private void addCsvDataPanel(final JPanel csvDataPanel) { } private void addElementsForSampleBasedFiles(final JPanel csvSettingsPanel, - int gridY, - final int max) { + int gridY) { addIsSampleBased(csvSettingsPanel, gridY++); addStartRegEx(csvSettingsPanel, gridY++); - addDateOffset(csvSettingsPanel, gridY++, max); + addDateOffset(csvSettingsPanel, gridY++); addDateExtractionRegEx(csvSettingsPanel, gridY++); addDatePattern(csvSettingsPanel, gridY++); } @@ -215,9 +214,8 @@ private void addStartRegEx(final JPanel csvSettingsPanel, } private void addDateOffset(final JPanel csvSettingsPanel, - final int gridY, - final int max) { - dateOffsetModel = new SpinnerNumberModel(1, 1, max, 1); + final int gridY) { + dateOffsetModel = new SpinnerNumberModel(1, 1, csvFileRowCount, 1); dateOffsetModel.addChangeListener(new ChangeListener() { @Override public void stateChanged(final ChangeEvent e) { From f4fe1b1cf28054c6578f6a8611038e24ccd1f263 Mon Sep 17 00:00:00 2001 From: EHJ-52n Date: Mon, 28 Apr 2014 09:27:39 +0200 Subject: [PATCH 12/15] add mvc for sampleDataOffset --- .../importer/controller/Step2Controller.java | 5 ++- .../n52/sos/importer/model/Step2Model.java | 11 ++++++ .../importer/model/xml/Step2ModelHandler.java | 1 + .../org/n52/sos/importer/view/Step2Panel.java | 39 +++++++++++++++++++ .../org/n52/sos/importer/view/i18n/De.java | 10 +++++ .../org/n52/sos/importer/view/i18n/En.java | 10 +++++ .../org/n52/sos/importer/view/i18n/Lang.java | 19 +++++++-- .../controller/Step2ControllerTest.java | 31 +++++++++++---- .../sos/importer/model/Step2ModelTest.java | 11 ++++++ .../model/xml/Step2ModelHandlerTest.java | 17 ++++++++ .../n52/sos/importer/view/Step2PanelTest.java | 15 ++++++- 11 files changed, 156 insertions(+), 13 deletions(-) diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java index 6a04d0fc..64f9c92c 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java @@ -91,7 +91,8 @@ public boolean isFinished() { step2Model.getSampleBasedDateExtractionRegEx().indexOf("(") < 0 || step2Model.getSampleBasedDateExtractionRegEx().indexOf(")") < 1 || step2Model.getSampleBasedDatePattern() == null || - step2Model.getSampleBasedDatePattern().isEmpty() + step2Model.getSampleBasedDatePattern().isEmpty() || + step2Model.getSampleBasedDataOffset() < 1 )) { return false; } @@ -145,6 +146,7 @@ public void loadSettings() { step2Panel.setSampleBasedDateOffset(step2Model.getSampleBasedDateOffset()); step2Panel.setSampleBasedDateExtractionRegEx(step2Model.getSampleBasedDateExtractionRegEx()); step2Panel.setSampleBasedDatePattern(step2Model.getSampleBasedDatePattern()); + step2Panel.setSampleBasedDataOffset(step2Model.getSampleBasedDataOffset()); } } @@ -192,6 +194,7 @@ public void saveSettings() { step2Model.setSampleBasedDateOffset(step2Panel.getSampleBasedDateOffset()); step2Model.setSampleBasedDateExtractionRegEx(step2Panel.getSampleBasedDateExtractionRegEx()); step2Model.setSampleBasedDatePattern(step2Panel.getSampleBasedDatePattern()); + step2Model.setSampleBasedDataOffset(step2Panel.getSampleBasedDataOffset()); } step2Panel = null; diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/Step2Model.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/Step2Model.java index fd8f3027..54d6d5cd 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/Step2Model.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/Step2Model.java @@ -53,6 +53,8 @@ public class Step2Model implements StepModel { private String sampleBasedDatePattern = ""; + private int dataOffset = 0; + public Step2Model(final String csvFileContent, final int csvFileRowCount) { this.csvFileContent = csvFileContent; @@ -181,4 +183,13 @@ public String getSampleBasedDatePattern() { return sampleBasedDatePattern; } + public Step2Model setSampleBasedDataOffset(final int dataOffset) { + this.dataOffset = dataOffset; + return this; + } + + public int getSampleBasedDataOffset() { + return dataOffset; + } + } \ No newline at end of file diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/xml/Step2ModelHandler.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/xml/Step2ModelHandler.java index b15fca51..30437487 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/xml/Step2ModelHandler.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/xml/Step2ModelHandler.java @@ -78,6 +78,7 @@ public void handleModel(final Step2Model stepModel, dataFile.setSampleDateOffset(stepModel.getSampleBasedDateOffset()); dataFile.setSampleDateExtractionRegEx(stepModel.getSampleBasedDateExtractionRegEx()); dataFile.setSampleDatePattern(stepModel.getSampleBasedDatePattern()); + dataFile.setSampleDataOffset(stepModel.getSampleBasedDataOffset()); } } diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java index bc93404b..24958560 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java @@ -101,6 +101,10 @@ public class Step2Panel extends JPanel { private JTextField datePatternTF; private JPanel datePatternPanel; + private SpinnerNumberModel dataOffsetModel; + private JSpinner dataOffset; + private JPanel dataOffsetPanel; + public Step2Panel(final int csvFileRowCount) { super(); this.csvFileRowCount = csvFileRowCount; @@ -140,6 +144,31 @@ private void addElementsForSampleBasedFiles(final JPanel csvSettingsPanel, addDateOffset(csvSettingsPanel, gridY++); addDateExtractionRegEx(csvSettingsPanel, gridY++); addDatePattern(csvSettingsPanel, gridY++); + addDataOffset(csvSettingsPanel, gridY++); + } + + private void addDataOffset(final JPanel csvSettingsPanel, + final int gridY) { + dataOffsetModel = new SpinnerNumberModel(1, 1, csvFileRowCount, 1); + dataOffsetModel.addChangeListener(new ChangeListener() { + @Override + public void stateChanged(final ChangeEvent e) { + final int number = dataOffsetModel.getNumber().intValue(); + if(number < 0) { + dataOffsetModel.setValue(0); + } else if (number > (csvFileRowCount-1)){ + dataOffsetModel.setValue((csvFileRowCount-1)); + } + } + }); + dataOffset = new JSpinner(dateOffsetModel); + dataOffsetPanel = new JPanel(); + dataOffsetPanel.setToolTipText(Lang.l().step2SampleBasedDataOffsetToolTip()); + dataOffsetPanel.setLayout(new FlowLayout(FlowLayout.LEADING, 0, 0)); + dataOffsetPanel.add(new JLabel(Lang.l().step2SampleBasedDataOffsetLabel() + ":")); + dataOffsetPanel.add(dataOffset); + dataOffsetPanel.setVisible(false); + csvSettingsPanel.add(dataOffsetPanel, simpleConstraints(gridY)); } private void addDatePattern(final JPanel csvSettingsPanel, @@ -198,6 +227,7 @@ private void setSampleBasedElementsEnabled(final boolean state) { dateOffsetPanel.setVisible(state); dateExtractionRegExPanel.setVisible(state); datePatternPanel.setVisible(state); + dataOffsetPanel.setVisible(state); firstDataJS.setEnabled(!state); } @@ -539,4 +569,13 @@ public Step2Panel setSampleBasedDatePattern(final String sampleBasedDatePattern) return this; } + public int getSampleBasedDataOffset() { + return dataOffsetModel.getNumber().intValue(); + } + + public Step2Panel setSampleBasedDataOffset(final int dataOffset) { + dataOffsetModel.setValue(dataOffset); + return this; + } + } diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java index 06ce298e..98844ea2 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java @@ -420,6 +420,16 @@ public String step2ParseHeader() { return "Kopfzeile auswerten"; } + @Override + public String step2SampleBasedDataOffsetLabel() { + return "Zeilenabstand 'Messdaten'"; + } + + @Override + public String step2SampleBasedDataOffsetToolTip() { + return "Der Abstand zwischen dem Start einer Messreihe und dem Beginn der Daten in Zeilen."; + } + @Override public String step2SampleBasedDateExtractionRegExLabel() { return "Regulärer Ausdruck \"Datumsinformation\""; diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java index 7fab0551..afefeadd 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java @@ -423,6 +423,16 @@ public String step2ParseHeader() { return "Interpret Header"; } + @Override + public String step2SampleBasedDataOffsetLabel() { + return "Offset data"; + } + + @Override + public String step2SampleBasedDataOffsetToolTip() { + return "The offset in lines from sample beginning till the first lines with data."; + } + @Override public String step2SampleBasedDateExtractionRegExLabel() { return "Regular Expression \"Date Extraction\""; diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/Lang.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/Lang.java index 00317a1a..ed9e09ff 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/Lang.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/Lang.java @@ -400,6 +400,19 @@ public String sos() { */ public abstract String step2ParseHeader(); + /** + * + * @return Offset data + */ + public abstract String step2SampleBasedDataOffsetLabel(); + + /** + * + * @return The offset in lines from sample beginning till the first lines + * with data. + */ + public abstract String step2SampleBasedDataOffsetToolTip(); + /** * @return Regular Expression "Date Extraction" */ @@ -454,12 +467,10 @@ public String sos() { * @return Text qualifier */ public abstract String step2TextQualifier(); - /** * @return Step 3a: Choose Metadata for the selected column */ public abstract String step3aDescription(); - /** * @return You have to specify at least one measured value column. */ @@ -590,6 +601,7 @@ public String step4bInfoResoureAlreadySet(final Resource resource) { } return res + step4bInfoResourceAlreadySetText() + measuredValue(); } + /** * * List how to replace the @@ -618,7 +630,6 @@ public String step4bInfoResoureAlreadySet(final Resource resource) { * @return Step 5a: Complete time data */ public abstract String step5aDescription(); - /** * @return Complete missing information for the marked date and time. */ @@ -665,10 +676,12 @@ public String step4bInfoResoureAlreadySet(final Resource resource) { * @return What is the sensor for */ public abstract String step6bSpecialModelDescription(); + /** * @return Please provide a URI or a prefix if using the name as part of the URI. */ public abstract String step6bURIInstructions(); + /** * @return Use Name after prefix? */ diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/controller/Step2ControllerTest.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/controller/Step2ControllerTest.java index 9cde2a46..6793b3d9 100644 --- a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/controller/Step2ControllerTest.java +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/controller/Step2ControllerTest.java @@ -43,7 +43,7 @@ public void init() { } @Test - public void shouldReturnFalseIfStartRegExIsMissingAndSampleBasedIsTrue() { + public void shouldReturnFalseIfStartRegExIsMissing() { ((Step2Model)controller.getModel()) .setColumnSeparator(",") .setCommentIndicator("#") @@ -55,7 +55,7 @@ public void shouldReturnFalseIfStartRegExIsMissingAndSampleBasedIsTrue() { } @Test - public void shouldReturnFalseIfDateOffsetIsMissingAndSampleBasedIsTrue() { + public void shouldReturnFalseIfDateOffsetIsMissing() { ((Step2Model)controller.getModel()) .setColumnSeparator(",") .setCommentIndicator("#") @@ -68,7 +68,7 @@ public void shouldReturnFalseIfDateOffsetIsMissingAndSampleBasedIsTrue() { } @Test - public void shouldReturnFalseIfDateExtractionRegExIsMissingAndSampleBasedIsTrue() { + public void shouldReturnFalseIfDateExtractionRegExIsMissing() { ((Step2Model)controller.getModel()) .setColumnSeparator(",") .setCommentIndicator("#") @@ -82,7 +82,7 @@ public void shouldReturnFalseIfDateExtractionRegExIsMissingAndSampleBasedIsTrue( } @Test - public void shouldReturnFalseIfDatePatternIsMissingAndSampleBasedIsTrue() { + public void shouldReturnFalseIfDatePatternIsMissing() { ((Step2Model)controller.getModel()) .setColumnSeparator(",") .setCommentIndicator("#") @@ -91,11 +91,27 @@ public void shouldReturnFalseIfDatePatternIsMissingAndSampleBasedIsTrue() { .setSampleBased(true) .setSampleBasedStartRegEx("test-regex") .setSampleBasedDateOffset(5) - .setSampleBasedDateExtractionRegEx("test-regex-2"); + .setSampleBasedDateExtractionRegEx("(test)-regex-2"); controller.loadSettings(); assertThat(controller.isFinished(), is(false)); } + @Test + public void shouldReturnFalseIfDataOffsetIsMissing() { + ((Step2Model)controller.getModel()) + .setColumnSeparator(",") + .setCommentIndicator("#") + .setDecimalSeparator('.') + .setTextQualifier("\"") + .setSampleBased(true) + .setSampleBasedStartRegEx("test-regex") + .setSampleBasedDateOffset(5) + .setSampleBasedDateExtractionRegEx("(test)-regex-2") + .setSampleBasedDatePattern("test-pattern"); + controller.loadSettings(); + assertThat(controller.isFinished(), is(false)); + } + @Test public void shouldReturnTrueIfSampleBasedValuesAreSet() { ((Step2Model)controller.getModel()) @@ -106,8 +122,9 @@ public void shouldReturnTrueIfSampleBasedValuesAreSet() { .setSampleBased(true) .setSampleBasedStartRegEx("test-regex") .setSampleBasedDateOffset(5) - .setSampleBasedDateExtractionRegEx("test-regex2") - .setSampleBasedDatePattern("date-pattern"); + .setSampleBasedDateExtractionRegEx("(test)-regex2-with-one-group") + .setSampleBasedDatePattern("date-pattern") + .setSampleBasedDataOffset(6); // TODO extend with other sample based parameters controller.loadSettings(); assertThat(controller.isFinished(), is(true)); diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/Step2ModelTest.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/Step2ModelTest.java index 2ebf82c0..fe53e147 100644 --- a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/Step2ModelTest.java +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/Step2ModelTest.java @@ -94,4 +94,15 @@ public void shouldReturnStringIfIsSampleBasedDatePatternIsSet() { public void shouldReturnEmptyStringAsDefaultValueForSampleBasedDatePattern() { assertThat(model.getSampleBasedDatePattern(), is("")); } + + @Test + public void shouldReturnValueIfIsSampleBasedDataOffsetIsSet() { + final int dataOffset = 25; + assertThat(model.setSampleBasedDataOffset(dataOffset).getSampleBasedDataOffset(), is(dataOffset)); + } + + @Test + public void shouldReturnZeroAsDefaultValueForSampleBasedDataOffset() { + assertThat(model.getSampleBasedDataOffset(), is(0)); + } } diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step2ModelHandlerTest.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step2ModelHandlerTest.java index 40eb0fea..ab7d610d 100644 --- a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step2ModelHandlerTest.java +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step2ModelHandlerTest.java @@ -93,4 +93,21 @@ public void shouldSetSampleBasedDatePattern() { assertThat(importConf.getDataFile().getSampleDatePattern(), is(datePattern)); } + @Test + public void shouldSetSampleBasedDataOffset() { + final int dataOffset = 42; + final Step2Model stepModel = new Step2Model("",2) + .setSampleBased(true) + .setSampleBasedStartRegEx("test-regex") + .setSampleBasedDateOffset(25) + .setSampleBasedDateExtractionRegEx("test-regex-2") + .setSampleBasedDatePattern("test-pattern") + .setSampleBasedDataOffset(dataOffset); + final SosImportConfiguration importConf = SosImportConfiguration.Factory.newInstance(); + new Step2ModelHandler().handleModel(stepModel, importConf); + + assertThat(importConf.getDataFile().isSetSampleDataOffset(), is(true)); + assertThat(importConf.getDataFile().getSampleDataOffset(), is(dataOffset)); + } + } diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/view/Step2PanelTest.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/view/Step2PanelTest.java index 7e2e55e2..b67c6a50 100644 --- a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/view/Step2PanelTest.java +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/view/Step2PanelTest.java @@ -65,13 +65,13 @@ public void shouldReturnEmptyStringAsDefaultValueForSampleBasedStartRegEx() { } @Test - public void shouldReturnValueIfIsSampleBasedStartRegExIsSet() { + public void shouldReturnValueIfIsSampleBasedDateOffsetIsSet() { final int dateOffset = MAX_ROWS-5; assertThat(panel.setSampleBasedDateOffset(dateOffset).getSampleBasedDateOffset(), is(dateOffset)); } @Test - public void shouldReturnOneAsDefaultValueForSampleBasedStartRegEx() { + public void shouldReturnOneAsDefaultValueForDateOffset() { assertThat(panel.getSampleBasedDateOffset(), is(1)); } @@ -98,4 +98,15 @@ public void shouldReturnStringIfIsSampleBasedDatePatternIsSet() { public void shouldReturnEmptyStringAsDefaultValueForSampleBasedDatePattern() { assertThat(panel.getSampleBasedDatePattern(), is("")); } + + @Test + public void shouldReturnValueIfIsSampleBasedDataOffsetIsSet() { + final int dataOffset = MAX_ROWS-5; + assertThat(panel.setSampleBasedDataOffset(dataOffset).getSampleBasedDataOffset(), is(dataOffset)); + } + + @Test + public void shouldReturnOneAsDefaultValueForDataOffset() { + assertThat(panel.getSampleBasedDataOffset(), is(1)); + } } From c52466c1bd3a27dd14c7f17456f07ebd17302975 Mon Sep 17 00:00:00 2001 From: EHJ-52n Date: Mon, 28 Apr 2014 09:45:41 +0200 Subject: [PATCH 13/15] add mvc for sampleSizeOffset --- .../importer/controller/Step2Controller.java | 5 ++- .../n52/sos/importer/model/Step2Model.java | 11 +++++ .../importer/model/xml/Step2ModelHandler.java | 1 + .../org/n52/sos/importer/view/Step2Panel.java | 41 ++++++++++++++++- .../org/n52/sos/importer/view/i18n/De.java | 10 +++++ .../org/n52/sos/importer/view/i18n/En.java | 10 +++++ .../org/n52/sos/importer/view/i18n/Lang.java | 44 ++++++++++++++++++- .../controller/Step2ControllerTest.java | 23 +++++++++- .../sos/importer/model/Step2ModelTest.java | 11 +++++ .../model/xml/Step2ModelHandlerTest.java | 18 ++++++++ .../n52/sos/importer/view/Step2PanelTest.java | 11 +++++ 11 files changed, 181 insertions(+), 4 deletions(-) diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java index 64f9c92c..68052203 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java @@ -92,7 +92,8 @@ public boolean isFinished() { step2Model.getSampleBasedDateExtractionRegEx().indexOf(")") < 1 || step2Model.getSampleBasedDatePattern() == null || step2Model.getSampleBasedDatePattern().isEmpty() || - step2Model.getSampleBasedDataOffset() < 1 + step2Model.getSampleBasedDataOffset() < 1 || + step2Model.getSampleBasedSampleSizeOffset() < 1 )) { return false; } @@ -147,6 +148,7 @@ public void loadSettings() { step2Panel.setSampleBasedDateExtractionRegEx(step2Model.getSampleBasedDateExtractionRegEx()); step2Panel.setSampleBasedDatePattern(step2Model.getSampleBasedDatePattern()); step2Panel.setSampleBasedDataOffset(step2Model.getSampleBasedDataOffset()); + step2Panel.setSampleBasedSampleSizeOffset(step2Model.getSampleBasedSampleSizeOffset()); } } @@ -195,6 +197,7 @@ public void saveSettings() { step2Model.setSampleBasedDateExtractionRegEx(step2Panel.getSampleBasedDateExtractionRegEx()); step2Model.setSampleBasedDatePattern(step2Panel.getSampleBasedDatePattern()); step2Model.setSampleBasedDataOffset(step2Panel.getSampleBasedDataOffset()); + step2Model.setSampleBasedSampleSizeOffset(step2Panel.getSampleBasedSampleSizeOffset()); } step2Panel = null; diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/Step2Model.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/Step2Model.java index 54d6d5cd..b084eecf 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/Step2Model.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/Step2Model.java @@ -55,6 +55,8 @@ public class Step2Model implements StepModel { private int dataOffset = 0; + private int sampleSizeOffset = 0; + public Step2Model(final String csvFileContent, final int csvFileRowCount) { this.csvFileContent = csvFileContent; @@ -192,4 +194,13 @@ public int getSampleBasedDataOffset() { return dataOffset; } + public Step2Model setSampleBasedSampleSizeOffset(final int sampleSizeOffset) { + this.sampleSizeOffset = sampleSizeOffset; + return this; + } + + public int getSampleBasedSampleSizeOffset() { + return sampleSizeOffset; + } + } \ No newline at end of file diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/xml/Step2ModelHandler.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/xml/Step2ModelHandler.java index 30437487..6488c80e 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/xml/Step2ModelHandler.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/xml/Step2ModelHandler.java @@ -79,6 +79,7 @@ public void handleModel(final Step2Model stepModel, dataFile.setSampleDateExtractionRegEx(stepModel.getSampleBasedDateExtractionRegEx()); dataFile.setSampleDatePattern(stepModel.getSampleBasedDatePattern()); dataFile.setSampleDataOffset(stepModel.getSampleBasedDataOffset()); + dataFile.setSampleSizeOffset(stepModel.getSampleBasedSampleSizeOffset()); } } diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java index 24958560..9ec94378 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java @@ -105,6 +105,10 @@ public class Step2Panel extends JPanel { private JSpinner dataOffset; private JPanel dataOffsetPanel; + private SpinnerNumberModel sampleSizeOffsetModel; + private JSpinner sampleSizeOffset; + private JPanel sampleSizeOffsetPanel; + public Step2Panel(final int csvFileRowCount) { super(); this.csvFileRowCount = csvFileRowCount; @@ -145,6 +149,31 @@ private void addElementsForSampleBasedFiles(final JPanel csvSettingsPanel, addDateExtractionRegEx(csvSettingsPanel, gridY++); addDatePattern(csvSettingsPanel, gridY++); addDataOffset(csvSettingsPanel, gridY++); + addSampleSizeOffset(csvSettingsPanel, gridY++); + } + + private void addSampleSizeOffset(final JPanel csvSettingsPanel, + final int gridY) { + sampleSizeOffsetModel = new SpinnerNumberModel(1, 1, csvFileRowCount, 1); + sampleSizeOffsetModel.addChangeListener(new ChangeListener() { + @Override + public void stateChanged(final ChangeEvent e) { + final int number = sampleSizeOffsetModel.getNumber().intValue(); + if(number < 0) { + sampleSizeOffsetModel.setValue(0); + } else if (number > (csvFileRowCount-1)){ + sampleSizeOffsetModel.setValue((csvFileRowCount-1)); + } + } + }); + sampleSizeOffset = new JSpinner(sampleSizeOffsetModel); + sampleSizeOffsetPanel = new JPanel(); + sampleSizeOffsetPanel.setToolTipText(Lang.l().step2SampleBasedSampleSizeOffsetToolTip()); + sampleSizeOffsetPanel.setLayout(new FlowLayout(FlowLayout.LEADING, 0, 0)); + sampleSizeOffsetPanel.add(new JLabel(Lang.l().step2SampleBasedSampleSizeOffsetLabel() + ":")); + sampleSizeOffsetPanel.add(sampleSizeOffset); + sampleSizeOffsetPanel.setVisible(false); + csvSettingsPanel.add(sampleSizeOffsetPanel, simpleConstraints(gridY)); } private void addDataOffset(final JPanel csvSettingsPanel, @@ -161,7 +190,7 @@ public void stateChanged(final ChangeEvent e) { } } }); - dataOffset = new JSpinner(dateOffsetModel); + dataOffset = new JSpinner(dataOffsetModel); dataOffsetPanel = new JPanel(); dataOffsetPanel.setToolTipText(Lang.l().step2SampleBasedDataOffsetToolTip()); dataOffsetPanel.setLayout(new FlowLayout(FlowLayout.LEADING, 0, 0)); @@ -228,6 +257,7 @@ private void setSampleBasedElementsEnabled(final boolean state) { dateExtractionRegExPanel.setVisible(state); datePatternPanel.setVisible(state); dataOffsetPanel.setVisible(state); + sampleSizeOffsetPanel.setVisible(state); firstDataJS.setEnabled(!state); } @@ -578,4 +608,13 @@ public Step2Panel setSampleBasedDataOffset(final int dataOffset) { return this; } + public int getSampleBasedSampleSizeOffset() { + return sampleSizeOffsetModel.getNumber().intValue(); + } + + public Step2Panel setSampleBasedSampleSizeOffset(final int sampleSizeOffset) { + sampleSizeOffsetModel.setValue(sampleSizeOffset); + return this; + } + } diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java index 98844ea2..269c8498 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java @@ -467,6 +467,16 @@ public String step2SampleBasedDatePatternTooltip() { return "Muster, das zur Interpretation der Datumsinformationen für die aktuelle Messreihe verwendet wird."; } + @Override + public String step2SampleBasedSampleSizeOffsetLabel() { + return "Zeilenabstand 'Messreihengröße'"; + } + + @Override + public String step2SampleBasedSampleSizeOffsetToolTip() { + return "Der Abstand ziwschem dem Start einer Messreihe und der Zeile mit der Anzahl der Zeilen in der aktuellen Reihe."; + } + @Override public String step2SampleBasedStartRegExLabel() { return "Regulärer Ausdruck \"Beginn der Messreihe\""; diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java index afefeadd..a138c8eb 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java @@ -468,6 +468,16 @@ public String step2SampleBasedDatePatternTooltip() { return "The pattern used to parse the date information of the current sample."; } + @Override + public String step2SampleBasedSampleSizeOffsetLabel() { + return "Offset sample size"; + } + + @Override + public String step2SampleBasedSampleSizeOffsetToolTip() { + return "The offset in lines from sample beginning till the line containing the sample size in lines with data."; + } + @Override public String step2SampleBasedStartRegExLabel() { return "Regular Expression \"Sample Start\""; diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/Lang.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/Lang.java index ed9e09ff..7f09a193 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/Lang.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/Lang.java @@ -450,6 +450,19 @@ public String sos() { */ public abstract String step2SampleBasedDatePatternTooltip(); + /** + * + * @return Offset sample size + */ + public abstract String step2SampleBasedSampleSizeOffsetLabel(); + + /** + * + * @return The offset in lines from sample beginning till the line + * containing the sample size in lines with data. + */ + public abstract String step2SampleBasedSampleSizeOffsetToolTip(); + /** * * @return Regular Expression "Sample Start" @@ -467,112 +480,138 @@ public String sos() { * @return Text qualifier */ public abstract String step2TextQualifier(); + /** * @return Step 3a: Choose Metadata for the selected column */ public abstract String step3aDescription(); + /** * @return You have to specify at least one measured value column. */ public abstract String step3aMeasureValueColMissingDialogMessage(); + /** * @return Measured value column missing */ public abstract String step3aMeasureValueColMissingDialogTitle(); + /** * @return 1 value not parseable. */ public abstract String step3aParseTest1Failed(); + /** * @return All values parseable. */ public abstract String step3aParseTestAllOk(); + /** * @param n * @return n values not parseable. */ public abstract String step3aParseTestNFailed(int n); + /** * @return The type for this column is "undefined" please select one. Chose "Do Not Export" for skipping it. */ public abstract String step3aSelectedColTypeUndefinedMsg(); + /** * @return Column Type is "undefined" */ public abstract String step3aSelectedColTypeUndefinedTitle(); + /** * @return Step 3b: Choose metadata for rows */ public abstract String step3bDescription(); + /** * @return Date & Time */ public abstract String step3ColTypeDateTime(); + /** * @return Do not export */ public abstract String step3ColTypeDoNotExport(); + /** * @return Measured Value */ public abstract String step3ColTypeMeasuredValue(); + /** * @return Undefined */ public abstract String step3ColTypeUndefined(); + /** * @return Combination */ public abstract String step3DateAndTimeCombination(); + /** * @return UNIX time */ public abstract String step3DateAndTimeUnixTime(); + /** * @return Boolean */ public abstract String step3MeasuredValBoolean(); + /** * @return Count */ public abstract String step3MeasuredValCount(); + /** * @return Numeric Value */ public abstract String step3MeasuredValNumericValue(); + /** * @return Text */ public abstract String step3MeasuredValText(); + /** * @return {@linkplain org.n52.sos.importer.view.i18n.En.step3DateAndTimeCombination()} *
:= Combination */ public abstract String step3PositionCombination(); + /** * @return Step 4a: Solve Date & Time ambiguities */ public abstract String step4aDescription(); + /** * @return Date and Time are already set for this En.measuredValue(). * @see {@link org.n52.sos.importer.view.i18n.En.measuredValue()} */ public abstract String step4aInfoDateAndTime(); + /** * @param element * @return This is not a En.measuredValue(). * @see {@link org.n52.sos.importer.view.i18n.En.measuredValue()} */ public abstract String step4aInfoMeasuredValue(); + /** * @param stringReplacer * @return Select all measured value Constants.STRING_REPLACERs where the marked Date & Time group corresponds to. */ public abstract String step4aModelDescription(); + /** * @return Step 4b: Solve ambiguities */ public abstract String step4bDescription(); + /** * @return This is not a En.measuredValue(). * @see {@link org.n52.sos.importer.view.i18n.En.measuredValue()} @@ -580,10 +619,12 @@ public String sos() { * */ public abstract String step4bInfoNotMeasuredValue(); + /** * @return " already set for this " */ public abstract String step4bInfoResourceAlreadySetText(); + /** * @param resource resource.className already set for this En.measuredValue(). * @return @@ -601,7 +642,6 @@ public String step4bInfoResoureAlreadySet(final Resource resource) { } return res + step4bInfoResourceAlreadySetText() + measuredValue(); } - /** * * List how to replace the @@ -668,10 +708,12 @@ public String step4bInfoResoureAlreadySet(final Resource resource) { * \nMultiple columns could be selected. */ public abstract String step6bSelectColumnsLabel(); + /** * @return Step 6b (Special): Add missing sensors */ public abstract String step6bSpecialDescription(); + /** * @return What is the sensor for */ diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/controller/Step2ControllerTest.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/controller/Step2ControllerTest.java index 6793b3d9..232bde65 100644 --- a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/controller/Step2ControllerTest.java +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/controller/Step2ControllerTest.java @@ -79,6 +79,9 @@ public void shouldReturnFalseIfDateExtractionRegExIsMissing() { .setSampleBasedDateOffset(5); controller.loadSettings(); assertThat(controller.isFinished(), is(false)); + ((Step2Model)controller.getModel()).setSampleBasedDateExtractionRegEx("test-regex"); + controller.loadSettings(); + assertThat(controller.isFinished(), is(false)); } @Test @@ -112,6 +115,23 @@ public void shouldReturnFalseIfDataOffsetIsMissing() { assertThat(controller.isFinished(), is(false)); } + @Test + public void shouldReturnFalseIfSampleSizeOffsetIsMissing() { + ((Step2Model)controller.getModel()) + .setColumnSeparator(",") + .setCommentIndicator("#") + .setDecimalSeparator('.') + .setTextQualifier("\"") + .setSampleBased(true) + .setSampleBasedStartRegEx("test-regex") + .setSampleBasedDateOffset(5) + .setSampleBasedDateExtractionRegEx("(test)-regex-2") + .setSampleBasedDatePattern("test-pattern") + .setSampleBasedDataOffset(6); + controller.loadSettings(); + assertThat(controller.isFinished(), is(false)); + } + @Test public void shouldReturnTrueIfSampleBasedValuesAreSet() { ((Step2Model)controller.getModel()) @@ -124,7 +144,8 @@ public void shouldReturnTrueIfSampleBasedValuesAreSet() { .setSampleBasedDateOffset(5) .setSampleBasedDateExtractionRegEx("(test)-regex2-with-one-group") .setSampleBasedDatePattern("date-pattern") - .setSampleBasedDataOffset(6); + .setSampleBasedDataOffset(6) + .setSampleBasedSampleSizeOffset(7); // TODO extend with other sample based parameters controller.loadSettings(); assertThat(controller.isFinished(), is(true)); diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/Step2ModelTest.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/Step2ModelTest.java index fe53e147..d8b5d592 100644 --- a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/Step2ModelTest.java +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/Step2ModelTest.java @@ -105,4 +105,15 @@ public void shouldReturnValueIfIsSampleBasedDataOffsetIsSet() { public void shouldReturnZeroAsDefaultValueForSampleBasedDataOffset() { assertThat(model.getSampleBasedDataOffset(), is(0)); } + + @Test + public void shouldReturnValueIfIsSampleBasedSampleSizeOffsetIsSet() { + final int sampleSizeOffset = 25; + assertThat(model.setSampleBasedSampleSizeOffset(sampleSizeOffset).getSampleBasedSampleSizeOffset(), is(sampleSizeOffset)); + } + + @Test + public void shouldReturnZeroAsDefaultValueForSampleBasedSampleSizeOffset() { + assertThat(model.getSampleBasedSampleSizeOffset(), is(0)); + } } diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step2ModelHandlerTest.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step2ModelHandlerTest.java index ab7d610d..e589efee 100644 --- a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step2ModelHandlerTest.java +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step2ModelHandlerTest.java @@ -110,4 +110,22 @@ public void shouldSetSampleBasedDataOffset() { assertThat(importConf.getDataFile().getSampleDataOffset(), is(dataOffset)); } + @Test + public void shouldSetSampleBasedSampleSizeOffset() { + final int sampleSizeOffset = 42; + final Step2Model stepModel = new Step2Model("",2) + .setSampleBased(true) + .setSampleBasedStartRegEx("test-regex") + .setSampleBasedDateOffset(25) + .setSampleBasedDateExtractionRegEx("test-regex-2") + .setSampleBasedDatePattern("test-pattern") + .setSampleBasedDataOffset(6) + .setSampleBasedSampleSizeOffset(sampleSizeOffset); + final SosImportConfiguration importConf = SosImportConfiguration.Factory.newInstance(); + new Step2ModelHandler().handleModel(stepModel, importConf); + + assertThat(importConf.getDataFile().isSetSampleSizeOffset(), is(true)); + assertThat(importConf.getDataFile().getSampleSizeOffset(), is(sampleSizeOffset)); + } + } diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/view/Step2PanelTest.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/view/Step2PanelTest.java index b67c6a50..5b16c120 100644 --- a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/view/Step2PanelTest.java +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/view/Step2PanelTest.java @@ -109,4 +109,15 @@ public void shouldReturnValueIfIsSampleBasedDataOffsetIsSet() { public void shouldReturnOneAsDefaultValueForDataOffset() { assertThat(panel.getSampleBasedDataOffset(), is(1)); } + + @Test + public void shouldReturnValueIfIsSampleBasedSampleSizeOffsetIsSet() { + final int sampleSizeOffset = MAX_ROWS-5; + assertThat(panel.setSampleBasedSampleSizeOffset(sampleSizeOffset).getSampleBasedSampleSizeOffset(), is(sampleSizeOffset)); + } + + @Test + public void shouldReturnOneAsDefaultValueForSampleSizeOffset() { + assertThat(panel.getSampleBasedSampleSizeOffset(), is(1)); + } } From 56d69f2bdd0a640a02ebb10717612bf8d61d59e0 Mon Sep 17 00:00:00 2001 From: EHJ-52n Date: Mon, 28 Apr 2014 10:15:22 +0200 Subject: [PATCH 14/15] Fix issue with multi line tooltips --- .../org/n52/sos/importer/view/i18n/De.java | 14 +++++++------- .../org/n52/sos/importer/view/i18n/En.java | 18 +++++++++++------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java index 269c8498..c75ab7f2 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java @@ -437,13 +437,13 @@ public String step2SampleBasedDateExtractionRegExLabel() { @Override public String step2SampleBasedDateExtractionRegExTooltip() { - return new StringBuffer("Der Reguläre Ausdruck mit dessen Hilfe die\n") - .append("Datumsinformatione aus der Zeile extrahiert werden, die\n") - .append("die entspr. Informationen für die aktuelle Messreihe\n") - .append("enthält. Das Ergebnis des Asudrucks MUSS genau EINE\n") - .append("Gruppe enthalten. Diese Gruppe wird mit Hilfe des\n") - .append("Attributes \"sampleDatePattern\" in einen Zeitstempel\n") - .append("umgewandelt.") + return new StringBuffer("Der Reguläre Ausdruck mit dessen Hilfe die
") + .append("Datumsinformatione aus der Zeile extrahiert werden, die
") + .append("die entspr. Informationen für die aktuelle Messreihe
") + .append("enthält. Das Ergebnis des Asudrucks MUSS genau EINE
") + .append("Gruppe enthalten. Diese Gruppe wird mit Hilfe des
") + .append("Attributes \"sampleDatePattern\" in einen Zeitstempel
") + .append("umgewandelt.") .toString(); } diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java index a138c8eb..6b767cc3 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java @@ -440,11 +440,11 @@ public String step2SampleBasedDateExtractionRegExLabel() { @Override public String step2SampleBasedDateExtractionRegExTooltip() { - return new StringBuffer("The regular expression to extract the date\n") - .append("information from the line containing the date\n") - .append("information of the current sample. The expression MUST\n") - .append("result in ONE group. This group will be parsed to a\n") - .append("java.util.Date using \"sampleDatePattern\" attribute.") + return new StringBuffer("The regular expression to extract the date
") + .append("information from the line containing the date
") + .append("information of the current sample. The expression MUST
") + .append("result in ONE group. This group will be parsed to a
") + .append("java.util.Date using \"sampleDatePattern\" attribute.") .toString(); } @@ -475,7 +475,11 @@ public String step2SampleBasedSampleSizeOffsetLabel() { @Override public String step2SampleBasedSampleSizeOffsetToolTip() { - return "The offset in lines from sample beginning till the line containing the sample size in lines with data."; + return new StringBuffer("The offset in lines from sample beginning") + .append("till
the line containing the sample size in lines ") + .append("with data.") + .toString(); + } } @Override @@ -485,7 +489,7 @@ public String step2SampleBasedStartRegExLabel() { @Override public String step2SampleBasedStartRegExTooltip() { - return "Used to identify the start of a new sample.\nMUST match the whole line."; + return "Used to identify the start of a new sample.
MUST match the whole line."; } @Override From 00b8fc06838e9cf80346890a8012ea4c5fcb8cf9 Mon Sep 17 00:00:00 2001 From: EHJ-52n Date: Mon, 28 Apr 2014 10:15:40 +0200 Subject: [PATCH 15/15] add mvc for sampleSizeRegEx --- .../importer/controller/Step2Controller.java | 8 ++- .../n52/sos/importer/model/Step2Model.java | 12 +++++ .../importer/model/xml/Step2ModelHandler.java | 1 + .../org/n52/sos/importer/view/Step2Panel.java | 51 +++++++++++++++---- .../org/n52/sos/importer/view/i18n/De.java | 13 +++++ .../org/n52/sos/importer/view/i18n/En.java | 12 +++++ .../org/n52/sos/importer/view/i18n/Lang.java | 16 +++++- .../controller/Step2ControllerTest.java | 24 ++++++++- .../sos/importer/model/Step2ModelTest.java | 11 ++++ .../model/xml/Step2ModelHandlerTest.java | 19 +++++++ .../n52/sos/importer/view/Step2PanelTest.java | 11 ++++ 11 files changed, 164 insertions(+), 14 deletions(-) diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java index 68052203..d3375a0f 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/controller/Step2Controller.java @@ -93,7 +93,11 @@ public boolean isFinished() { step2Model.getSampleBasedDatePattern() == null || step2Model.getSampleBasedDatePattern().isEmpty() || step2Model.getSampleBasedDataOffset() < 1 || - step2Model.getSampleBasedSampleSizeOffset() < 1 + step2Model.getSampleBasedSampleSizeOffset() < 1 || + step2Model.getSampleBasedSampleSizeRegEx() == null || + step2Model.getSampleBasedSampleSizeRegEx().isEmpty() || + step2Model.getSampleBasedSampleSizeRegEx().indexOf("(") < 0 || + step2Model.getSampleBasedSampleSizeRegEx().indexOf(")") < 1 )) { return false; } @@ -149,6 +153,7 @@ public void loadSettings() { step2Panel.setSampleBasedDatePattern(step2Model.getSampleBasedDatePattern()); step2Panel.setSampleBasedDataOffset(step2Model.getSampleBasedDataOffset()); step2Panel.setSampleBasedSampleSizeOffset(step2Model.getSampleBasedSampleSizeOffset()); + step2Panel.setSampleBasedSampleSizeRegEx(step2Model.getSampleBasedSampleSizeRegEx()); } } @@ -198,6 +203,7 @@ public void saveSettings() { step2Model.setSampleBasedDatePattern(step2Panel.getSampleBasedDatePattern()); step2Model.setSampleBasedDataOffset(step2Panel.getSampleBasedDataOffset()); step2Model.setSampleBasedSampleSizeOffset(step2Panel.getSampleBasedSampleSizeOffset()); + step2Model.setSampleBasedSampleSizeRegEx(step2Panel.getSampleBasedSampleSizeRegEx()); } step2Panel = null; diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/Step2Model.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/Step2Model.java index b084eecf..3fd357fa 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/Step2Model.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/Step2Model.java @@ -57,6 +57,8 @@ public class Step2Model implements StepModel { private int sampleSizeOffset = 0; + private String sampleBasedSampleSizeRegEx = ""; + public Step2Model(final String csvFileContent, final int csvFileRowCount) { this.csvFileContent = csvFileContent; @@ -203,4 +205,14 @@ public int getSampleBasedSampleSizeOffset() { return sampleSizeOffset; } + public Step2Model setSampleBasedSampleSizeRegEx(final String sampleBasedSampleSizeRegEx) { + this.sampleBasedSampleSizeRegEx = sampleBasedSampleSizeRegEx; + return this; + } + + public String getSampleBasedSampleSizeRegEx() { + return sampleBasedSampleSizeRegEx; + } + + } \ No newline at end of file diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/xml/Step2ModelHandler.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/xml/Step2ModelHandler.java index 6488c80e..6fc68279 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/xml/Step2ModelHandler.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/model/xml/Step2ModelHandler.java @@ -80,6 +80,7 @@ public void handleModel(final Step2Model stepModel, dataFile.setSampleDatePattern(stepModel.getSampleBasedDatePattern()); dataFile.setSampleDataOffset(stepModel.getSampleBasedDataOffset()); dataFile.setSampleSizeOffset(stepModel.getSampleBasedSampleSizeOffset()); + dataFile.setSampleSizeRegEx(stepModel.getSampleBasedSampleSizeRegEx()); } } diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java index 9ec94378..0ff056c1 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/Step2Panel.java @@ -91,13 +91,17 @@ public class Step2Panel extends JPanel { private int firstLineWithDataTmp = -1; private JCheckBox isSampleBasedCheckBox; + private JPanel startRegExPanel; private JTextField startRegExTF; + private JPanel dateOffsetPanel; private JSpinner dateOffset; private SpinnerNumberModel dateOffsetModel; + private JTextField dateExtractionRegExTF; private JPanel dateExtractionRegExPanel; + private JTextField datePatternTF; private JPanel datePatternPanel; @@ -109,6 +113,9 @@ public class Step2Panel extends JPanel { private JSpinner sampleSizeOffset; private JPanel sampleSizeOffsetPanel; + private JTextField sampleSizeRegExTF; + private JPanel sampleSizeRegExPanel; + public Step2Panel(final int csvFileRowCount) { super(); this.csvFileRowCount = csvFileRowCount; @@ -150,6 +157,30 @@ private void addElementsForSampleBasedFiles(final JPanel csvSettingsPanel, addDatePattern(csvSettingsPanel, gridY++); addDataOffset(csvSettingsPanel, gridY++); addSampleSizeOffset(csvSettingsPanel, gridY++); + addSampleSizeRegEx(csvSettingsPanel, gridY++); + } + + private void setSampleBasedElementsEnabled(final boolean state) { + startRegExPanel.setVisible(state); + dateOffsetPanel.setVisible(state); + dateExtractionRegExPanel.setVisible(state); + datePatternPanel.setVisible(state); + dataOffsetPanel.setVisible(state); + sampleSizeOffsetPanel.setVisible(state); + sampleSizeRegExPanel.setVisible(state); + firstDataJS.setEnabled(!state); + } + + private void addSampleSizeRegEx(final JPanel csvSettingsPanel, + final int gridY) { + sampleSizeRegExTF = new JTextField(28); + sampleSizeRegExPanel = new JPanel(); + sampleSizeRegExPanel.setToolTipText(Lang.l().step2SampleBasedSampleSizeRegExTooltip()); + sampleSizeRegExPanel.setLayout(new GridLayout(2, 1)); + sampleSizeRegExPanel.add(new JLabel(Lang.l().step2SampleBasedSampleSizeRegExLabel() + ":")); + sampleSizeRegExPanel.add(sampleSizeRegExTF); + sampleSizeRegExPanel.setVisible(false); + csvSettingsPanel.add(sampleSizeRegExPanel, simpleConstraints(gridY)); } private void addSampleSizeOffset(final JPanel csvSettingsPanel, @@ -251,16 +282,6 @@ public void actionPerformed(final ActionEvent e) { csvSettingsPanel.add(isSampleBasedFilePanel, simpleConstraints(gridY)); } - private void setSampleBasedElementsEnabled(final boolean state) { - startRegExPanel.setVisible(state); - dateOffsetPanel.setVisible(state); - dateExtractionRegExPanel.setVisible(state); - datePatternPanel.setVisible(state); - dataOffsetPanel.setVisible(state); - sampleSizeOffsetPanel.setVisible(state); - firstDataJS.setEnabled(!state); - } - private void addStartRegEx(final JPanel csvSettingsPanel, final int gridY) { startRegExTF = new JTextField(28); @@ -617,4 +638,14 @@ public Step2Panel setSampleBasedSampleSizeOffset(final int sampleSizeOffset) { return this; } + public String getSampleBasedSampleSizeRegEx() { + return sampleSizeRegExTF.getText(); + } + + public Step2Panel setSampleBasedSampleSizeRegEx(final String sampleBasedSampleSizeRegEx) { + sampleSizeRegExTF.setText(sampleBasedSampleSizeRegEx); + return this; + } + + } diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java index c75ab7f2..4c86c0bd 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/De.java @@ -477,6 +477,19 @@ public String step2SampleBasedSampleSizeOffsetToolTip() { return "Der Abstand ziwschem dem Start einer Messreihe und der Zeile mit der Anzahl der Zeilen in der aktuellen Reihe."; } + @Override + public String step2SampleBasedSampleSizeRegExLabel() { + return "Regulärer Ausdruck \"Messreihengröße\""; + } + + @Override + public String step2SampleBasedSampleSizeRegExTooltip() { + return new StringBuffer("Wird benutzt um die Größe der aktuellen Messreihe aus der Zeile") + .append(" zu extrahieren.
Das Ergebnis der Zeile muss EINE Gruppe sein,
") + .append("die in eine Zahl umgewandelt werden kann.") + .toString(); + } + @Override public String step2SampleBasedStartRegExLabel() { return "Regulärer Ausdruck \"Beginn der Messreihe\""; diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java index 6b767cc3..8173137a 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/En.java @@ -480,6 +480,18 @@ public String step2SampleBasedSampleSizeOffsetToolTip() { .append("with data.") .toString(); } + + @Override + public String step2SampleBasedSampleSizeRegExLabel() { + return "Regular Expression \"Sample Size\""; + } + + @Override + public String step2SampleBasedSampleSizeRegExTooltip() { + return new StringBuffer("The regular expression to extract the sample size.
") + .append("The regular expression MUST result in ONE group
") + .append("which contains an integer value.") + .toString(); } @Override diff --git a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/Lang.java b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/Lang.java index 7f09a193..565553af 100644 --- a/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/Lang.java +++ b/52n-sos-importer-core/src/main/java/org/n52/sos/importer/view/i18n/Lang.java @@ -463,6 +463,18 @@ public String sos() { */ public abstract String step2SampleBasedSampleSizeOffsetToolTip(); + /** + * @return Regular Expression "Sample Size" + */ + public abstract String step2SampleBasedSampleSizeRegExLabel(); + + /** + * @return The regular expression to extract the sample size. The regular + * expression MUST result in ONE group which contains an + * integer value. + */ + public abstract String step2SampleBasedSampleSizeRegExTooltip(); + /** * * @return Regular Expression "Sample Start" @@ -619,12 +631,10 @@ public String sos() { * */ public abstract String step4bInfoNotMeasuredValue(); - /** * @return " already set for this " */ public abstract String step4bInfoResourceAlreadySetText(); - /** * @param resource resource.className already set for this En.measuredValue(). * @return @@ -698,11 +708,13 @@ public String step4bInfoResoureAlreadySet(final Resource resource) { * @return Step 6b: Add missing metadata */ public abstract String step6bDescription(); + /** * Replacements: Resource → Orientation * @return <html>What is the <u>Constants.STRING_REPLACER</u> for the marked measured value Constants.STRING_REPLACER?</html> */ public abstract String step6bModelDescription(); + /** * @return Please select the columns to generate the name.
* \nMultiple columns could be selected. diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/controller/Step2ControllerTest.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/controller/Step2ControllerTest.java index 232bde65..2d48451e 100644 --- a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/controller/Step2ControllerTest.java +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/controller/Step2ControllerTest.java @@ -132,6 +132,27 @@ public void shouldReturnFalseIfSampleSizeOffsetIsMissing() { assertThat(controller.isFinished(), is(false)); } + @Test + public void shouldReturnFalseIfSampleSizeRegExIsMissing() { + ((Step2Model)controller.getModel()) + .setColumnSeparator(",") + .setCommentIndicator("#") + .setDecimalSeparator('.') + .setTextQualifier("\"") + .setSampleBased(true) + .setSampleBasedStartRegEx("test-regex") + .setSampleBasedDateOffset(5) + .setSampleBasedDateExtractionRegEx("(test)-regex-2") + .setSampleBasedDatePattern("test-pattern") + .setSampleBasedDataOffset(6) + .setSampleBasedSampleSizeOffset(7); + controller.loadSettings(); + assertThat(controller.isFinished(), is(false)); + ((Step2Model)controller.getModel()).setSampleBasedSampleSizeRegEx("test-regex"); + controller.loadSettings(); + assertThat(controller.isFinished(), is(false)); + } + @Test public void shouldReturnTrueIfSampleBasedValuesAreSet() { ((Step2Model)controller.getModel()) @@ -145,7 +166,8 @@ public void shouldReturnTrueIfSampleBasedValuesAreSet() { .setSampleBasedDateExtractionRegEx("(test)-regex2-with-one-group") .setSampleBasedDatePattern("date-pattern") .setSampleBasedDataOffset(6) - .setSampleBasedSampleSizeOffset(7); + .setSampleBasedSampleSizeOffset(7) + .setSampleBasedSampleSizeRegEx("(test-regex)-with-one-group"); // TODO extend with other sample based parameters controller.loadSettings(); assertThat(controller.isFinished(), is(true)); diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/Step2ModelTest.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/Step2ModelTest.java index d8b5d592..83608c06 100644 --- a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/Step2ModelTest.java +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/Step2ModelTest.java @@ -116,4 +116,15 @@ public void shouldReturnValueIfIsSampleBasedSampleSizeOffsetIsSet() { public void shouldReturnZeroAsDefaultValueForSampleBasedSampleSizeOffset() { assertThat(model.getSampleBasedSampleSizeOffset(), is(0)); } + + @Test + public void shouldReturnStringIfIsSampleBasedSampleSizeRegExIsSet() { + final String sampleBasedSampleSizeRegEx = "test-regex"; + assertThat(model.setSampleBasedSampleSizeRegEx(sampleBasedSampleSizeRegEx).getSampleBasedSampleSizeRegEx(), is(sampleBasedSampleSizeRegEx)); + } + + @Test + public void shouldReturnEmptyStringAsDefaultValueForSampleBasedSampleSizeRegEx() { + assertThat(model.getSampleBasedSampleSizeRegEx(), is("")); + } } diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step2ModelHandlerTest.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step2ModelHandlerTest.java index e589efee..f04adf9f 100644 --- a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step2ModelHandlerTest.java +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/model/xml/Step2ModelHandlerTest.java @@ -128,4 +128,23 @@ public void shouldSetSampleBasedSampleSizeOffset() { assertThat(importConf.getDataFile().getSampleSizeOffset(), is(sampleSizeOffset)); } + @Test + public void shouldSetSampleBasedSampleSizeRegEx() { + final String sampleSizeRegEx = "test-regex"; + final Step2Model stepModel = new Step2Model("",2) + .setSampleBased(true) + .setSampleBasedStartRegEx("test-regex") + .setSampleBasedDateOffset(25) + .setSampleBasedDateExtractionRegEx("test-regex-2") + .setSampleBasedDatePattern("test-pattern") + .setSampleBasedDataOffset(6) + .setSampleBasedSampleSizeOffset(42) + .setSampleBasedSampleSizeRegEx(sampleSizeRegEx); + final SosImportConfiguration importConf = SosImportConfiguration.Factory.newInstance(); + new Step2ModelHandler().handleModel(stepModel, importConf); + + assertThat(importConf.getDataFile().isSetSampleSizeRegEx(), is(true)); + assertThat(importConf.getDataFile().getSampleSizeRegEx(), is(sampleSizeRegEx)); + } + } diff --git a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/view/Step2PanelTest.java b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/view/Step2PanelTest.java index 5b16c120..d0b2de99 100644 --- a/52n-sos-importer-core/src/test/java/org/n52/sos/importer/view/Step2PanelTest.java +++ b/52n-sos-importer-core/src/test/java/org/n52/sos/importer/view/Step2PanelTest.java @@ -120,4 +120,15 @@ public void shouldReturnValueIfIsSampleBasedSampleSizeOffsetIsSet() { public void shouldReturnOneAsDefaultValueForSampleSizeOffset() { assertThat(panel.getSampleBasedSampleSizeOffset(), is(1)); } + + @Test + public void shouldReturnEmptyStringAsDefaultValueForSampleBasedSampleSizeRegEx() { + assertThat(panel.getSampleBasedSampleSizeRegEx(), is("")); + } + + @Test + public void shouldReturnStringIfIsSampleBasedSampleSizeRegExIsSet() { + final String sampleSizeRegEx = "test-regex"; + assertThat(panel.setSampleBasedSampleSizeRegEx(sampleSizeRegEx).getSampleBasedSampleSizeRegEx(), is(sampleSizeRegEx)); + } }