/*
* 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.webworker.client.testutil;
import java.util.HashSet;
import java.util.Set;
import org.drools.workbench.models.guided.dtable.shared.model.GuidedDecisionTable52;
import org.drools.workbench.services.verifier.api.client.Status;
import org.drools.workbench.services.verifier.api.client.configuration.AnalyzerConfiguration;
import org.drools.workbench.services.verifier.api.client.index.DataType;
import org.drools.workbench.services.verifier.api.client.reporting.Issue;
import org.drools.workbench.services.verifier.core.main.Analyzer;
import org.drools.workbench.services.verifier.core.main.Reporter;
import org.drools.workbench.services.verifier.plugin.client.api.FactTypes;
import org.drools.workbench.services.verifier.webworker.client.DTableUpdateManager;
public class AnalyzerProvider {
private Set<Issue> analysisReport;
private Status status;
private Analyzer analyzer = null;
private AnalyzerConfiguration configuration = new AnalyzerConfigurationMock();
private DTableUpdateManager updateManager;
private FactTypes factTypes = new FactTypes();
private DecisionTableAnalyzerBuilder decisionTableAnalyzerBuilder;
public AnalyzerProvider() {
factTypes.add( new FactTypes.FactType( "Applicant",
new HashSet<FactTypes.Field>() {{
add( new FactTypes.Field( "age",
DataType.TYPE_NUMERIC_INTEGER ) );
}} ) );
factTypes.add( new FactTypes.FactType( "Account",
new HashSet<FactTypes.Field>() {{
add( new FactTypes.Field( "deposit",
DataType.TYPE_NUMERIC_DOUBLE ) );
}} ) );
factTypes.add( new FactTypes.FactType( "Person",
new HashSet<FactTypes.Field>() {{
add( new FactTypes.Field( "age",
DataType.TYPE_NUMERIC_INTEGER ) );
add( new FactTypes.Field( "name",
DataType.TYPE_STRING ) );
add( new FactTypes.Field( "lastName",
DataType.TYPE_STRING ) );
add( new FactTypes.Field( "description",
DataType.TYPE_STRING ) );
add( new FactTypes.Field( "approved",
DataType.TYPE_BOOLEAN ) );
add( new FactTypes.Field( "salary",
DataType.TYPE_NUMERIC_INTEGER ) );
}} ) );
}
public FactTypes getFactTypes() {
return factTypes;
}
public Set<Issue> getAnalysisReport() {
return analysisReport;
}
public Status getStatus() {
return status;
}
public Analyzer getAnalyser( final GuidedDecisionTable52 table52 ) {
final DecisionTableAnalyzerBuilder builder = getDecisionTableAnalyzerBuilder()
.withFieldTypes( factTypes )
.withAnalyzer( analyzer )
.withModel( table52 );
return builder.build();
}
public DTableUpdateManager getUpdateManager( final GuidedDecisionTable52 table52,
final Analyzer analyzer ) {
updateManager = getDecisionTableAnalyzerBuilder()
.withFieldTypes( factTypes )
.withModel( table52 )
.withAnalyzer( analyzer )
.withConfiguration( configuration )
.getUpdateManagerBuilder()
.buildUpdateManager();
return updateManager;
}
private DecisionTableAnalyzerBuilder getDecisionTableAnalyzerBuilder() {
if ( decisionTableAnalyzerBuilder == null ) {
decisionTableAnalyzerBuilder = new DecisionTableAnalyzerBuilder() {
@Override
protected InnerBuilder getInnerBuilder() {
return new InnerBuilder( configuration ) {
@Override
protected Reporter getAnalysisReporter() {
return AnalyzerProvider.this.getAnalysisReporter();
}
};
}
};
}
return decisionTableAnalyzerBuilder;
}
private Reporter getAnalysisReporter() {
return new Reporter() {
@Override
public void sendReport( final Set<Issue> issues ) {
analysisReport = issues;
}
@Override
public void sendStatus( final Status _status ) {
status = _status;
}
};
}
public AnalyzerBuilder makeAnalyser() {
return new AnalyzerBuilder( this );
}
public Analyzer makeAnalyser( final GuidedDecisionTable52 table52 ) {
return getAnalyser( table52 );
}
public void setConfiguration( final AnalyzerConfiguration analyzerConfiguration ) {
this.configuration = analyzerConfiguration;
}
}