Для этого в Java я создал простой класс:
package org.cc.bu.combo;
import java.util.Map;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
public class UnitChecker {
static private Map<String, String> parseCombo(String combo) {
Pattern pattern = Pattern.compile(",");
Map<String, String> c = pattern.splitAsStream(combo)
.map(s -> {
String[] parts = s.split("\\|\\|");
return parts;
}).collect(Collectors.toMap(p -> p[0], p -> p[1]));
return c;
}
static public boolean check(String combo, String unit, String cost) {
Map<String, String> c = parseCombo(combo);
String value = c.get(unit);
return cost.equals(value);
}
}
Его можно вызвать из потока следующим образом:
<set-variable value="A1289||B2234,A8976||B7765" variableName="combos" />
<java:invoke-static doc:name="Invoke static" class="org.cc.bu.combo.UnitChecker" method="check(java.lang.String,java.lang.String,java.lang.String)">
<java:args ><![CDATA[#[{combo: vars.combos, unit: 'A1289', cost: 'B2234' }]]]></java:args>
</java:invoke-static>
Вам нужно добавить Java Модуль к проекту (всегда используйте последнюю версию), а также убедитесь, что вы компилируете с Java 8 совместимостью исходных текстов . Если вы еще этого не сделали, добавьте следующие свойства в pom:
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>