Skip to content

Commit

Permalink
DROOLS-2263 : Unexpected results in GDST when using enumerations with…
Browse files Browse the repository at this point in the history
… commas (#1727)

(cherry picked from commit 69ca5db)
  • Loading branch information
Rikkola authored and manstis committed Jan 30, 2018
1 parent 76df9bd commit 7c8132b
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@
import org.drools.workbench.models.datamodel.workitems.PortableParameterDefinition;
import org.drools.workbench.models.datamodel.workitems.PortableStringParameterDefinition;
import org.drools.workbench.models.datamodel.workitems.PortableWorkDefinition;
import org.kie.soup.commons.util.ListSplitter;
import org.kie.soup.commons.validation.PortablePreconditions;
import org.kie.soup.project.datamodel.commons.imports.ImportsParser;
import org.kie.soup.project.datamodel.commons.imports.ImportsWriter;
Expand Down Expand Up @@ -1314,17 +1315,11 @@ protected void populateValueList(final StringBuilder buf,
workingValue = workingValue.substring(0,
workingValue.length() - 1);
}
final String[] values = workingValue.split(",");

final String[] values = ListSplitter.split("\"", true, workingValue);
buf.append(" ( ");
for (String v : values) {
v = v.trim();
if (v.startsWith("\"")) {
v = v.substring(1);
}
if (v.endsWith("\"")) {
v = v.substring(0,
v.length() - 1);
}
constraintValueBuilder.buildLHSFieldValue(buf,
type,
fieldType,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@
package org.drools.workbench.models.guided.dtable.backend;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Optional;
Expand Down Expand Up @@ -74,6 +76,7 @@
import org.drools.workbench.models.guided.dtable.shared.model.LimitedEntryCol;
import org.drools.workbench.models.guided.dtable.shared.model.MetadataCol52;
import org.drools.workbench.models.guided.dtable.shared.model.Pattern52;
import org.kie.soup.commons.util.ListSplitter;
import org.kie.soup.project.datamodel.commons.imports.ImportsWriter;
import org.kie.soup.project.datamodel.commons.packages.PackageNameWriter;
import org.kie.soup.project.datamodel.oracle.DataType;
Expand Down Expand Up @@ -742,25 +745,30 @@ private void doCondition(List<BaseColumn> allColumns,
/**
* take a CSV list and turn it into DRL syntax
*/
String makeInList(String cell) {
String makeInList(final String cell) {
if (cell.startsWith("(")) {
return cell;
}
String res = "";
StringTokenizer st = new StringTokenizer(cell,
",");
while (st.hasMoreTokens()) {
String t = st.nextToken().trim();
if (t.startsWith("\"")) {
res += t;

String result = "";
Iterator<String> iterator = Arrays.asList(ListSplitter.split("\"",
true,
cell)).iterator();
while (iterator.hasNext()) {

final String item = iterator.next();

if (item.startsWith("\"")) {
result += item;
} else {
res += "\"" + t + "\"";
result += "\"" + item + "\"";
}
if (st.hasMoreTokens()) {
res += ", ";
if (iterator.hasNext()) {
result += ", ";
}
}
return "(" + res + ")";

return "(" + result + ")";
}

private boolean no(String operator) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,8 @@ public void testAttribs() {
@Test
public void testCellCSV() {
GuidedDTDRLPersistence p = new GuidedDTDRLPersistence();
assertEquals( "(\"Helsinki, Finland\", \"Boston\")",
p.makeInList( "\"Helsinki, Finland\",Boston" ) );
assertEquals("(\"Michael\", \"Mark\", \"Peter\")",
p.makeInList("Michael, Mark, Peter"));
assertEquals("(\"Michael\")",
Expand Down

0 comments on commit 7c8132b

Please sign in to comment.