/*
* 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;
import java.util.Date;
import com.google.gwt.i18n.client.DateTimeFormat;
import org.drools.workbench.services.verifier.api.client.configuration.AnalyzerConfiguration;
import org.drools.workbench.services.verifier.api.client.configuration.DateTimeFormatProvider;
import org.drools.workbench.services.verifier.api.client.configuration.RunnerType;
import org.drools.workbench.services.verifier.api.client.index.Index;
import org.drools.workbench.services.verifier.api.client.index.keys.UUIDKeyProvider;
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.Initialize;
import org.drools.workbench.services.verifier.plugin.client.builders.BuildException;
import org.drools.workbench.services.verifier.plugin.client.builders.IndexBuilder;
import org.drools.workbench.services.verifier.plugin.client.builders.VerifierColumnUtilities;
import org.uberfire.commons.uuid.UUID;
public class AnalyzerBuilder {
private Reporter reporter;
private Initialize initialize;
private VerifierColumnUtilities columnUtilities;
private Index index;
private AnalyzerConfiguration configuration;
private Analyzer analyzer;
private RunnerType runnerType;
public Analyzer buildAnalyzer() throws
BuildException {
if ( analyzer == null ) {
analyzer = new Analyzer( reporter,
getIndex(),
getConfiguration() );
}
return analyzer;
}
Index getIndex() throws
BuildException {
if ( index == null ) {
index = new IndexBuilder( initialize.getModel(),
initialize.getHeaderMetaData(),
getUtils(),
getConfiguration() ).build();
}
return index;
}
private VerifierColumnUtilities getUtils() {
if ( columnUtilities == null ) {
columnUtilities = new VerifierColumnUtilities( initialize.getModel(),
initialize.getHeaderMetaData(),
initialize.getFactTypes() );
}
return columnUtilities;
}
AnalyzerConfiguration getConfiguration() {
if ( configuration == null ) {
configuration = new AnalyzerConfiguration(
initialize.getUuid(),
new DateTimeFormatProvider() {
@Override
public String format( final Date dateValue ) {
return DateTimeFormat.getFormat( initialize.getDateFormat() )
.format( dateValue );
}
},
new UUIDKeyProvider() {
@Override
protected String newUUID() {
return UUID.uuid();
}
},
CheckConfigurationProvider.get( initialize.getModel()
.getHitPolicy() ),
runnerType );
}
return configuration;
}
public AnalyzerBuilder with( final Reporter reporter ) {
this.reporter = reporter;
return this;
}
public AnalyzerBuilder with( final Initialize initialize ) {
this.initialize = initialize;
return this;
}
public AnalyzerBuilder with( final RunnerType runnerType ) {
this.runnerType = runnerType;
return this;
}
}