544 lines
18 KiB
Java
544 lines
18 KiB
Java
package org.gcube.portlets.user.td.unionwizardwidget.client;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.HashMap;
|
|
|
|
import org.gcube.portlets.user.td.gwtservice.client.rpc.TDGWTServiceAsync;
|
|
import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTSessionExpiredException;
|
|
import org.gcube.portlets.user.td.gwtservice.shared.tr.ColumnData;
|
|
import org.gcube.portlets.user.td.gwtservice.shared.tr.union.UnionColumnsMapping;
|
|
import org.gcube.portlets.user.td.unionwizardwidget.client.custom.IconButton;
|
|
import org.gcube.portlets.user.td.unionwizardwidget.client.properties.ColumnDataProperties;
|
|
import org.gcube.portlets.user.td.unionwizardwidget.client.resources.UnionResourceBundle;
|
|
import org.gcube.portlets.user.td.unionwizardwidget.client.utils.UtilsGXT3;
|
|
import org.gcube.portlets.user.td.widgetcommonevent.client.event.SessionExpiredEvent;
|
|
import org.gcube.portlets.user.td.widgetcommonevent.client.type.SessionExpiredType;
|
|
import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId;
|
|
import org.gcube.portlets.user.td.widgetcommonevent.shared.tr.column.ColumnDataType;
|
|
import org.gcube.portlets.user.td.wizardwidget.client.dataresource.ResourceBundle;
|
|
|
|
import com.allen_sauer.gwt.log.client.Log;
|
|
import com.google.gwt.core.client.GWT;
|
|
import com.google.gwt.event.dom.client.ClickEvent;
|
|
import com.google.gwt.event.dom.client.ClickHandler;
|
|
import com.google.gwt.event.logical.shared.SelectionEvent;
|
|
import com.google.gwt.event.logical.shared.SelectionHandler;
|
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
|
import com.sencha.gxt.cell.core.client.form.ComboBoxCell.TriggerAction;
|
|
import com.sencha.gxt.core.client.dom.ScrollSupport.ScrollMode;
|
|
import com.sencha.gxt.core.client.util.Margins;
|
|
import com.sencha.gxt.data.shared.ListStore;
|
|
import com.sencha.gxt.widget.core.client.ContentPanel;
|
|
import com.sencha.gxt.widget.core.client.container.BoxLayoutContainer.BoxLayoutData;
|
|
import com.sencha.gxt.widget.core.client.container.BoxLayoutContainer.BoxLayoutPack;
|
|
import com.sencha.gxt.widget.core.client.container.HBoxLayoutContainer;
|
|
import com.sencha.gxt.widget.core.client.container.HBoxLayoutContainer.HBoxLayoutAlign;
|
|
import com.sencha.gxt.widget.core.client.container.ResizeContainer;
|
|
import com.sencha.gxt.widget.core.client.container.SimpleContainer;
|
|
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
|
|
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData;
|
|
import com.sencha.gxt.widget.core.client.form.ComboBox;
|
|
import com.sencha.gxt.widget.core.client.form.FieldLabel;
|
|
|
|
/**
|
|
*
|
|
* @author "Giancarlo Panichi" email: <a
|
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
|
*
|
|
*/
|
|
public class ColumnMappingPanel extends ContentPanel {
|
|
|
|
private static final String COMBOWIDTH = "200px";
|
|
// private static final String COLUMNLABELWIDTH = "120px";
|
|
protected ResourceBundle res;
|
|
protected ColumnMappingCard parent;
|
|
protected VerticalLayoutContainer vert;
|
|
protected ArrayList<ColumnData> sourceColumns;
|
|
protected ArrayList<ColumnData> unionColumns;
|
|
protected ResizeContainer thisPanel;
|
|
|
|
protected HashMap<ColumnData, ColumnData> columnMap;
|
|
protected ArrayList<UnionColumnsMapping> listUnionColumnsMapping;
|
|
|
|
protected String itemIdSourceColumn = "itemIdSourceColumn";
|
|
protected String itemIdUnionColumn = "itemIdUnionColumn";
|
|
protected String itemIdLabelColumn = "itemIdLabelColumn";
|
|
protected String itemIdBtnAdd = "itemIdBtnAdd";
|
|
protected String itemIdBtnDel = "itemIdBtnDel";
|
|
|
|
/**
|
|
*
|
|
* @param parent
|
|
* @param res
|
|
*/
|
|
public ColumnMappingPanel(ColumnMappingCard parent, ResourceBundle res) {
|
|
super();
|
|
this.res = res;
|
|
this.parent = parent;
|
|
thisPanel = this;
|
|
|
|
Log.debug("ColumnMappingPanel");
|
|
init();
|
|
retrieveSourceColumns();
|
|
}
|
|
|
|
protected void init() {
|
|
setHeaderVisible(false);
|
|
// setBodyBorder(false);
|
|
setBodyStyle("backgroundColor:#DFE8F6;");
|
|
// new Resizable(this, Dir.E, Dir.SE, Dir.S);
|
|
// Important: fixed rendering of widgets
|
|
forceLayoutOnResize = true;
|
|
}
|
|
|
|
protected void create() {
|
|
|
|
SimpleContainer container = new SimpleContainer();
|
|
|
|
vert = new VerticalLayoutContainer();
|
|
vert.setScrollMode(ScrollMode.AUTO);
|
|
vert.setAdjustForScroll(true);
|
|
container.add(vert);
|
|
|
|
setColumnMap();
|
|
|
|
/*
|
|
* FieldLabel columnLabel = new FieldLabel(null, "Column Label");
|
|
* columnLabel.getElement().applyStyles("font-weight:bold");
|
|
* columnLabel.setWidth(COLUMNLABELWIDTH);
|
|
* columnLabel.setLabelSeparator("");
|
|
*/
|
|
|
|
String currentTRLabel = parent.unionSession.getCurrentTabularResource()
|
|
.getName();
|
|
FieldLabel sourceColumnLabel = new FieldLabel(null, currentTRLabel);
|
|
sourceColumnLabel.getElement().applyStyles("font-weight:bold");
|
|
sourceColumnLabel.setWidth(COMBOWIDTH);
|
|
sourceColumnLabel.setLabelSeparator("");
|
|
|
|
String unionTRLabel = parent.unionSession.getUnionTabularResource()
|
|
.getName();
|
|
FieldLabel unionColumnLabel = new FieldLabel(null, unionTRLabel);
|
|
unionColumnLabel.getElement().applyStyles("font-weight:bold");
|
|
unionColumnLabel.setWidth(COMBOWIDTH);
|
|
unionColumnLabel.setLabelSeparator("");
|
|
|
|
final HBoxLayoutContainer horiz = new HBoxLayoutContainer();
|
|
horiz.setHBoxLayoutAlign(HBoxLayoutAlign.MIDDLE);
|
|
horiz.setPack(BoxLayoutPack.START);
|
|
|
|
// horiz.add(columnLabel, new BoxLayoutData(new Margins(2, 1, 2, 1)));
|
|
horiz.add(sourceColumnLabel, new BoxLayoutData(new Margins(2, 1, 2, 1)));
|
|
horiz.add(unionColumnLabel, new BoxLayoutData(new Margins(2, 1, 2, 1)));
|
|
|
|
VerticalLayoutContainer vPanel = new VerticalLayoutContainer();
|
|
vPanel.setScrollMode(ScrollMode.AUTO);
|
|
vPanel.setAdjustForScroll(true);
|
|
|
|
vPanel.add(horiz, new VerticalLayoutData(1, -1,
|
|
new Margins(1, 1, 1, 10)));
|
|
vPanel.add(container, new VerticalLayoutData(1, -1, new Margins(1, 1,
|
|
1, 10)));
|
|
|
|
add(vPanel);
|
|
forceLayout();
|
|
|
|
}
|
|
|
|
private void retrieveSourceColumns() {
|
|
TRId trId = parent.unionSession.getTrId();
|
|
TDGWTServiceAsync.INSTANCE.getColumns(trId,
|
|
new AsyncCallback<ArrayList<ColumnData>>() {
|
|
|
|
@Override
|
|
public void onFailure(Throwable caught) {
|
|
if (caught instanceof TDGWTSessionExpiredException) {
|
|
parent.getEventBus()
|
|
.fireEvent(
|
|
new SessionExpiredEvent(
|
|
SessionExpiredType.EXPIREDONSERVER));
|
|
} else {
|
|
Log.debug("Error retrieving source columns: "
|
|
+ caught.getLocalizedMessage());
|
|
UtilsGXT3
|
|
.alert("Error retrieving source columns",
|
|
"Error retrieving source columns on server!");
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onSuccess(ArrayList<ColumnData> result) {
|
|
sourceColumns = result;
|
|
retrieveUnionColumns();
|
|
|
|
}
|
|
});
|
|
|
|
}
|
|
|
|
private void retrieveUnionColumns() {
|
|
TRId trId = parent.unionSession.getUnionTabularResource().getTrId();
|
|
TDGWTServiceAsync.INSTANCE.getColumns(trId,
|
|
new AsyncCallback<ArrayList<ColumnData>>() {
|
|
|
|
@Override
|
|
public void onFailure(Throwable caught) {
|
|
if (caught instanceof TDGWTSessionExpiredException) {
|
|
parent.getEventBus()
|
|
.fireEvent(
|
|
new SessionExpiredEvent(
|
|
SessionExpiredType.EXPIREDONSERVER));
|
|
} else {
|
|
Log.debug("Error retrieving union columns: "
|
|
+ caught.getLocalizedMessage());
|
|
UtilsGXT3
|
|
.alert("Error retrieving union columns",
|
|
"Error retrieving union columns on server!");
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onSuccess(ArrayList<ColumnData> result) {
|
|
unionColumns = result;
|
|
create();
|
|
|
|
}
|
|
});
|
|
|
|
}
|
|
|
|
protected void setColumnMap() {
|
|
|
|
final HBoxLayoutContainer horiz = new HBoxLayoutContainer();
|
|
|
|
// Column Label
|
|
/*
|
|
* TextField columnLabel = new TextField();
|
|
* columnLabel.setItemId(itemIdLabelColumn);
|
|
* columnLabel.setAllowBlank(false);
|
|
* columnLabel.setWidth(COLUMNLABELWIDTH);
|
|
*/
|
|
|
|
// Source Combo
|
|
ColumnDataProperties propsSourceColumn = GWT
|
|
.create(ColumnDataProperties.class);
|
|
ListStore<ColumnData> storeComboSourceColumn = new ListStore<ColumnData>(
|
|
propsSourceColumn.id());
|
|
storeComboSourceColumn.addAll(sourceColumns);
|
|
|
|
final ComboBox<ColumnData> comboSourceColumn = new ComboBox<ColumnData>(
|
|
storeComboSourceColumn, propsSourceColumn.label());
|
|
comboSourceColumn.setItemId(itemIdSourceColumn);
|
|
|
|
Log.debug("ComboSourceColumn created");
|
|
|
|
comboSourceColumn.setEmptyText("Select a column...");
|
|
comboSourceColumn.setWidth(COMBOWIDTH);
|
|
comboSourceColumn.setEditable(false);
|
|
comboSourceColumn.setTriggerAction(TriggerAction.ALL);
|
|
|
|
// Union Combo
|
|
ColumnDataProperties propsUnionColumn = GWT
|
|
.create(ColumnDataProperties.class);
|
|
final ListStore<ColumnData> storeComboUnionColumn = new ListStore<ColumnData>(
|
|
propsUnionColumn.id());
|
|
|
|
final ComboBox<ColumnData> comboUnionColumn = new ComboBox<ColumnData>(
|
|
storeComboUnionColumn, propsUnionColumn.label());
|
|
comboUnionColumn.setItemId(itemIdUnionColumn);
|
|
|
|
Log.debug("ComboUnionColumn created");
|
|
|
|
comboUnionColumn.disable();
|
|
comboUnionColumn.setEmptyText("Select a column...");
|
|
comboUnionColumn.setWidth(COMBOWIDTH);
|
|
comboUnionColumn.setEditable(false);
|
|
comboUnionColumn.setTriggerAction(TriggerAction.ALL);
|
|
|
|
final IconButton btnAdd = new IconButton();
|
|
btnAdd.setItemId(itemIdBtnAdd);
|
|
btnAdd.setIcon(UnionResourceBundle.INSTANCE.add());
|
|
btnAdd.addClickHandler(new ClickHandler() {
|
|
|
|
public void onClick(ClickEvent event) {
|
|
Log.debug("Clicked btnAdd");
|
|
addColumnMap();
|
|
thisPanel.forceLayout();
|
|
vert.forceLayout();
|
|
|
|
}
|
|
});
|
|
btnAdd.setVisible(true);
|
|
|
|
final IconButton btnDel = new IconButton();
|
|
btnDel.setItemId(itemIdBtnDel);
|
|
btnDel.setIcon(UnionResourceBundle.INSTANCE.delete());
|
|
btnDel.addClickHandler(new ClickHandler() {
|
|
|
|
public void onClick(ClickEvent event) {
|
|
Log.debug("Clicked btnDel");
|
|
vert.remove(horiz);
|
|
if (vert.getWidgetCount() == 0) {
|
|
setColumnMap();
|
|
} else {
|
|
|
|
}
|
|
thisPanel.forceLayout();
|
|
vert.forceLayout();
|
|
|
|
}
|
|
});
|
|
btnDel.setVisible(false);
|
|
|
|
comboSourceColumn
|
|
.addSelectionHandler(new SelectionHandler<ColumnData>() {
|
|
|
|
@Override
|
|
public void onSelection(SelectionEvent<ColumnData> event) {
|
|
comboUnionColumn.reset();
|
|
storeComboUnionColumn.clear();
|
|
|
|
ColumnData selectedSourceColumn = event
|
|
.getSelectedItem();
|
|
storeComboUnionColumn.clear();
|
|
for (ColumnData col : unionColumns) {
|
|
if (selectedSourceColumn.getDataTypeName()
|
|
.compareTo(ColumnDataType.Text.toString()) == 0
|
|
|| col.getDataTypeName().compareTo(
|
|
ColumnDataType.Text.toString()) == 0) {
|
|
storeComboUnionColumn.add(col);
|
|
} else {
|
|
if ((col.getDataTypeName().compareTo(
|
|
ColumnDataType.Integer.toString()) == 0 && selectedSourceColumn
|
|
.getDataTypeName().compareTo(
|
|
ColumnDataType.Numeric
|
|
.toString()) == 0)
|
|
|| (col.getDataTypeName().compareTo(
|
|
ColumnDataType.Numeric
|
|
.toString()) == 0 && selectedSourceColumn
|
|
.getDataTypeName().compareTo(
|
|
ColumnDataType.Integer
|
|
.toString()) == 0)) {
|
|
storeComboUnionColumn.add(col);
|
|
} else {
|
|
if (col.getDataTypeName().compareTo(selectedSourceColumn
|
|
.getDataTypeName())==0) {
|
|
storeComboUnionColumn.add(col);
|
|
} else {
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
storeComboUnionColumn.commitChanges();
|
|
comboUnionColumn.redraw();
|
|
comboUnionColumn.enable();
|
|
}
|
|
});
|
|
|
|
horiz.setHBoxLayoutAlign(HBoxLayoutAlign.MIDDLE);
|
|
horiz.setPack(BoxLayoutPack.START);
|
|
|
|
// horiz.add(columnLabel, new BoxLayoutData(new Margins(2, 1, 2, 1)));
|
|
horiz.add(comboSourceColumn, new BoxLayoutData(new Margins(2, 1, 2, 1)));
|
|
horiz.add(comboUnionColumn, new BoxLayoutData(new Margins(2, 1, 2, 1)));
|
|
horiz.add(btnAdd, new BoxLayoutData(new Margins(2, 1, 2, 1)));
|
|
horiz.add(btnDel, new BoxLayoutData(new Margins(2, 1, 2, 1)));
|
|
|
|
vert.add(horiz);
|
|
}
|
|
|
|
protected void addColumnMap() {
|
|
|
|
final HBoxLayoutContainer horiz = new HBoxLayoutContainer();
|
|
|
|
// Column Label
|
|
/*
|
|
* TextField columnLabel = new TextField();
|
|
* columnLabel.setItemId(itemIdLabelColumn);
|
|
* columnLabel.setAllowBlank(false);
|
|
* columnLabel.setWidth(COLUMNLABELWIDTH);
|
|
*/
|
|
|
|
// Source Combo
|
|
ColumnDataProperties propsSourceColumn = GWT
|
|
.create(ColumnDataProperties.class);
|
|
ListStore<ColumnData> storeComboSourceColumn = new ListStore<ColumnData>(
|
|
propsSourceColumn.id());
|
|
storeComboSourceColumn.addAll(sourceColumns);
|
|
|
|
final ComboBox<ColumnData> comboSourceColumn = new ComboBox<ColumnData>(
|
|
storeComboSourceColumn, propsSourceColumn.label());
|
|
comboSourceColumn.setItemId(itemIdSourceColumn);
|
|
|
|
Log.debug("ComboSourceColumn created");
|
|
|
|
comboSourceColumn.setEmptyText("Select a column...");
|
|
comboSourceColumn.setWidth(COMBOWIDTH);
|
|
comboSourceColumn.setEditable(false);
|
|
comboSourceColumn.setTriggerAction(TriggerAction.ALL);
|
|
|
|
// Union Combo
|
|
ColumnDataProperties propsUnionColumn = GWT
|
|
.create(ColumnDataProperties.class);
|
|
final ListStore<ColumnData> storeComboUnionColumn = new ListStore<ColumnData>(
|
|
propsUnionColumn.id());
|
|
|
|
final ComboBox<ColumnData> comboUnionColumn = new ComboBox<ColumnData>(
|
|
storeComboUnionColumn, propsUnionColumn.label());
|
|
comboUnionColumn.setItemId(itemIdUnionColumn);
|
|
|
|
Log.debug("ComboUnionColumn created");
|
|
|
|
comboUnionColumn.disable();
|
|
comboUnionColumn.setEmptyText("Select a column...");
|
|
comboUnionColumn.setWidth(COMBOWIDTH);
|
|
comboUnionColumn.setEditable(false);
|
|
comboUnionColumn.setTriggerAction(TriggerAction.ALL);
|
|
|
|
final IconButton btnAdd = new IconButton();
|
|
btnAdd.setItemId(itemIdBtnAdd);
|
|
btnAdd.setIcon(UnionResourceBundle.INSTANCE.add());
|
|
btnAdd.addClickHandler(new ClickHandler() {
|
|
|
|
public void onClick(ClickEvent event) {
|
|
Log.debug("Clicked btnAdd");
|
|
addColumnMap();
|
|
thisPanel.forceLayout();
|
|
vert.forceLayout();
|
|
|
|
}
|
|
});
|
|
btnAdd.setVisible(true);
|
|
|
|
final IconButton btnDel = new IconButton();
|
|
btnDel.setItemId(itemIdBtnDel);
|
|
btnDel.setIcon(UnionResourceBundle.INSTANCE.delete());
|
|
btnDel.addClickHandler(new ClickHandler() {
|
|
|
|
public void onClick(ClickEvent event) {
|
|
Log.debug("Clicked btnDel");
|
|
vert.remove(horiz);
|
|
if (vert.getWidgetCount() == 0) {
|
|
setColumnMap();
|
|
} else {
|
|
|
|
}
|
|
thisPanel.forceLayout();
|
|
vert.forceLayout();
|
|
|
|
}
|
|
});
|
|
btnDel.setVisible(true);
|
|
|
|
comboSourceColumn
|
|
.addSelectionHandler(new SelectionHandler<ColumnData>() {
|
|
|
|
@Override
|
|
public void onSelection(SelectionEvent<ColumnData> event) {
|
|
comboUnionColumn.reset();
|
|
storeComboUnionColumn.clear();
|
|
|
|
ColumnData selectedSourceColumn = event
|
|
.getSelectedItem();
|
|
storeComboUnionColumn.clear();
|
|
for (ColumnData col : unionColumns) {
|
|
if (selectedSourceColumn.getDataTypeName()
|
|
.compareTo(ColumnDataType.Text.toString()) == 0
|
|
|| col.getDataTypeName().compareTo(
|
|
ColumnDataType.Text.toString()) == 0) {
|
|
storeComboUnionColumn.add(col);
|
|
} else {
|
|
if ((col.getDataTypeName().compareTo(
|
|
ColumnDataType.Integer.toString()) == 0 && selectedSourceColumn
|
|
.getDataTypeName().compareTo(
|
|
ColumnDataType.Numeric
|
|
.toString()) == 0)
|
|
|| (col.getDataTypeName().compareTo(
|
|
ColumnDataType.Numeric
|
|
.toString()) == 0 && selectedSourceColumn
|
|
.getDataTypeName().compareTo(
|
|
ColumnDataType.Integer
|
|
.toString()) == 0)) {
|
|
storeComboUnionColumn.add(col);
|
|
} else {
|
|
if (col.getDataTypeName().compareTo(selectedSourceColumn
|
|
.getDataTypeName())==0) {
|
|
storeComboUnionColumn.add(col);
|
|
} else {
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
storeComboUnionColumn.commitChanges();
|
|
comboUnionColumn.redraw();
|
|
comboUnionColumn.enable();
|
|
}
|
|
});
|
|
|
|
horiz.setHBoxLayoutAlign(HBoxLayoutAlign.MIDDLE);
|
|
horiz.setPack(BoxLayoutPack.START);
|
|
|
|
// horiz.add(columnLabel, new BoxLayoutData(new Margins(2, 1, 2, 1)));
|
|
horiz.add(comboSourceColumn, new BoxLayoutData(new Margins(2, 1, 2, 1)));
|
|
horiz.add(comboUnionColumn, new BoxLayoutData(new Margins(2, 1, 2, 1)));
|
|
horiz.add(btnAdd, new BoxLayoutData(new Margins(2, 1, 2, 1)));
|
|
horiz.add(btnDel, new BoxLayoutData(new Margins(2, 1, 2, 1)));
|
|
|
|
vert.add(horiz);
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @return
|
|
*/
|
|
protected ArrayList<UnionColumnsMapping> getSelectedMap() {
|
|
listUnionColumnsMapping = new ArrayList<UnionColumnsMapping>();
|
|
|
|
int lenght = vert.getWidgetCount();
|
|
int i = 0;
|
|
for (; i < lenght; i++) {
|
|
HBoxLayoutContainer h = (HBoxLayoutContainer) vert.getWidget(i);
|
|
if (h != null) {
|
|
/*
|
|
* TextField columnLabelField = (TextField) h
|
|
* .getItemByItemId(itemIdLabelColumn); if (columnLabelField !=
|
|
* null) { String columnLabel =
|
|
* columnLabelField.getCurrentValue(); if (columnLabel != null
|
|
* && !columnLabel.isEmpty()) {
|
|
*/
|
|
@SuppressWarnings("unchecked")
|
|
ComboBox<ColumnData> comboSourceColumn = (ComboBox<ColumnData>) h
|
|
.getItemByItemId(itemIdSourceColumn);
|
|
ColumnData sourceColumn = comboSourceColumn.getCurrentValue();
|
|
if (sourceColumn != null) {
|
|
@SuppressWarnings("unchecked")
|
|
ComboBox<ColumnData> comboUnionColumn = (ComboBox<ColumnData>) h
|
|
.getItemByItemId(itemIdUnionColumn);
|
|
ColumnData unionColumn = comboUnionColumn.getCurrentValue();
|
|
if (unionColumn != null) {
|
|
UnionColumnsMapping colMatch = new UnionColumnsMapping(
|
|
"default", sourceColumn, unionColumn);
|
|
listUnionColumnsMapping.add(colMatch);
|
|
} else {
|
|
Log.debug("Union Column is null");
|
|
}
|
|
} else {
|
|
Log.debug("Source Column is null");
|
|
}
|
|
/*
|
|
* } else { Log.debug("Column Label is null"); } } else {
|
|
* Log.debug("Column Label Field is null"); }
|
|
*/
|
|
} else {
|
|
Log.debug("HorizontalContainer is null");
|
|
}
|
|
}
|
|
|
|
return listUnionColumnsMapping;
|
|
|
|
}
|
|
|
|
}
|