package biz.code.segment;
|
|
import biz.code.CodeRule;
|
import biz.code.SegmentCreator;
|
import foundation.data.entity.Entity;
|
import foundation.variant.provider.IVariantsProvider;
|
|
public class DynamicStringSegment extends SegmentCreator {
|
private String ruleCode;
|
private String cachedValue;
|
private Integer sequenceNo;
|
private String detailRule;
|
private String fieldName;
|
private int cutCharCount;
|
private String value;
|
|
|
public DynamicStringSegment() {
|
|
}
|
|
@Override
|
protected void setCodeRule(CodeRule codeRule) {
|
super.setCodeRule(codeRule);
|
ruleCode = codeRule.getCode();
|
String rule = codeRule.getRule();
|
|
//from begin substring:toAPart(field, 4), from behind substring: toZPart(field, 4)
|
int detailRulePos = rule.indexOf("(");
|
int fieldRulePos = rule.indexOf(",");
|
detailRule = detailRulePos < 0 ? "" : rule.substring(0, detailRulePos);
|
fieldName = fieldRulePos < 0 ? "" : rule.substring(detailRulePos + 1, fieldRulePos);
|
String cutCharCountStr = rule.substring(fieldRulePos + 1, rule.length() - 1);
|
cutCharCount = fieldRulePos < 0 ? 0 : Integer.parseInt(cutCharCountStr);
|
value = codeRule.getRule();
|
}
|
|
@Override
|
public String getNextSequenceValue(String dynamic, IVariantsProvider... entitys) {
|
try {
|
//0. 获取片段
|
Entity entity = (Entity)entitys[0];
|
String result = entity.getString(fieldName, dynamic);
|
|
if (detailRule.startsWith("toA")) {
|
result = result.substring(0, cutCharCount);
|
}
|
else if (detailRule.startsWith("toZ")) {
|
result = result.substring(cutCharCount);
|
}
|
|
return result;
|
}
|
catch (Exception e) {
|
return value;
|
}
|
}
|
|
@Override
|
public String getCurrSequenceValue(String dynamic, IVariantsProvider... entitys) {
|
try {
|
//0. 获取片段
|
Entity entity = (Entity)entitys[0];
|
String result = entity.getString(fieldName, dynamic);
|
|
if (detailRule.startsWith("toA")) {
|
result = result.substring(0, cutCharCount);
|
}
|
else if (detailRule.startsWith("toZ")) {
|
result = result.substring(cutCharCount);
|
}
|
return result;
|
}
|
catch (Exception e) {
|
return value;
|
}
|
}
|
|
@Override
|
public String getTempValue(String dynamic, IVariantsProvider... entitys) {
|
String result = format("#");
|
return result;
|
}
|
}
|