private DSLVariableValue visitDSLVariableValue(DSLVariableValue value) { DSLVariableValue clone = new DSLVariableValue(); clone.setValue( value.getValue() ); return clone; }
private DSLVariableValue parseValue(String variable) { //if the variable doesn't have a ':', then it is considered as a //simple value if ( !variable.contains( ":" ) ) { return new DSLVariableValue(variable); } //if it does containt a ':', then the part before it is considered //as the real value (used to create the final drl) and the part //after it is considered as an id String value = variable.substring( 0, variable.indexOf( ":" ) ); String id = variable.substring( variable.indexOf( ":" )+1); return new DSLComplexVariableValue(id, value); }
DSLSentence dsl0 = new DSLSentence(); dsl0.setDefinition( "DSL Sentence 0" ); dsl0.getValues().add( new DSLVariableValue( "dsl0v0" ) ); dsl0.getValues().add( new DSLVariableValue( "dsl0v1" ) ); model.lhs[0] = dsl0; DSLSentence dsl1 = new DSLSentence(); dsl1.setDefinition( "DSL Sentence 1" ); dsl1.getValues().add( new DSLVariableValue( "dsl1v0" ) ); dsl1.getValues().add( new DSLVariableValue( "dsl1v1" ) ); model.lhs[1] = dsl1; assertTrue( dsl0Clone.getValues().get( 0 ) instanceof DSLVariableValue ); DSLVariableValue dsl0v0Clone = (DSLVariableValue) dsl0Clone.getValues().get( 0 ); assertEquals( dsl0.getValues().get( 0 ).getValue(), dsl0v0Clone.getValue() ); assertTrue( dsl0Clone.getValues().get( 1 ) instanceof DSLVariableValue ); DSLVariableValue dsl0v1Clone = (DSLVariableValue) dsl0Clone.getValues().get( 1 ); assertEquals( dsl0.getValues().get( 1 ).getValue(), dsl0v1Clone.getValue() ); assertTrue( dsl1Clone.getValues().get( 0 ) instanceof DSLVariableValue ); DSLVariableValue dsl1v0Clone = (DSLVariableValue) dsl1Clone.getValues().get( 0 ); assertEquals( dsl1.getValues().get( 0 ).getValue(), dsl1v0Clone.getValue() ); assertTrue( dsl1Clone.getValues().get( 1 ) instanceof DSLVariableValue ); DSLVariableValue dsl1v1Clone = (DSLVariableValue) dsl1Clone.getValues().get( 1 ); assertEquals( dsl1.getValues().get( 1 ).getValue(),
/** * This will strip off any "{" stuff, substituting values accordingly */ public String interpolate() { getValues(); if ( definition == null ) { return ""; } int variableStart = definition.indexOf( "{" ); if ( variableStart < 0 ) { return definition; } int index = 0; int variableEnd = 0; StringBuilder sb = new StringBuilder(); while ( variableStart >= 0 ) { sb.append( definition.substring( variableEnd, variableStart ) ); variableEnd = getIndexForEndOfVariable( definition, variableStart ) + 1; variableStart = definition.indexOf( "{", variableEnd ); sb.append( values.get( index++ ).getValue() ); } if ( variableEnd < definition.length() ) { sb.append( definition.substring( variableEnd ) ); } return sb.toString(); }
private DSLVariableValue parseValue(String variable) { //if the variable doesn't have a ':', then it is considered as a //simple value if ( !variable.contains( ":" ) ) { return new DSLVariableValue(variable); } //if it does containt a ':', then the part before it is considered //as the real value (used to create the final drl) and the part //after it is considered as an id String value = variable.substring( 0, variable.indexOf( ":" ) ); String id = variable.substring( variable.indexOf( ":" )+1); return new DSLComplexVariableValue(id, value); }
/** * This will strip off any "{" stuff, substituting values accordingly */ public String interpolate() { getValues(); if ( definition == null ) { return ""; } int variableStart = definition.indexOf( "{" ); if ( variableStart < 0 ) { return definition; } int index = 0; int variableEnd = 0; StringBuilder sb = new StringBuilder(); while ( variableStart >= 0 ) { sb.append( definition.substring( variableEnd, variableStart ) ); variableEnd = getIndexForEndOfVariable( definition, variableStart ) + 1; variableStart = definition.indexOf( "{", variableEnd ); sb.append( values.get( index++ ).getValue() ); } if ( variableEnd < definition.length() ) { sb.append( definition.substring( variableEnd ) ); } return sb.toString(); }
private DSLVariableValue visitDSLVariableValue(DSLVariableValue value) { DSLVariableValue clone = new DSLVariableValue(); clone.setValue( value.getValue() ); return clone; }
@Override @SuppressWarnings({"rawtypes", "unchecked"}) protected void addCurrentElementToCollection(HierarchicalStreamReader reader, UnmarshallingContext context, Collection collection, Collection target) { Object item = readItem( reader, context, collection ); if ( item instanceof DSLVariableValue ) { target.add( item ); } else if ( item instanceof String ) { //The only other possible legacy type is a String, so using toString() should be OK DSLVariableValue value = new DSLVariableValue( item.toString() ); target.add( value ); } }
factAndField.length() ); fieldValueMap.put( field, values.get( iVariable ).getValue() );
@Override @SuppressWarnings({"rawtypes", "unchecked"}) protected void addCurrentElementToCollection(HierarchicalStreamReader reader, UnmarshallingContext context, Collection collection, Collection target) { Object item = readItem( reader, context, collection ); if ( item instanceof DSLVariableValue ) { target.add( item ); } else if ( item instanceof String ) { //The only other possible legacy type is a String, so using toString() should be OK DSLVariableValue value = new DSLVariableValue( item.toString() ); target.add( value ); } }
factAndField.length() ); fieldValueMap.put( field, values.get( iVariable ).getValue() );
@Test public void testInterpolate3() { final DSLSentence sen = new DSLSentence(); sen.setDefinition( "a {here} and {here}" ); sen.getValues().set( 0, new DSLVariableValue("word")); sen.getValues().set( 1, new DSLVariableValue("word") ); assertEquals( "a word and word", sen.interpolate() ); }
@Test public void testEnumSentenceWithBoolean() { final DSLSentence sen = new DSLSentence(); sen.setDefinition( "When a person is alive {alive:BOOLEAN:checked}" ); sen.getValues().set( 0, new DSLVariableValue("true" )); assertEquals( "When a person is alive true", sen.interpolate() ); }
@Test public void testEnumSentenceContainingRegEx() { final DSLSentence sen = new DSLSentence(); sen.setDefinition( "When a person exists with social security number \"{chooseSSN:\\d{3}-\\d{2}-\\d{4}}\"" ); sen.getValues().set( 0, new DSLVariableValue("333-22-4444")); assertEquals( "When a person exists with social security number \"333-22-4444\"", sen.interpolate() ); }
@Test public void testEnumSentenceWithDate() { final DSLSentence sen = new DSLSentence(); sen.setDefinition( "When a person was born on \"{dob:DATE:default}\"" ); sen.getValues().set( 0, new DSLVariableValue("31-Dec-1999")); assertEquals( "When a person was born on \"31-Dec-1999\"", sen.interpolate() ); }
@Test public void testInterpolate1() { final DSLSentence sen = new DSLSentence(); sen.setDefinition( "{something} here" ); sen.getValues().set( 0, new DSLVariableValue("word")); assertEquals( "word here", sen.interpolate() ); }
@Test public void testInterpolate2() { final DSLSentence sen = new DSLSentence(); sen.setDefinition( "a {here}" ); sen.getValues().set( 0, new DSLVariableValue("word")); assertEquals( "a word", sen.interpolate() ); }
@Test public void testEnumSentenceWithEnumeration() { final DSLSentence sen = new DSLSentence(); sen.setDefinition( "When a person is \"{rating:ENUM:Person.gender}\"" ); sen.getValues().set( 0, new DSLVariableValue("Male")); assertEquals( "When a person is \"Male\"", sen.interpolate() ); }