Skip to content

Commit

Permalink
[DROOLS-628] fix decision tables parser
Browse files Browse the repository at this point in the history
  • Loading branch information
mariofusco committed Oct 10, 2014
1 parent 28b3a4d commit 3eeea27
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 6 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package org.drools.decisiontable.parser;

import org.drools.template.model.SnippetBuilder;
import org.drools.template.parser.DecisionTableParseException;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
Expand All @@ -10,9 +13,6 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.drools.template.model.SnippetBuilder;
import org.drools.template.parser.DecisionTableParseException;

/**
* This utility will build up a list of constraints for a column.
* For instance, the column has been spanned across multiple cells, and the cells below
Expand Down Expand Up @@ -50,10 +50,9 @@ public class LhsBuilder implements SourceBuilder {

private static final Pattern patParFrm = Pattern.compile( "\\(\\s*\\)\\s*from\\b" );
private static final Pattern patFrm = Pattern.compile( "\\s+from\\s+" );
private static final Pattern patPar = Pattern.compile( "\\(\\s*\\)" );
private static final Pattern patPar = Pattern.compile ("\\(\\s*\\)\\s*\\Z");
private static final Pattern patEval = Pattern.compile( "\\beval\\s*(?:\\(\\s*\\)\\s*)?$" );



/**
* @param colDefinition The initial column definition that is shared via merged cells.
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package org.drools.decisiontable;

import org.junit.Test;
import org.kie.api.io.ResourceType;
import org.kie.internal.KnowledgeBase;
import org.kie.internal.KnowledgeBaseFactory;
import org.kie.internal.builder.DecisionTableConfiguration;
import org.kie.internal.builder.DecisionTableInputType;
import org.kie.internal.builder.KnowledgeBuilder;
import org.kie.internal.builder.KnowledgeBuilderFactory;
import org.kie.internal.io.ResourceFactory;
import org.kie.internal.runtime.StatefulKnowledgeSession;

import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;

public class FixedPatternTest {

@Test
public void testFixedPattern() throws FileNotFoundException {

DecisionTableConfiguration dtconf = KnowledgeBuilderFactory.newDecisionTableConfiguration();
dtconf.setInputType(DecisionTableInputType.XLS);
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource("fixedPattern.xls", getClass()), ResourceType.DTABLE, dtconf);
if (kbuilder.hasErrors()) {
fail( kbuilder.getErrors().toString() );
}
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());

StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();

List<Long> list = new ArrayList<Long>();
ksession.setGlobal("list", list);

ksession.insert(1L);
ksession.insert(2);
ksession.fireAllRules();

assertEquals(1, list.size());
assertEquals(1L, (long)list.get(0));

ksession.dispose();
}
}
Binary file not shown.

0 comments on commit 3eeea27

Please sign in to comment.