/*
* Copyright 2016 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.services.verifier.plugin.client.builders;
import java.util.List;
import org.drools.workbench.models.guided.dtable.shared.model.BRLConditionVariableColumn;
import org.drools.workbench.models.guided.dtable.shared.model.ConditionCol52;
import org.drools.workbench.models.guided.dtable.shared.model.DTCellValue52;
import org.drools.workbench.services.verifier.api.client.index.Condition;
import org.drools.workbench.services.verifier.api.client.index.Pattern;
import org.drools.workbench.services.verifier.api.client.index.Rule;
import org.uberfire.commons.validation.PortablePreconditions;
import static org.drools.workbench.services.verifier.plugin.client.builders.Utils.*;
public class ConditionBuilder {
private final BuilderFactory builderFactory;
private ConditionCol52 conditionCol52;
private List<DTCellValue52> row;
private int columnIndex;
private Rule rule;
public ConditionBuilder( final BuilderFactory builderFactory ) {
this.builderFactory = PortablePreconditions.checkNotNull( "builderFactory",
builderFactory );
}
public ConditionBuilder with( final ConditionCol52 conditionCol52 ) {
this.conditionCol52 = conditionCol52;
return this;
}
public ConditionBuilder with( final List<DTCellValue52> row ) {
this.row = row;
return this;
}
public ConditionBuilder with( final int columnIndex ) {
this.columnIndex = columnIndex;
return this;
}
public ConditionBuilder with( final Rule rule ) {
this.rule = rule;
return this;
}
public Condition build() throws
BuildException {
PortablePreconditions.checkNotNull( "conditionCol52",
conditionCol52 );
PortablePreconditions.checkNotNull( "columnIndex",
columnIndex );
PortablePreconditions.checkNotNull( "row",
row );
if ( conditionCol52 instanceof BRLConditionVariableColumn ) {
return builderFactory.getBRLConditionBuilder()
.with( (BRLConditionVariableColumn) conditionCol52 )
.with( row.get( columnIndex ) )
.with( columnIndex )
.build();
} else {
PortablePreconditions.checkNotNull( "rule",
rule );
final Pattern pattern = builderFactory.getPatternResolver()
.with( rule )
.with( columnIndex )
.resolve();
return builderFactory.getFieldConditionsBuilder()
.with( pattern )
.with( conditionCol52 )
.with( getRealCellValue( conditionCol52,
row.get( columnIndex ) ) )
.with( columnIndex )
.build();
}
}
}