/*
* 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.screens.guided.dtable.client.widget.table.popovers.definitions;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.drools.workbench.models.datamodel.oracle.DataType;
import org.drools.workbench.models.guided.dtable.shared.model.BaseColumn;
import org.drools.workbench.models.guided.dtable.shared.model.DTCellValue52;
import org.drools.workbench.models.guided.dtable.shared.model.GuidedDecisionTable52;
import org.drools.workbench.screens.guided.dtable.client.widget.table.utilities.ColumnUtilities;
import org.drools.workbench.screens.guided.dtable.service.GuidedDecisionTableEditorService;
import org.jboss.errai.common.client.api.Caller;
import org.uberfire.backend.vfs.Path;
import org.uberfire.client.callbacks.Callback;
public abstract class BaseColumnDefinitionBuilder implements ColumnDefinitionBuilder {
private static final String WHEN = "when\n";
private static final String THEN = "then\n";
private static final String END = "end\n";
private Caller<GuidedDecisionTableEditorService> service;
public BaseColumnDefinitionBuilder( final Caller<GuidedDecisionTableEditorService> service ) {
this.service = service;
}
protected void generateDefinitionOnServer( final GuidedDecisionTable52 partialModel,
final Path path,
final Callback<String> afterGenerationCallback ) {
service.call( ( String source ) -> afterGenerationCallback.callback( source ) ).toSource( path,
partialModel );
}
protected List<DTCellValue52> makeRowData( final ColumnUtilities columnUtilities,
final BaseColumn column ) {
final List<DTCellValue52> row = new ArrayList<>();
row.add( new DTCellValue52( 1 ) );
row.add( new DTCellValue52( "desc" ) );
final DataType.DataTypes dataType = columnUtilities.getDataType( column );
row.add( makeCell( dataType ) );
return row;
}
protected DTCellValue52 makeCell( final DataType.DataTypes dataType ) {
switch ( dataType ) {
case NUMERIC:
case NUMERIC_BIGDECIMAL:
case NUMERIC_BIGINTEGER:
case NUMERIC_BYTE:
case NUMERIC_DOUBLE:
case NUMERIC_FLOAT:
case NUMERIC_INTEGER:
case NUMERIC_LONG:
case NUMERIC_SHORT:
return new DTCellValue52( 1 );
case DATE:
return new DTCellValue52( new Date() );
case BOOLEAN:
return new DTCellValue52( true );
}
return new DTCellValue52( "x" );
}
protected String getLHS( final String drl ) {
return strip( drl,
WHEN,
THEN );
}
protected String getRHS( final String drl ) {
return strip( drl,
THEN,
END );
}
protected String strip( final String drl,
final String blockStartTag,
final String blockEndTag ) {
final String _drl = drl.toLowerCase();
final int start = _drl.indexOf( blockStartTag );
final int end = _drl.indexOf( blockEndTag );
if ( start < 0 || end < 0 || end < start ) {
return drl;
}
return drl.substring( start + blockStartTag.length(),
end ).trim().replaceAll( "\t",
"" ).replaceAll( "\n", "<br/>" );
}
}