hydrograph.ui.common.util.TransformMappingFeatureUtility.java Source code

Java tutorial

Introduction

Here is the source code for hydrograph.ui.common.util.TransformMappingFeatureUtility.java

Source

/*******************************************************************************
 * Copyright 2017 Capital One Services, LLC and Bitwise, Inc.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * http://www.apache.org/licenses/LICENSE-2.0
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *******************************************************************************/

package hydrograph.ui.common.util;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;

import hydrograph.ui.datastructure.property.FilterProperties;
import hydrograph.ui.datastructure.property.mapping.MappingSheetRow;
import hydrograph.ui.datastructure.property.mapping.TransformMapping;

/**
 * @author Bitwise
 *
 */
public class TransformMappingFeatureUtility {

    public static final TransformMappingFeatureUtility INSTANCE = new TransformMappingFeatureUtility();

    private TransformMappingFeatureUtility() {
    }

    private List<FilterProperties> getObjectReferencePresentInOutputTable(List<FilterProperties> finalSortedList,
            MappingSheetRow mappingSheetRow) {
        List<FilterProperties> listToBeReturn = new ArrayList<>();
        for (FilterProperties filterProperties : mappingSheetRow.getOutputList()) {
            for (FilterProperties innerFilterProperties : finalSortedList) {
                if (filterProperties == innerFilterProperties) {
                    listToBeReturn.add(innerFilterProperties);
                    break;
                }

            }
        }
        return listToBeReturn;
    }

    private void setForegroundColorToBlack(Table inputtable, Table outputTable) {
        for (TableItem tableItem : inputtable.getItems()) {
            tableItem.setForeground(CustomColorRegistry.INSTANCE.getColorFromRegistry(0, 0, 0));
        }
        for (TableItem tableItem : outputTable.getItems()) {
            tableItem.setForeground(CustomColorRegistry.INSTANCE.getColorFromRegistry(0, 0, 0));
        }
    }

    public void highlightInputAndOutputFields(Text text, TableViewer inputFieldTableViewer,
            TableViewer outputFieldViewer, TransformMapping transformMapping,
            List<FilterProperties> finalSortedList) {
        Table inputtable = inputFieldTableViewer.getTable();
        Table outputTable = outputFieldViewer.getTable();

        if (text != null) {
            MappingSheetRow mappingSheetRow = null;
            setForegroundColorToBlack(inputtable, outputTable);
            for (MappingSheetRow mappingSheetRowIterate : transformMapping.getMappingSheetRows()) {
                if (StringUtils.equals(text.getText(), mappingSheetRowIterate.getOperationID())) {
                    mappingSheetRow = mappingSheetRowIterate;
                    break;
                }
            }
            if (mappingSheetRow != null) {
                for (FilterProperties filterProperties : mappingSheetRow.getInputFields()) {
                    for (TableItem tableItem : inputtable.getItems()) {

                        if (StringUtils.equalsIgnoreCase(tableItem.getText(), filterProperties.getPropertyname())) {
                            tableItem.setForeground(CustomColorRegistry.INSTANCE.getColorFromRegistry(0, 128, 255));
                            break;
                        }
                    }
                }
            }
            List<FilterProperties> templist = getObjectReferencePresentInOutputTable(finalSortedList,
                    mappingSheetRow);
            for (FilterProperties filterProperties : mappingSheetRow.getOutputList()) {
                for (TableItem tableItem : outputTable.getItems()) {

                    if (StringUtils.equalsIgnoreCase(tableItem.getText(), filterProperties.getPropertyname())
                            && templist.contains(filterProperties)) {
                        tableItem.setForeground(CustomColorRegistry.INSTANCE.getColorFromRegistry(0, 128, 255));
                        break;
                    }
                }
            }

        } else {
            setForegroundColorToBlack(inputtable, outputTable);
        }
    }

    public List<MappingSheetRow> getActiveMappingSheetRow(List<MappingSheetRow> mappingSheetRows) {
        List<MappingSheetRow> activeMappingSheetRow = new ArrayList<>();
        for (MappingSheetRow mappingSheetRow : mappingSheetRows) {
            if (mappingSheetRow.isActive())
                activeMappingSheetRow.add(mappingSheetRow);
        }
        return activeMappingSheetRow;
    }

