diff --git a/plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/StreamProducerPagePreview.java b/plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/StreamProducerPagePreview.java index d5309b947c7598c507ded944de815a8cef2241d6..becab1c5e58e236e8d6b1971a5b898a7ad116f6e 100644 --- a/plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/StreamProducerPagePreview.java +++ b/plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/StreamProducerPagePreview.java @@ -48,6 +48,7 @@ import org.jkiss.dbeaver.tools.transfer.wizard.DataTransferPipe; import org.jkiss.dbeaver.tools.transfer.wizard.DataTransferWizard; import org.jkiss.dbeaver.ui.DBeaverIcons; import org.jkiss.dbeaver.ui.UIUtils; +import org.jkiss.dbeaver.ui.controls.CustomTableEditor; import org.jkiss.dbeaver.ui.dialogs.ActiveWizardPage; import org.jkiss.utils.CommonUtils; @@ -124,6 +125,56 @@ public class StreamProducerPagePreview extends ActiveWizardPage { + refreshPreviewTable(entityMapping); + }); + } + } + + } + } + }; + } mapSash.setWeights(new int[] { 300, 700 } ); @@ -241,7 +292,7 @@ public class StreamProducerPagePreview extends ActiveWizardPage { + try { + IDataTransferProcessor importer = processor.getInstance(); + + DBRProgressMonitor monitor = new DefaultProgressMonitor(mon); + monitor.beginTask("Load preview", 1); + + // Load preview + monitor.subTask("Load import preview"); + if (importer instanceof IStreamDataImporter) { + loadImportPreview(monitor, (IStreamDataImporter)importer, entity, currentProducer); + } + monitor.worked(1); + + monitor.done(); + } catch (Throwable e) { + throw new InvocationTargetException(e); + } + }); + } catch (InvocationTargetException e) { + error = e.getTargetException(); + } catch (InterruptedException e) { + // Ignore + } + Throwable finalError = error; + UIUtils.asyncExec(() -> { + UIUtils.packColumns(previewTable, false); + if (finalError != null) { + DBUserInterface.getInstance().showError("OReview data", "Can't load preview data", finalError); + } + }); + } + private void updateAttributeMappings(StreamProducerSettings.EntityMapping entityMapping) { for (StreamProducerSettings.AttributeMapping am : entityMapping.getAttributeMappings()) { // Create mapping item @@ -277,8 +380,10 @@ public class StreamProducerPagePreview extends ActiveWizardPage processorProperties = getWizard().getSettings().getProcessorProperties(); PreviewConsumer previewConsumer = new PreviewConsumer(settings, entity); @@ -360,11 +464,16 @@ public class StreamProducerPagePreview extends ActiveWizardPage attributeMappings = previewConsumer.getEntityMapping().getAttributeMappings(); for (Object[] row : rows) { String[] strRow = new String[row.length]; + int columnIndex = 0; for (int i = 0; i < attributeMappings.size(); i++) { StreamProducerSettings.AttributeMapping attr = attributeMappings.get(i); - Object value = attr.getTargetValueHandler().getValueFromObject(session, attr.getTargetAttribute(), row[i], false); + if (!attr.isValuable()) { + continue; + } + Object value = attr.getTargetValueHandler().getValueFromObject(session, attr.getTargetAttribute(), row[columnIndex], false); String valueStr = attr.getTargetValueHandler().getValueDisplayString(attr.getTargetAttribute(), value, DBDDisplayFormat.UI); - strRow[i] = valueStr; + strRow[columnIndex] = valueStr; + columnIndex++; } strRows.add(strRow); } @@ -417,11 +526,13 @@ public class StreamProducerPagePreview extends ActiveWizardPage attributes; public PreviewConsumer(StreamProducerSettings settings, DBSEntity sampleObject) { this.settings = settings; this.sampleObject = sampleObject; this.entityMapping = this.settings.getEntityMapping(sampleObject); + this.attributes = entityMapping.getValuableAttributeMappings(); } public StreamProducerSettings.EntityMapping getEntityMapping() { @@ -450,16 +561,15 @@ public class StreamProducerPagePreview extends ActiveWizardPage attrs = entityMapping.getAttributeMappings(); - Object[] row = new Object[attrs.size()]; - for (int i = 0; i < attrs.size(); i++) { + Object[] row = new Object[attributes.size()]; + for (int i = 0; i < attributes.size(); i++) { row[i] = resultSet.getAttributeValue(i); } rows.add(row); diff --git a/plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/StreamProducerSettings.java b/plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/StreamProducerSettings.java index 3a27328e64e8c7ed28660486de93b60d21fa3211..90c5417613257421c2a509dde3cbf608625dddb7 100644 --- a/plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/StreamProducerSettings.java +++ b/plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/StreamProducerSettings.java @@ -59,8 +59,14 @@ public class StreamProducerSettings implements IDataTransferSettings { return attributeMappings; } - public void setAttributeMappings(List attributeMappings) { - this.attributeMappings = attributeMappings; + public List getValuableAttributeMappings() { + List result = new ArrayList<>(); + for (AttributeMapping am : attributeMappings) { + if (am.isValuable()) { + result.add(am); + } + } + return result; } public AttributeMapping getAttributeMapping(DBSEntityAttribute attr) { @@ -193,6 +199,10 @@ public class StreamProducerSettings implements IDataTransferSettings { this.sourceColumn = sourceColumn; } + public boolean isValuable() { + return mappingType == MappingType.IMPORT || mappingType == MappingType.DEFAULT_VALUE; + } + } private Map entityMapping = new HashMap<>(); diff --git a/plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/StreamTransferResultSet.java b/plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/StreamTransferResultSet.java index b603c82048b089fadf6a1552547c5d54b9c55710..87a9ce22fba5763a79d5c3649566a3c5442462e3 100644 --- a/plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/StreamTransferResultSet.java +++ b/plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/StreamTransferResultSet.java @@ -36,12 +36,13 @@ public class StreamTransferResultSet implements DBCResultSet { private StreamProducerSettings.EntityMapping entityMapping; private List metaAttrs; private Object[] streamRow; + private final List attributeMappings; public StreamTransferResultSet(StreamTransferSession session, DBCStatement statement, StreamProducerSettings.EntityMapping entityMapping) { this.session = session; this.statement = statement; this.entityMapping = entityMapping; - List attributeMappings = this.entityMapping.getAttributeMappings(); + this.attributeMappings = this.entityMapping.getValuableAttributeMappings(); this.metaAttrs = new ArrayList<>(attributeMappings.size()); for (int i = 0; i < attributeMappings.size(); i++) { StreamProducerSettings.AttributeMapping attr = attributeMappings.get(i); @@ -65,7 +66,7 @@ public class StreamTransferResultSet implements DBCResultSet { @Override public Object getAttributeValue(int index) throws DBCException { - StreamProducerSettings.AttributeMapping attr = entityMapping.getAttributeMappings().get(index); + StreamProducerSettings.AttributeMapping attr = this.attributeMappings.get(index); StreamDataImporterColumnInfo sourceColumn = attr.getSourceColumn(); if (sourceColumn != null) { return streamRow[sourceColumn.getColumnIndex()];