Skip to content

Commit

Permalink
feat: add GUI parameter to select date formatter for the Excel importer
Browse files Browse the repository at this point in the history
Add a combo box with different patterns for the date formatter. This pattern is then used when importing cells of type Date.

ING-4165
  • Loading branch information
emanuelaepure10 committed Jan 15, 2024
1 parent 1f2b804 commit b32c689
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,17 @@

package eu.esdihumboldt.hale.io.csv.ui;

import java.util.Arrays;
import java.util.List;

import javax.xml.namespace.QName;

import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ComboViewer;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
Expand Down Expand Up @@ -51,6 +57,7 @@ public class TypeSelectionPage extends InstanceReaderConfigurationPage implement
private Spinner skipNlinesSpinner;
private Label setTypeLabel;
private Label skipNlinesLabels;
private ComboViewer dateFormatterCombo;

/**
* default constructor
Expand Down Expand Up @@ -122,16 +129,36 @@ public void selectionChanged(SelectionChangedEvent event) {
skipNlinesSpinner.setIncrement(1);
skipNlinesSpinner.setPageIncrement(10);

// create date formatter combo
Label dateFormatterLabel = new Label(page, SWT.NONE);
dateFormatterLabel.setText("Format for imported date values");
dateFormatterCombo = new ComboViewer(page, SWT.READ_ONLY);
dateFormatterCombo.setContentProvider(ArrayContentProvider.getInstance());
List<String> list = createDatePatternsList();
dateFormatterCombo.setInput(list);
dateFormatterCombo.setSelection(new StructuredSelection(list.get(0)));

page.pack();

setPageComplete(false);
}

private List<String> createDatePatternsList() {
return Arrays.asList(
// Standard date formats
"yyyy-MM-dd", "yy-MM-dd", "dd-MM-yyyy", "MM-dd-yyyy", "yyyy/MM/dd", "dd/MM/yyyy",
"dd/MMM/yyyy", "MM/dd/yyyy", "yyyy.MM.dd", "dd.MM.yyyy", "MM.dd.yyyy", "yyyyMMdd",
// Custom date format
"MMMM d, yyyy");
}

@Override
public boolean updateConfiguration(InstanceReader provider) {

provider.setParameter(CommonSchemaConstants.PARAM_SKIP_N_LINES,
Value.of(skipNlinesSpinner.getSelection()));
provider.setParameter(CommonSchemaConstants.PARAM_DATE_FORMATTER,
Value.of(dateFormatterCombo.getSelection()));
if (sel.getSelectedObject() != null) {
QName name = sel.getSelectedObject().getName();
String param_name = name.toString();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,8 @@ else if (skipType) {
}

// read dateFormat
String dateFormatString = reader.getParameter(PARAMETER_DATE_FORMAT).as(String.class);
String dateFormatString = reader.getParameter(ReaderSettings.PARAMETER_DATE_FORMAT)
.as(String.class);

// apply to all sheets as default
for (SheetInfo sheet : sheets) {
Expand Down

0 comments on commit b32c689

Please sign in to comment.