private DSLSentence visitDSLSentence(final DSLSentence sentence) { DSLSentence clone = new DSLSentence(); clone.setDefinition( sentence.getDefinition() ); for ( DSLVariableValue value : sentence.getValues() ) { clone.getValues().add( (DSLVariableValue) visit( value ) ); } return clone; }
public void visitDSLSentence( final DSLSentence sentence ) { buf.append( indentation ); buf.append( sentence.interpolate() ); buf.append( "\n" ); }
private void parseDefinition() { values = new ArrayList<DSLVariableValue>(); if ( getDefinition() == null ) { return; } int variableStart = definition.indexOf( "{" ); while ( variableStart >= 0 ) { int variableEnd = getIndexForEndOfVariable( definition, variableStart ); String variable = definition.substring( variableStart + 1, variableEnd ); values.add( parseValue( variable ) ); variableStart = definition.indexOf( "{", variableEnd ); } }
/** * Add a DSL sentence for an action. */ public void addDSLActionSentence(final String definition) { final DSLSentence sen = new DSLSentence(); sen.setDefinition(definition); this.actionDSLSentences.add(sen); }
/** * This is used by the GUI when adding a sentence to LHS or RHS. * * @return */ public DSLSentence copy() { final DSLSentence newOne = new DSLSentence(); newOne.definition = getDefinition(); List<DSLVariableValue> variableValues = getValues(); if ( variableValues != null ) { for ( DSLVariableValue value : getValues() ) { newOne.getValues().add( value ); } } return newOne; }
@Test public void testDSLComplexVariableValueInterpolation() { final DSLSentence sen = new DSLSentence(); sen.setDefinition( "a {here} and {here}" ); sen.getValues().set( 0, new DSLComplexVariableValue("123","word")); sen.getValues().set( 1, new DSLComplexVariableValue("some-other-value","word") ); assertEquals( "a word and word", sen.interpolate() ); }
@Test public void testSentence() { final DSLSentence sen = new DSLSentence(); sen.setDefinition( "this is {something} here and {here}" ); assertEquals( "this is {something} here and {here}", sen.toString() ); sen.setDefinition( "foo bar" ); assertEquals( "foo bar", sen.toString() ); final DSLSentence newOne = sen.copy(); assertFalse( newOne == sen ); assertEquals( newOne.getDefinition(), sen.getDefinition() ); assertEquals( newOne.getValues(), sen.getValues() ); }
@Test public void testEnumSentence() { final DSLSentence sen = new DSLSentence(); sen.setDefinition( "this is {variable:ENUM:Value.test} here and {here}" ); assertEquals( "this is {variable} here and {here}", sen.toString() ); }
public Map<String, String> getEnumFieldValueMap() { if ( this.values == null ) { parseDefinition(); if ( getValues().isEmpty() ) { return fieldValueMap; int iVariable = 0; while ( variableStart >= 0 ) { int variableEnd = getIndexForEndOfVariable( definition, variableStart ); String variable = definition.substring( variableStart + 1,
dslPattern.getDefinition() ); assertEquals( 0, dslPattern.getValues().size() ); dslAction.getDefinition() ); assertEquals( 2, dslAction.getValues().size() ); assertTrue( dslAction.getValues().get( 0 ) instanceof DSLVariableValue ); assertTrue( dslAction.getValues().get( 1 ) instanceof DSLVariableValue ); dslAction.getValues().get( 0 ).getValue() ); assertEquals( "myout", dslAction.getValues().get( 1 ).getValue() );
/** * This will strip off any residual "{" stuff... */ public String toString() { getDefinition(); StringBuilder result = new StringBuilder( definition ); int variableStart = definition.indexOf( "{" ); while ( variableStart >= 0 ) { int variableEnd = getIndexForEndOfVariable( result.toString(), variableStart ); String variable = result.substring( variableStart + 1, variableEnd ); int variableNameEnd = variable.indexOf( ":" ); if ( variableNameEnd == -1 ) { variableNameEnd = variable.length(); } String variableName = variable.substring( 0, variableNameEnd ); result.replace( variableStart + 1, variableEnd, variableName ); variableEnd = variableEnd - variable.length() + variableName.length(); variableStart = result.indexOf( "{", variableEnd ); } return result.toString().replace( "\\n", "\n" ); }
/** * 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 void parseSentence() { if ( sentence == null ) { return; } definition = sentence; values = new ArrayList<DSLVariableValue>(); sentence = null; int variableStart = definition.indexOf( "{" ); while ( variableStart >= 0 ) { int variableEnd = getIndexForEndOfVariable( definition, variableStart ); String variable = definition.substring( variableStart + 1, variableEnd ); values.add( parseValue( variable ) ); variableStart = definition.indexOf( "{", variableEnd ); } }
private void visitDSLSentence(final DSLSentence sentence) { String text = sentence.getDefinition(); parseStringPattern( text ); }
@Test public void testIsDSLEnhanced() throws Exception { RuleModel m = new RuleModel(); assertFalse( m.hasDSLSentences() ); m.addLhsItem( new FactPattern() ); assertFalse( m.hasDSLSentences() ); m.addRhsItem( new ActionSetField( "q" ) ); assertFalse( m.hasDSLSentences() ); m.addLhsItem( new DSLSentence() ); assertTrue( m.hasDSLSentences() ); m.addRhsItem( new DSLSentence() ); assertTrue( m.hasDSLSentences() ); m = new RuleModel(); m.addLhsItem( new DSLSentence() ); assertTrue( m.hasDSLSentences() ); m = new RuleModel(); m.addRhsItem( new DSLSentence() ); assertTrue( m.hasDSLSentences() ); }
public String getDefinition() { if ( definition == null ) { parseSentence(); } return definition; }
public List<DSLVariableValue> getValues() { if ( this.values == null ) { parseDefinition(); } return values; }
@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() ); }
/** * Add a DSL sentence for an action. */ public void addDSLActionSentence(final String definition) { final DSLSentence sen = new DSLSentence(); sen.setDefinition(definition); this.actionDSLSentences.add(sen); }
/** * This is used by the GUI when adding a sentence to LHS or RHS. * * @return */ public DSLSentence copy() { final DSLSentence newOne = new DSLSentence(); newOne.definition = getDefinition(); List<DSLVariableValue> variableValues = getValues(); if ( variableValues != null ) { for ( DSLVariableValue value : getValues() ) { newOne.getValues().add( value ); } } return newOne; }