Commit 915882ea by yuanliang Committed by chengzhuoshen

Mx2ElementCamt053001取消子类实现,提到父类实现

parent cad27096
...@@ -10,12 +10,12 @@ import com.prowidesoftware.swift.model.mx.AbstractMX; ...@@ -10,12 +10,12 @@ import com.prowidesoftware.swift.model.mx.AbstractMX;
import java.io.InputStream; import java.io.InputStream;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.*;
import java.util.LinkedHashMap; import java.util.regex.Matcher;
import java.util.List; import java.util.regex.Pattern;
import java.util.Map;
public abstract class AbstractMx2ElementCreator implements Mx2ElementCreator{ public abstract class AbstractMx2ElementCreator implements Mx2ElementCreator{
private static final Pattern PATTERN_CURVE = Pattern.compile("\\(([\\.\\:-]?\\w+)+\\)");
protected AbstractMX abstractMX; protected AbstractMX abstractMX;
...@@ -93,36 +93,68 @@ public abstract class AbstractMx2ElementCreator implements Mx2ElementCreator{ ...@@ -93,36 +93,68 @@ public abstract class AbstractMx2ElementCreator implements Mx2ElementCreator{
type = path.substring(path.indexOf("&")+1); type = path.substring(path.indexOf("&")+1);
path = path.substring(0, path.indexOf("&")); path = path.substring(0, path.indexOf("&"));
} }
//处理括号
StringBuffer sb = new StringBuffer();
Matcher matcher = PATTERN_CURVE.matcher(path);
while (matcher.find()) {
String replace = matcher.group().replaceAll("\\.", "-");
matcher.appendReplacement(sb, replace);
}
path = matcher.appendTail(sb).toString();
//需要用. split,然后循环遍历json获取值 //需要用. split,然后循环遍历json获取值
String[] paths = path.split("\\."); String[] paths = path.split("\\.");
Map<String, Object> tmpMaps = jsonMaps; Map<String, Object> tmpMaps = jsonMaps;
for (int i=0; i<paths.length; i++) { for (int i=0; i<paths.length; i++) {
String p = paths[i]; String p = paths[i];
String subPropName = ""; String subPropName = "";
String[] condition = null;
if (p.indexOf("#") > -1) { //判断是否存在子配置文件的引用 if (p.indexOf("#") > -1) { //判断是否存在子配置文件的引用
int symbolIndex = p.indexOf("#"); int symbolIndex = p.indexOf("#");
subPropName = p.substring(symbolIndex + 1); subPropName = p.substring(symbolIndex + 1);
p = p.substring(0, symbolIndex); p = p.substring(0, symbolIndex);
} }
Matcher pMatch = PATTERN_CURVE.matcher(p);
if (pMatch.find()) { //判断是否含有括号过滤表达式
condition = p.substring(pMatch.start() + 1, pMatch.end() - 1).split(":");
p = p.substring(0, pMatch.start());
}
Object obj = tmpMaps.get(p); Object obj = tmpMaps.get(p);
if (obj == null) return null; if (obj == null) return null;
if (StringUtil.isNotEmpty(subPropName)) { if (StringUtil.isNotEmpty(subPropName)) {
return readSubProp(obj, subPropName); return readSubProp(obj, subPropName);
} else { } else {
if (obj instanceof JSONArray) { if (obj instanceof JSONArray) {
JSONArray jsonArray = (JSONArray)obj; JSONArray jsonArray = (JSONArray) obj;
if (i == paths.length-1) { if (i == paths.length - 1) {
return jsonArray; return jsonArray;
} else { //不是最后一层 } else { //不是最后一层
obj = jsonArray.get(0); if (Objects.nonNull(condition)) {
for (int j = 0; j < jsonArray.size(); j++) {
Object xmlValue = getXmlValue((Map<String, Object>) jsonArray.get(j), condition[0].replaceAll("-", "."));
if (Objects.equals(condition[1], xmlValue)) {
obj = jsonArray.get(j); break;
}
if (j == jsonArray.size() - 1) {
return null;
}
}
} else {
obj = jsonArray.get(0);
}
if (obj instanceof JSONObject) { if (obj instanceof JSONObject) {
tmpMaps = (Map<String, Object>)obj; tmpMaps = (Map<String, Object>) obj;
} else { } else {
return jsonArray; return jsonArray;
} }
} }
} else if (obj instanceof JSONObject) { } else if (obj instanceof JSONObject) {
tmpMaps = (Map<String, Object>)obj; if (Objects.nonNull(condition)) {
Object xmlValue = getXmlValue((Map<String, Object>) obj, condition[0].replaceAll("-", "."));
if (!Objects.equals(condition[1], xmlValue)) {
return null;
}
}
tmpMaps = (Map<String, Object>) obj;
} else { } else {
if ("bigdecimal".equals(type)) { if ("bigdecimal".equals(type)) {
value = new BigDecimal(String.valueOf(obj)); value = new BigDecimal(String.valueOf(obj));
......
...@@ -18,7 +18,7 @@ import java.math.BigDecimal; ...@@ -18,7 +18,7 @@ import java.math.BigDecimal;
import java.util.*; import java.util.*;
public class Mx2ElementCamt053001Creator extends AbstractMx2ElementCreator { public class Mx2ElementCamt053001Creator extends AbstractMx2ElementCreator {
@Override /*@Override
public Map<String, Object> buildElement() { public Map<String, Object> buildElement() {
String messageType = abstractMX.getMxId().getBusinessProcess().name() String messageType = abstractMX.getMxId().getBusinessProcess().name()
+ abstractMX.getMxId().getFunctionality() + abstractMX.getMxId().getFunctionality()
...@@ -54,7 +54,7 @@ public class Mx2ElementCamt053001Creator extends AbstractMx2ElementCreator { ...@@ -54,7 +54,7 @@ public class Mx2ElementCamt053001Creator extends AbstractMx2ElementCreator {
} }
} }
return maps; return maps;
} }*/
private Object invokeHere(String methodName, Object where) { private Object invokeHere(String methodName, Object where) {
try { try {
Method method = getClass().getMethod(methodName); Method method = getClass().getMethod(methodName);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment