use of eu.esdihumboldt.hale.common.lookup.impl.LookupTableImpl in project hale by halestudio.
the class CSVLookupReader method execute.
/**
* @see eu.esdihumboldt.hale.common.core.io.impl.AbstractIOProvider#execute(eu.esdihumboldt.hale.common.core.io.ProgressIndicator,
* eu.esdihumboldt.hale.common.core.io.report.IOReporter)
*/
@Override
protected IOReport execute(ProgressIndicator progress, IOReporter reporter) throws IOProviderConfigurationException, IOException {
int keyColumn = getParameter(LookupTableExportConstants.LOOKUP_KEY_COLUMN).as(Integer.class);
int valueColumn = getParameter(LookupTableExportConstants.LOOKUP_VALUE_COLUMN).as(Integer.class);
boolean skipFirst = getParameter(LookupTableExportConstants.PARAM_SKIP_FIRST_LINE).as(Boolean.class);
DefaultCSVLookupReader reader = new DefaultCSVLookupReader();
Map<Value, Value> values = reader.read(getSource().getInput(), getCharset(), CSVUtil.getSep(this), CSVUtil.getQuote(this), CSVUtil.getEscape(this), skipFirst, keyColumn, valueColumn);
lookupTable = new LookupTableInfoImpl((new LookupTableImpl(values)), getName(), getDescription());
reporter.setSuccess(true);
return reporter;
}
use of eu.esdihumboldt.hale.common.lookup.impl.LookupTableImpl in project hale by halestudio.
the class XLSLookupTableReader method execute.
/**
* @see eu.esdihumboldt.hale.common.core.io.impl.AbstractIOProvider#execute(eu.esdihumboldt.hale.common.core.io.ProgressIndicator,
* eu.esdihumboldt.hale.common.core.io.report.IOReporter)
*/
@Override
protected IOReport execute(ProgressIndicator progress, IOReporter reporter) throws IOProviderConfigurationException, IOException {
int keyColumn = getParameter(LookupTableExportConstants.LOOKUP_KEY_COLUMN).as(Integer.class);
int valueColumn = getParameter(LookupTableExportConstants.LOOKUP_VALUE_COLUMN).as(Integer.class);
boolean skipFirst = getParameter(LookupTableExportConstants.PARAM_SKIP_FIRST_LINE).as(Boolean.class);
boolean ignoreEmptyStrings = getParameter(LookupTableExportConstants.PARAM_IGNORE_EMPTY_STRING).as(Boolean.class);
Workbook workbook;
// write xls file
if (getContentType().getId().equals("eu.esdihumboldt.hale.io.xls.xls")) {
workbook = new HSSFWorkbook(getSource().getInput());
} else // write xlsx file
if (getContentType().getId().equals("eu.esdihumboldt.hale.io.xls.xlsx")) {
workbook = new XSSFWorkbook(getSource().getInput());
} else {
reporter.setSuccess(false);
return reporter;
}
DefaultXLSLookupTableReader reader = new DefaultXLSLookupTableReader();
Map<Value, Value> map = reader.read(workbook, skipFirst, keyColumn, valueColumn, ignoreEmptyStrings);
lookupTable = new LookupTableInfoImpl(new LookupTableImpl(map), getName(), getDescription());
reporter.setSuccess(true);
return reporter;
}
use of eu.esdihumboldt.hale.common.lookup.impl.LookupTableImpl in project hale by halestudio.
the class LookupTableTypeTest method testComplexLookupJsonGroovy.
/**
* Test if a lookup table containing only complex values is the same when
* converted to JSON and back again.
*/
@Test
public void testComplexLookupJsonGroovy() {
Map<Value, Value> values2 = createComplexLookup();
LookupTable org2 = new LookupTableImpl(values2);
// converter
LookupTableType ltt = new LookupTableType();
// convert to Json
Object json = ltt.toJson(org2);
System.out.println(new JsonBuilder(json).toString());
// convert back
LookupTable conv = ltt.fromJson(json, null);
checkTable(conv, values2);
}
use of eu.esdihumboldt.hale.common.lookup.impl.LookupTableImpl in project hale by halestudio.
the class LookupTableTypeTest method createComplexLookup.
private Map<Value, Value> createComplexLookup() {
// simple internal table
Map<Value, Value> values = new HashMap<Value, Value>();
values.put(Value.of("a"), Value.of("1"));
values.put(Value.of("b"), Value.of("1"));
LookupTable org = new LookupTableImpl(values);
// external table
Map<Value, Value> values2 = new HashMap<Value, Value>();
values2.put(Value.of("sub"), Value.complex(org));
values2.put(Value.of("c"), Value.of("2"));
return values2;
}
use of eu.esdihumboldt.hale.common.lookup.impl.LookupTableImpl in project hale by halestudio.
the class ClassificationMappingParameterPage method createManualTabControl.
private Control createManualTabControl(Composite tabParent) {
// TODO load occurring value sources
Composite tabContent = new Composite(tabParent, SWT.NONE);
tabContent.setLayout(new GridLayout(1, true));
ToolBar toolBar = new ToolBar(tabContent, SWT.NONE);
toolBar.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
Composite tableContainer = new Composite(tabContent, SWT.NONE);
tableContainer.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
TableColumnLayout layout = new TableColumnLayout();
tableContainer.setLayout(layout);
tableViewer = new TableViewer(tableContainer, SWT.SINGLE | SWT.FULL_SELECTION | SWT.BORDER);
tableViewer.getTable().setLinesVisible(true);
tableViewer.getTable().setHeaderVisible(true);
tableViewer.setContentProvider(ArrayContentProvider.getInstance());
TableViewerColumn sourceColumn = new TableViewerColumn(tableViewer, SWT.NONE);
sourceColumn.getColumn().setText("Source value");
layout.setColumnData(sourceColumn.getColumn(), new ColumnWeightData(1));
sourceColumn.setLabelProvider(new ColumnLabelProvider() {
@Override
public String getText(Object element) {
@SuppressWarnings("unchecked") Entry<Value, Value> entry = (Entry<Value, Value>) element;
return entry.getKey().getStringRepresentation();
}
});
TableViewerColumn targetColumn = new TableViewerColumn(tableViewer, SWT.NONE);
targetColumn.getColumn().setText("Target value");
layout.setColumnData(targetColumn.getColumn(), new ColumnWeightData(1));
targetColumn.setLabelProvider(new StyledCellLabelProvider() {
@Override
public void update(ViewerCell cell) {
@SuppressWarnings("unchecked") Entry<Value, Value> entry = (Entry<Value, Value>) cell.getElement();
if (entry.getValue() == null) {
StyledString styledString = new StyledString("(unmapped)", StyledString.DECORATIONS_STYLER);
cell.setText(styledString.getString());
cell.setStyleRanges(styledString.getStyleRanges());
} else {
cell.setText(entry.getValue().getStringRepresentation());
cell.setStyleRanges(null);
}
super.update(cell);
}
});
tableViewer.setInput(lookupTable.entrySet());
tableViewer.getTable().addMouseListener(new MouseAdapter() {
@Override
public void mouseDoubleClick(MouseEvent e) {
ViewerCell cell = tableViewer.getCell(new Point(e.x, e.y));
if (cell != null) {
@SuppressWarnings("unchecked") Entry<Value, Value> entry = (Entry<Value, Value>) cell.getElement();
Value oldValue;
Value newValue;
if (cell.getColumnIndex() == 0) {
oldValue = entry.getKey();
newValue = selectValue(sourceProperty, sourceEntity, "Edit source value", "Enter a new source value", oldValue.getStringRepresentation());
} else {
oldValue = entry.getValue();
String initialValue = oldValue == null ? null : oldValue.getStringRepresentation();
newValue = selectValue(targetProperty, targetEntity, "Edit target value", "Enter a target value", initialValue);
}
if (newValue == null)
return;
if (cell.getColumnIndex() == 0) {
if (!newValue.equals(oldValue) && lookupTable.containsKey(newValue)) {
showDuplicateSourceWarning(newValue.getStringRepresentation());
} else {
lookupTable.put(newValue, entry.getValue());
lookupTable.remove(oldValue);
tableViewer.refresh();
}
} else {
entry.setValue(newValue);
tableViewer.update(entry, null);
}
}
}
});
final ToolItem valueAdd = new ToolItem(toolBar, SWT.PUSH);
final ToolItem fillValues = new ToolItem(toolBar, SWT.PUSH);
new ToolItem(toolBar, SWT.SEPARATOR);
final ToolItem loadButton = new ToolItem(toolBar, SWT.PUSH);
saveButton = new ToolItem(toolBar, SWT.PUSH);
new ToolItem(toolBar, SWT.SEPARATOR);
final ToolItem valueRemove = new ToolItem(toolBar, SWT.PUSH);
removeAllButton = new ToolItem(toolBar, SWT.PUSH);
valueAdd.setImage(CommonSharedImages.getImageRegistry().get(CommonSharedImages.IMG_ADD));
valueAdd.setToolTipText("Add source value");
valueAdd.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
Value newSource = selectValue(sourceProperty, sourceEntity, "Add source value", "Enter a new source value", null);
if (newSource != null) {
if (lookupTable.containsKey(newSource))
showDuplicateSourceWarning(newSource.getStringRepresentation());
else {
lookupTable.put(newSource, null);
removeAllButton.setEnabled(true);
saveButton.setEnabled(true);
tableViewer.refresh();
}
}
}
});
loadButton.setImage(CommonSharedImages.getImageRegistry().get(CommonSharedImages.IMG_OPEN));
loadButton.setToolTipText("Load classification from file");
loadButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
LookupTableLoadWizard wizard = new LookupTableLoadWizard();
LookupLoadAdvisor advisor = new LookupLoadAdvisor();
wizard.setAdvisor(advisor, null);
Shell shell = Display.getCurrent().getActiveShell();
HaleWizardDialog dialog = new HaleWizardDialog(shell, wizard);
dialog.open();
if (advisor.getLookupTable() != null) {
lookupTable.putAll(advisor.getLookupTable().getTable().asMap());
tableViewer.refresh();
removeAllButton.setEnabled(!lookupTable.isEmpty());
saveButton.setEnabled(!lookupTable.isEmpty());
}
}
});
fillValues.setImage(fillValuesIcon);
fillValues.setToolTipText("Attempt to fill source values with enumerations and occurring values.");
fillValues.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
// first try enumeration
Enumeration<?> enumeration = sourceProperty.getPropertyType().getConstraint(Enumeration.class);
if (enumeration.getValues() != null) {
addSourceValuesIfNew(enumeration.getValues());
}
// then try occurring values
if (!ovs.updateOccurringValues(sourceEntity)) {
// values already there or not possible
addOccurringSourceValues(ovs.getOccurringValues(sourceEntity));
} else {
// job is running, listener will be notified
}
removeAllButton.setEnabled(!lookupTable.isEmpty());
saveButton.setEnabled(!lookupTable.isEmpty());
}
});
saveButton.setImage(CommonSharedImages.getImageRegistry().get(CommonSharedImages.IMG_SAVE));
saveButton.setToolTipText("Save classification to file");
saveButton.setEnabled(false);
saveButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
LookupTableExportWizard wizard = new LookupTableExportWizard();
LookupExportAdvisor advisor = new LookupExportAdvisor(new LookupTableInfoImpl(new LookupTableImpl(lookupTable), "current", "not set"));
wizard.setAdvisor(advisor, null);
Shell shell = Display.getCurrent().getActiveShell();
HaleWizardDialog dialog = new HaleWizardDialog(shell, wizard);
dialog.open();
}
});
valueRemove.setImage(CommonSharedImages.getImageRegistry().get(CommonSharedImages.IMG_REMOVE));
valueRemove.setToolTipText("Remove classification entry");
valueRemove.setEnabled(false);
tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent event) {
valueRemove.setEnabled(!event.getSelection().isEmpty());
saveButton.setEnabled(!event.getSelection().isEmpty());
}
});
valueRemove.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
if (tableViewer.getSelection().isEmpty())
return;
Object element = ((IStructuredSelection) tableViewer.getSelection()).getFirstElement();
@SuppressWarnings("unchecked") Entry<Value, Value> entry = (Entry<Value, Value>) element;
lookupTable.remove(entry.getKey());
tableViewer.refresh();
removeAllButton.setEnabled(!lookupTable.isEmpty());
saveButton.setEnabled(!lookupTable.isEmpty());
}
});
removeAllButton.setImage(CommonSharedImages.getImageRegistry().get(CommonSharedImages.IMG_TRASH));
removeAllButton.setEnabled(false);
removeAllButton.setToolTipText("Remove complete classification");
removeAllButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
lookupTable.clear();
tableViewer.refresh();
removeAllButton.setEnabled(false);
saveButton.setEnabled(false);
}
});
Label desc = new Label(tabContent, SWT.NONE);
desc.setText("Double click on a table cell to change its value.");
return tabContent;
}
Aggregations