Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2011 JBoss 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 org.drools.workbench.models.guided.dtable.backend.util;
 
 
 import java.util.List;
 import java.util.Map;
Helper class to upgrade model used for Guided Decision Table. This implementation converts legacy GuidedDecisionTable objects to GuidedDecisionTable52 objects used from Guvnor 5.2 onwards.
 
 @SuppressWarnings("deprecation")
         implements
Convert the legacy Decision Table model to the new

Parameters:
legacyDTModel
Returns:
The new DTModel
 
     public GuidedDecisionTable52 upgradeGuidedDecisionTable legacyDTModel ) {
 
         assertConditionColumnPatternGroupinglegacyDTModel );
 
         GuidedDecisionTable52 newDTModel = new GuidedDecisionTable52();
 
 
         newDTModel.setTableNamelegacyDTModel.tableName );
         newDTModel.setParentNamelegacyDTModel.parentName );
 
         newDTModel.setRowNumberColnew RowNumberCol52() );
         newDTModel.setDescriptionColnew DescriptionCol52() );
 
         //Metadata columns' data-type is implicitly defined in the metadata value. For example
         //a String metadata attribute is: "value", a numerical: 1. No conversion action required
         if ( legacyDTModel.metadataCols != null ) {
             for ( MetadataCol c : legacyDTModel.metadataCols ) {
                 newDTModel.getMetadataCols().addmakeNewColumnc ) );
             }
         }
 
         //Attribute columns' data-type is based upon the attribute name
         if ( legacyDTModel.attributeCols != null ) {
             for ( AttributeCol c : legacyDTModel.attributeCols ) {
                 newDTModel.getAttributeCols().addmakeNewColumnc ) );
             }
         }
 
         //Legacy decision tables did not have Condition field data-types. Set all Condition 
         //fields to a *sensible* default of String (as this matches legacy behaviour).
         List<Pattern52patterns = new ArrayList<Pattern52>();
         Map<StringPattern52uniquePatterns = new HashMap<StringPattern52>();
         if ( legacyDTModel.conditionCols != null ) {
             for ( int i = 0; i < legacyDTModel.conditionCols.size(); i++ ) {
                 ConditionCol c = legacyDTModel.conditionCols.geti );
                 String boundName = c.boundName;
                 Pattern52 p = uniquePatterns.getboundName );
                if ( p == null ) {
                    p = new Pattern52();
                    p.setBoundNameboundName );
                    p.setFactTypec.factType );
                    patterns.addp );
                    uniquePatterns.putboundName,
                                        p );
                }
                if ( p.getFactType() != null && !p.getFactType().equalsc.factType ) ) {
                    throw new IllegalArgumentException"Inconsistent FactTypes for ConditionCols bound to '" + boundName + "' detected." );
                }
                p.getChildColumns().addmakeNewColumnc ) );
            }
            for ( Pattern52 p : patterns ) {
                newDTModel.getConditions().addp );
            }
        }
        //Action columns have a discrete data-type. No conversion action required.
        if ( legacyDTModel.actionCols != null ) {
            for ( ActionCol c : legacyDTModel.actionCols ) {
                newDTModel.getActionCols().addmakeNewColumnc ) );
            }
        }
        //Copy across data
        newDTModel.setData( DataUtilities.makeDataListslegacyDTModel.data ) );
        //Copy the boundName for ActionRetractFactCol into the data of the new Guided Decision Table model
        if ( legacyDTModel.actionCols != null ) {
            final int metaDataColCount = ( legacyDTModel.metadataCols == null ? 0 : legacyDTModel.metadataCols.size() );
            final int attributeColCount = ( legacyDTModel.attributeCols == null ? 0 : legacyDTModel.attributeCols.size() );
            final int conditionColCount = ( legacyDTModel.conditionCols == null ? 0 : legacyDTModel.conditionCols.size() );
            final int DATA_COLUMN_OFFSET = metaDataColCount + attributeColCount + conditionColCount + .;
            for ( int iCol = 0; iCol < legacyDTModel.actionCols.size(); iCol++ ) {
                ActionCol lc = legacyDTModel.actionCols.getiCol );
                if ( lc instanceof ActionRetractFactCol) {
                    String boundName = ( (ActionRetractFactCollc ).;
                    for ( List<DTCellValue52row : newDTModel.getData() ) {
                        row.getDATA_COLUMN_OFFSET + iCol ).setStringValueboundName );
                    }
                }
            }
        }
        return newDTModel;
    }
    // Ensure Condition columns are grouped by pattern (as we merge equal
    // patterns in the UI). This operates on the original Model data and
    // therefore should be called before the Decision Table's internal data
    // representation (i.e. DynamicData, DynamicDataRow and CellValue) is
    // populated
    private void assertConditionColumnPatternGroupingGuidedDecisionTable model ) {
        class ConditionColData {
            ConditionCol col;
            String[] data;
        }
        // Offset into Model's data array
        final int metaDataColCount = ( model.metadataCols == null ? 0 : model.metadataCols.size() );
        final int attributeColCount = ( model.attributeCols == null ? 0 : model.attributeCols.size() );
        final int DATA_COLUMN_OFFSET = metaDataColCount + attributeColCount + .;
        Map<StringList<ConditionColData>> uniqueGroups = new TreeMap<StringList<ConditionColData>>();
        List<List<ConditionColData>> groups = new ArrayList<List<ConditionColData>>();
        final int DATA_ROWS = model.data.length;
        // Copy conditions and related data into temporary groups
        for ( int iCol = 0; iCol < model.conditionCols.size(); iCol++ ) {
            ConditionCol col = model.conditionCols.getiCol );
            String pattern = col.boundName + "";
            List<ConditionColDatagroupCols = uniqueGroups.getpattern );
            if ( groupCols == null ) {
                groupCols = new ArrayList<ConditionColData>();
                groups.addgroupCols );
                uniqueGroups.putpattern,
                                  groupCols );
            }
            // Make a ConditionColData object
            ConditionColData ccd = new ConditionColData();
            int colIndex = DATA_COLUMN_OFFSET + iCol;
            ccd.data = new StringDATA_ROWS ];
            for ( int iRow = 0; iRow < DATA_ROWSiRow++ ) {
                String[] row = model.dataiRow ];
                ccd.dataiRow ] = rowcolIndex ];
            }
            ccd.col = col;
            groupCols.addccd );
        }
        // Copy temporary groups back into the model
        int iCol = 0;
        model.conditionCols.clear();
        for ( List<ConditionColDatame : groups ) {
            for ( ConditionColData ccd : me ) {
                model.conditionCols.addccd.col );
                int colIndex = DATA_COLUMN_OFFSET + iCol;
                for ( int iRow = 0; iRow < DATA_ROWSiRow++ ) {
                    String[] row = model.dataiRow ];
                    rowcolIndex ] = ccd.dataiRow ];
                }
                iCol++;
            }
        }
    }
    private AttributeCol52 makeNewColumnAttributeCol c ) {
        AttributeCol52 nc = new AttributeCol52();
        nc.setAttributec.attr );
        nc.setDefaultValuenew DTCellValue52c.defaultValue ) );
        nc.setHideColumnc.hideColumn );
        nc.setReverseOrderc.reverseOrder );
        nc.setUseRowNumberc.useRowNumber );
        nc.setWidthc.width );
        return nc;
    }
    private MetadataCol52 makeNewColumnMetadataCol c ) {
        MetadataCol52 nc = new MetadataCol52();
        nc.setDefaultValuenew DTCellValue52c.defaultValue ) );
        nc.setHideColumnc.hideColumn );
        nc.setMetadatac.attr );
        nc.setWidthc.width );
        return nc;
    }
    private ConditionCol52 makeNewColumnConditionCol c ) {
        ConditionCol52 nc = new ConditionCol52();
        nc.setConstraintValueTypec.constraintValueType );
        nc.setDefaultValuenew DTCellValue52c.defaultValue ) );
        nc.setFactFieldc.factField );
        nc.setFieldType. );
        nc.setHeaderc.header );
        nc.setHideColumnc.hideColumn );
        nc.setOperatorc.operator );
        nc.setValueListc.valueList );
        nc.setWidthc.width );
        return nc;
    }
    private ActionCol52 makeNewColumnActionCol c ) {
        if ( c instanceof ActionInsertFactCol) {
            return makeNewColumn( (ActionInsertFactColc );
        } else if ( c instanceof ActionRetractFactCol ) {
            return makeNewColumn( (ActionRetractFactColc );
        } else if ( c instanceof ActionSetFieldCol) {
            return makeNewColumn( (ActionSetFieldColc );
        }
        ActionCol52 nc = new ActionCol52();
        nc.setDefaultValuenew DTCellValue52c.defaultValue ) );
        nc.setHeaderc.header );
        nc.setHideColumnc.hideColumn );
        nc.setWidthc.width );
        return nc;
    }
        ActionInsertFactCol52 nc = new ActionInsertFactCol52();
        nc.setBoundNamec.boundName );
        nc.setDefaultValuenew DTCellValue52c.defaultValue ) );
        nc.setFactFieldc.factField );
        nc.setFactTypec.factType );
        nc.setHeaderc.header );
        nc.setHideColumnc.hideColumn );
        nc.setTypec.type );
        nc.setValueListc.valueList );
        nc.setWidthc.width );
        return nc;
    }
        ActionRetractFactCol52 nc = new ActionRetractFactCol52();
        nc.setDefaultValuenew DTCellValue52c.defaultValue ) );
        nc.setHeaderc.header );
        nc.setHideColumnc.hideColumn );
        nc.setWidthc.width );
        return nc;
    }
        ActionSetFieldCol52 nc = new ActionSetFieldCol52();
        nc.setBoundNamec.boundName );
        nc.setDefaultValuenew DTCellValue52c.defaultValue ) );
        nc.setFactFieldc.factField );
        nc.setHeaderc.header );
        nc.setHideColumnc.hideColumn );
        nc.setTypec.type );
        nc.setUpdatec.update );
        nc.setValueListc.valueList );
        nc.setWidthc.width );
        return nc;
    }
New to GrepCode? Check out our FAQ X