/* * Copyright 2012 Red Hat, Inc. and/or its affiliates. * * 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.screens.dtablexls.backend.server.conversion.builders; import org.drools.decisiontable.parser.ActionType; import org.drools.decisiontable.parser.RuleSheetParserUtil; import org.drools.workbench.models.guided.dtable.shared.conversion.ConversionMessageType; import org.drools.workbench.models.guided.dtable.shared.conversion.ConversionResult; import org.drools.workbench.models.guided.dtable.shared.model.AttributeCol52; import org.drools.workbench.models.guided.dtable.shared.model.DTCellValue52; import org.drools.workbench.models.guided.dtable.shared.model.GuidedDecisionTable52; /** * Builder for Salience Attribute columns */ public class GuidedDecisionTableSalienceBuilder extends AbstractGuidedDecisionTableAttributeBuilder { private final boolean isSequential; public GuidedDecisionTableSalienceBuilder( final int row, final int column, final boolean isSequential, final ConversionResult conversionResult ) { super( row, column, ActionType.Code.SALIENCE, conversionResult ); this.isSequential = isSequential; } @Override public void populateDecisionTable( final GuidedDecisionTable52 dtable, final int maxRowCount ) { final AttributeCol52 column = new AttributeCol52(); column.setAttribute( GuidedDecisionTable52.SALIENCE_ATTR ); //If sequential set column to use reverse row number if ( isSequential ) { column.setUseRowNumber( true ); column.setReverseOrder( true ); final int maxRow = this.values.size(); for ( int iRow = 0; iRow < maxRow; iRow++ ) { final DTCellValue52 dcv = this.values.get( iRow ); dcv.setNumericValue( Integer.valueOf( maxRow - iRow ) ); } } dtable.getAttributeCols().add( column ); if ( this.values.size() < maxRowCount ) { for ( int iRow = this.values.size(); iRow < maxRowCount; iRow++ ) { final DTCellValue52 dcv = new DTCellValue52( 0 ); this.values.add( dcv ); } } addColumnData( dtable, column ); } @Override public void addCellValue( final int row, final int column, final String content ) { String value = content; if ( value.startsWith( "(" ) && value.endsWith( ")" ) ) { value = value.substring( 1, value.lastIndexOf( ")" ) - 1 ); } final DTCellValue52 dcv = new DTCellValue52( 0 ); try { dcv.setNumericValue( Integer.valueOf( value ) ); } catch ( NumberFormatException nfe ) { final String message = "Priority is not an integer literal, in cell " + RuleSheetParserUtil.rc2name( row, column ); this.conversionResult.addMessage( message, ConversionMessageType.WARNING ); } this.values.add( dcv ); } }