package com.taobao.tddl.rule.impl; import java.util.Map; public class WrappedGroovyRule extends GroovyRule<String> { protected String valuePrefix; // 无getter/setter protected String valueSuffix; // 无getter/setter protected int valueAlignLen = 0; // 无getter/setter public WrappedGroovyRule(String expression, String wrapPattern){ super(expression); setValueWrappingPattern(wrapPattern); } public WrappedGroovyRule(String expression, String wrapPattern, String extraPackagesStr){ super(expression, extraPackagesStr); setValueWrappingPattern(wrapPattern); } private void setValueWrappingPattern(String wrapPattern) { int index0 = wrapPattern.indexOf('{'); if (index0 == -1) { this.valuePrefix = wrapPattern; return; } int index1 = wrapPattern.indexOf('}', index0); if (index1 == -1) { this.valuePrefix = wrapPattern; return; } this.valuePrefix = wrapPattern.substring(0, index0); this.valueSuffix = wrapPattern.substring(index1 + 1); this.valueAlignLen = index1 - index0 - 1; // {0000}中0的个数 } protected static String wrapValue(String prefix, String suffix, int len, String value) { StringBuilder sb = new StringBuilder(); if (prefix != null) { sb.append(prefix); } if (len > 1) { int k = len - value.length(); for (int i = 0; i < k; i++) { sb.append("0"); } } sb.append(value); if (suffix != null) { sb.append(suffix); } return sb.toString(); } @Override public String eval(Map<String, Object> columnValues, Object outerContext) { String value = super.eval(columnValues, outerContext); return wrapValue(valuePrefix, valueSuffix, valueAlignLen, value); } }