use of org.drools.workbench.models.guided.dtree.shared.model.values.Value in project drools by kiegroup.
the class GuidedDecisionTreeModelUnmarshallingVisitor method visit.
private List<Node> visit(final FieldConstraint fc, final GuidedDecisionTree model, final PackageDataModelOracle dmo, final List<ParserMessage> messages) {
final List<Node> nodes = new ArrayList<Node>();
if (fc instanceof CompositeFieldConstraint) {
messages.add(new UnsupportedFieldConstraintParserMessage());
return nodes;
} else if (fc instanceof SingleFieldConstraintEBLeftSide) {
messages.add(new UnsupportedFieldConstraintParserMessage());
return nodes;
}
if (!(fc instanceof SingleFieldConstraint)) {
messages.add(new UnsupportedFieldConstraintParserMessage());
return nodes;
}
final SingleFieldConstraint sfc = (SingleFieldConstraint) fc;
if (sfc.getConnectives() != null) {
messages.add(new UnsupportedFieldConstraintParserMessage());
return nodes;
}
ConstraintNode node = null;
final String className = sfc.getFactType();
final String fieldName = sfc.getFieldName();
if (sfc.getConstraintValueType() == BaseSingleFieldConstraint.TYPE_LITERAL) {
final String operator = sfc.getOperator();
final boolean isValueRequired = OperatorsOracle.isValueRequired(operator);
if (isValueRequired) {
final Value value = getValue(className, fieldName, model, dmo, messages, sfc.getValue());
if (value != null) {
node = new ConstraintNodeImpl(className, fieldName, operator, value);
}
} else {
node = new ConstraintNodeImpl(className, fieldName);
}
} else if (sfc.getConstraintValueType() == BaseSingleFieldConstraint.TYPE_ENUM) {
final String operator = sfc.getOperator();
final boolean isValueRequired = OperatorsOracle.isValueRequired(operator);
if (isValueRequired) {
final Value value = getValue(className, fieldName, model, dmo, messages, sfc.getValue());
if (value != null) {
node = new ConstraintNodeImpl(className, fieldName, operator, value);
}
} else {
node = new ConstraintNodeImpl(className, fieldName);
}
} else if (sfc.getConstraintValueType() == BaseSingleFieldConstraint.TYPE_UNDEFINED) {
final String operator = sfc.getOperator();
final boolean isValueRequired = OperatorsOracle.isValueRequired(operator);
if (isValueRequired) {
node = new ConstraintNodeImpl(className, fieldName);
} else {
node = new ConstraintNodeImpl(className, fieldName, operator, null);
}
} else {
messages.add(new UnsupportedFieldConstraintTypeParserMessage());
return nodes;
}
if (node != null) {
if (sfc.isBound()) {
node.setBinding(sfc.getFieldBinding());
}
nodes.add(node);
}
return nodes;
}
use of org.drools.workbench.models.guided.dtree.shared.model.values.Value in project drools by kiegroup.
the class GuidedDecisionTreeModelUnmarshallingVisitor method visit.
private List<Node> visit(final IAction a, final List<TypeNode> types, final GuidedDecisionTree model, final PackageDataModelOracle dmo, final List<ParserMessage> messages) {
final List<Node> nodes = new ArrayList<Node>();
if (a instanceof ActionRetractFact) {
final ActionRetractFact arf = (ActionRetractFact) a;
final String binding = arf.getVariableName();
for (TypeNode tn : types) {
if (tn.isBound()) {
if (tn.getBinding().equals(binding)) {
final ActionRetractNode arn = new ActionRetractNodeImpl(tn);
nodes.add(arn);
return nodes;
}
}
}
messages.add(new BindingNotFoundParserMessage(binding));
return nodes;
} else if (a instanceof ActionInsertLogicalFact) {
final ActionInsertLogicalFact aif = (ActionInsertLogicalFact) a;
final ActionInsertNode aun = new ActionInsertNodeImpl(aif.getFactType());
aun.setLogicalInsertion(true);
for (org.drools.workbench.models.datamodel.rule.ActionFieldValue afv : aif.getFieldValues()) {
if (afv.getNature() != FieldNatureType.TYPE_LITERAL) {
messages.add(new UnsupportedFieldNatureTypeParserMessage());
return nodes;
}
final String fieldName = afv.getField();
final Value value = getValue(aif.getFactType(), afv.getField(), model, dmo, messages, afv.getValue());
if (value != null) {
final ActionFieldValue _afv = new ActionFieldValueImpl(fieldName, value);
aun.getFieldValues().add(_afv);
}
}
nodes.add(aun);
return nodes;
} else if (a instanceof ActionInsertFact) {
final ActionInsertFact aif = (ActionInsertFact) a;
final ActionInsertNode aun = new ActionInsertNodeImpl(aif.getFactType());
aun.setLogicalInsertion(false);
for (org.drools.workbench.models.datamodel.rule.ActionFieldValue afv : aif.getFieldValues()) {
if (afv.getNature() != FieldNatureType.TYPE_LITERAL) {
messages.add(new UnsupportedFieldNatureTypeParserMessage());
return nodes;
}
final String fieldName = afv.getField();
final Value value = getValue(aif.getFactType(), afv.getField(), model, dmo, messages, afv.getValue());
if (value != null) {
final ActionFieldValue _afv = new ActionFieldValueImpl(fieldName, value);
aun.getFieldValues().add(_afv);
}
}
nodes.add(aun);
return nodes;
} else if (a instanceof ActionUpdateField) {
final ActionUpdateField auf = (ActionUpdateField) a;
final String binding = auf.getVariable();
for (TypeNode tn : types) {
if (tn.isBound()) {
if (tn.getBinding().equals(binding)) {
final ActionUpdateNode aun = new ActionUpdateNodeImpl(tn);
aun.setModify(true);
for (org.drools.workbench.models.datamodel.rule.ActionFieldValue afv : auf.getFieldValues()) {
if (afv.getNature() != FieldNatureType.TYPE_LITERAL) {
messages.add(new UnsupportedFieldNatureTypeParserMessage());
return nodes;
}
final String fieldName = afv.getField();
final Value value = getValue(tn.getClassName(), afv.getField(), model, dmo, messages, afv.getValue());
if (value != null) {
final ActionFieldValue _afv = new ActionFieldValueImpl(fieldName, value);
aun.getFieldValues().add(_afv);
}
}
nodes.add(aun);
return nodes;
}
}
}
messages.add(new BindingNotFoundParserMessage(binding));
return nodes;
} else if (a instanceof ActionSetField) {
final ActionSetField asf = (ActionSetField) a;
final String binding = asf.getVariable();
for (TypeNode tn : types) {
if (tn.isBound()) {
if (tn.getBinding().equals(binding)) {
final ActionUpdateNode aun = new ActionUpdateNodeImpl(tn);
for (org.drools.workbench.models.datamodel.rule.ActionFieldValue afv : asf.getFieldValues()) {
if (afv.getNature() != FieldNatureType.TYPE_LITERAL) {
messages.add(new UnsupportedFieldNatureTypeParserMessage());
return nodes;
}
final String fieldName = afv.getField();
final Value value = getValue(tn.getClassName(), afv.getField(), model, dmo, messages, afv.getValue());
if (value != null) {
final ActionFieldValue _afv = new ActionFieldValueImpl(fieldName, value);
aun.getFieldValues().add(_afv);
}
}
nodes.add(aun);
return nodes;
}
}
}
messages.add(new BindingNotFoundParserMessage(binding));
return nodes;
} else {
messages.add(new UnsupportedIActionParserMessage());
return nodes;
}
}
use of org.drools.workbench.models.guided.dtree.shared.model.values.Value in project drools-wb by kiegroup.
the class ValueEditorFactory method getValueEditor.
public Widget getValueEditor(final String className, final String fieldName, final HasValue hasValue, final AsyncPackageDataModelOracle oracle, final boolean isMultipleSelect) {
String dataType = oracle.getFieldType(className, fieldName);
// Operators "contained in" and "not contained in" fallback to Strings
if (isMultipleSelect) {
dataType = DataType.TYPE_STRING;
}
// Fields with enumerations fallback to Strings
DropDownData dd = null;
if (oracle.hasEnums(className, fieldName)) {
final Map<String, String> currentValueMap = getCurrentValueMap();
dd = oracle.getEnums(className, fieldName, currentValueMap);
}
// Ensure Node has a value if needed
if (hasValue.getValue() == null) {
final Value value = ValueUtilities.makeEmptyValue(dataType);
if (value == null) {
ErrorPopup.showMessage(GuidedDecisionTreeConstants.INSTANCE.dataTypeNotSupported0(dataType));
return null;
} else {
hasValue.setValue(value);
}
}
// Setup the correct widget corresponding to the data type
if (dataType.equals(DataType.TYPE_DATE)) {
final DatePicker valueEditor = new DatePicker(false);
// Wire-up update handler
valueEditor.addValueChangeHandler(new ValueChangeHandler<Date>() {
@Override
public void onValueChange(final ValueChangeEvent<Date> event) {
hasValue.getValue().setValue(valueEditor.getValue());
}
});
// Set Widget's value
valueEditor.setFormat(DATE_FORMAT);
valueEditor.setValue((Date) hasValue.getValue().getValue());
return valueEditor;
} else if (dataType.equals(DataType.TYPE_BOOLEAN)) {
final ListBox valueEditor = new ListBox();
valueEditor.addItem("true");
valueEditor.addItem("false");
// Wire-up update handler
valueEditor.addClickHandler(new ClickHandler() {
public void onClick(final ClickEvent event) {
final String txtValue = valueEditor.getValue(valueEditor.getSelectedIndex());
final Boolean value = Boolean.valueOf(txtValue);
hasValue.getValue().setValue(value);
}
});
// Set Widget's value
valueEditor.setSelectedIndex(hasValue.getValue().getValue().equals(Boolean.TRUE) ? 0 : 1);
return valueEditor;
} else {
// If we have enumeration data show a ListBox
if (dd != null) {
final ListBox valueEditor = makeListBox(dd, hasValue, oracle, isMultipleSelect);
return valueEditor;
}
// Otherwise show a TextBox
final TextBox valueEditor = TextBoxFactory.getTextBox(dataType);
// Wire-up Handlers before setting value, as invalid values cause the ValueChangeHandler to be invoked
valueEditor.addValueChangeHandler(new ValueChangeHandler<String>() {
@Override
public void onValueChange(final ValueChangeEvent<String> event) {
hasValue.getValue().setValue(event.getValue());
}
});
// Set Widget's value
valueEditor.setText(ValueUtilities.convertNodeValue(hasValue.getValue()));
return valueEditor;
}
}
use of org.drools.workbench.models.guided.dtree.shared.model.values.Value in project drools-wb by kiegroup.
the class ConstraintShape method getNodeLabel.
@Override
public String getNodeLabel() {
final StringBuilder sb = new StringBuilder();
if (node.isBound()) {
sb.append(node.getBinding()).append(" : ");
}
final String fieldName = node.getFieldName();
final String operator = node.getOperator();
final Value value = node.getValue();
if (fieldName != null) {
sb.append(fieldName);
if (operator != null) {
sb.append(" ").append(operator);
if (value != null) {
sb.append(" ").append(toString(value));
}
}
}
return sb.toString();
}
Aggregations