    /**
     * This method is used to set cursor position at last row when any field is 
     * deleted from table-viewer
     * 
     * @param tableViewer
     * @param indexes
     * @param gridList
     */
    public void setCursorOnDeleteRow(TableViewer tableViewer, int[] indexes, List<?> gridList) {
        Table table = tableViewer.getTable();
        //highlight after deletion
        if (indexes.length == 1 && gridList.size() > 0) {//only one item is deleted
            if (gridList.size() == 1) {//list contains only one element
                table.select(0);// select the first element
                tableViewer.editElement(tableViewer.getElementAt(0), 0);
            } else if (gridList.size() == indexes[0]) {//deleted last item 
                table.select(gridList.size() - 1);//select the last element which now at the end of the list
                tableViewer.editElement(tableViewer.getElementAt(gridList.size() - 1), 0);
            } else if (gridList.size() > indexes[0]) {//deleted element from middle of the list
                table.select(indexes[0] == 0 ? 0 : (indexes[0] - 1));//select the element from at the previous location
                tableViewer.editElement(tableViewer.getElementAt(indexes[0] == 0 ? 0 : (indexes[0] - 1)), 0);
            }
        } else if (indexes.length >= 2) {//multiple items are selected for deletion
            if (indexes[0] == 0) {//delete from 0 to ...
                if (gridList.size() >= 1) {//list contains only one element
                    table.select(0);//select the remaining element
                    tableViewer.editElement(tableViewer.getElementAt(0), 0);
                }
            } else {//delete started from element other than 0th element
                table.select((indexes[0]) - 1);//select element before the start of selection   
                tableViewer.editElement(tableViewer.getElementAt((indexes[0]) - 1), 0);
            }
        }
    }

    /**
     * This method is used to set cursor position at parameter field when any field is 
     * deleted from table-viewer
     * 
     * @param tableViewer
     * @param indexes
     * @param gridList
     */
    public void setCursorOnDeleteRowForOutputTable(TableViewer tableViewer, int[] indexes,
            List<FilterProperties> gridList) {
        Table table = tableViewer.getTable();
        if (indexes.length == 1 && gridList.size() > 0) {//only one item is deleted
            if (gridList.size() == 1 && ParameterUtil.isParameter(gridList.get(0).getPropertyname())) {//list contains only one element
                table.select(0);// select the first element
                tableViewer.editElement(tableViewer.getElementAt(0), 0);
            } else if (gridList.size() == indexes[0]) {//deleted last item 
                for (int i = gridList.size() - 1; i >= 0; i--) {
                    if (ParameterUtil.isParameter(gridList.get(i).getPropertyname())) {
                        table.select(i);//select the last parameterized element which now at the end of the paramteres list
                        tableViewer.editElement(tableViewer.getElementAt(i), 0);
                        break;
                    }
                }

            } else if (gridList.size() > indexes[0]) {//deleted element from middle of the list

                if (ParameterUtil.isParameter(gridList.get(indexes[0] == 0 ? 0 : (indexes[0])).getPropertyname())) {
                    table.select(indexes[0] == 0 ? 0 : (indexes[0]));
                    tableViewer.editElement(tableViewer.getElementAt(indexes[0] == 0 ? 0 : indexes[0]), 0);
                } else {
                    boolean executed = false;
                    for (int i = indexes[0] + 1; i < gridList.size(); i++) {
                        if (ParameterUtil.isParameter(gridList.get(i).getPropertyname())) {
                            table.select(i);
                            tableViewer.editElement(tableViewer.getElementAt(i), 0);
                            executed = true;
                            break;
                        }
                    }
                    if (!executed) {
                        for (int i = indexes[0] - 1; i >= 0; i--) {
                            if (ParameterUtil.isParameter(gridList.get(i).getPropertyname())) {
                                table.select(i);
                                tableViewer.editElement(tableViewer.getElementAt(i), 0);
                                break;
                            }
                        }
                    }
                }

            }
        } else if (indexes.length >= 2) {//multiple items are selected for deletion
            if (indexes[0] == 0) {//delete from 0 to ...
                for (int i = 0; i < gridList.size(); i++) {
                    if (ParameterUtil.isParameter(gridList.get(i).getPropertyname())) {
                        table.select(i);//select the remaining element
                        tableViewer.editElement(tableViewer.getElementAt(i), 0);
                        break;
                    }
                }
            } else {//delete started from element other than 0th element
                for (int i = indexes[0] - 1; i >= 0; i--) {
                    if (ParameterUtil.isParameter(gridList.get(i).getPropertyname())) {
                        table.select(i);//select element before the start of selection   
                        tableViewer.editElement(tableViewer.getElementAt(i), 0);
                        break;
                    }
                }
            }
        }
    }
}