package frame.variant.expression;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
|
public abstract class VariantContext implements IVariantRequestListener {
|
|
private List<VariantContext> linkedContextList;
|
|
public VariantContext() {
|
linkedContextList = new ArrayList<VariantContext>();
|
}
|
|
public void setParametersTo(IExpression expression) throws Exception {
|
doSetParametersTo(expression, true);
|
}
|
|
protected void doSetParametersTo(IExpression expression, boolean queryGlabal) throws Exception {
|
VariantList paramList = expression.getVariantList();
|
|
//1. on local
|
for (VariantSegment variant: paramList) {
|
if (!variant.isEmpty()) {
|
continue;
|
}
|
|
String name = variant.getName();
|
String value = getStringValue(name, null);
|
|
if (value != null) {
|
variant.setValue(value);
|
}
|
}
|
|
//2. on linked
|
for (VariantContext linked: linkedContextList) {
|
linked.doSetParametersTo(expression, false);
|
}
|
|
//3.
|
if (queryGlabal) {
|
for (VariantSegment variant: paramList) {
|
if (!variant.isEmpty()) {
|
continue;
|
}
|
|
String name = variant.getName();
|
String value = GlobalVariant.getStringValue(name, null);
|
|
if (value != null) {
|
variant.setValue(value);
|
}
|
}
|
}
|
}
|
|
@Override
|
public List<String> getVariantNames() {
|
return null;
|
}
|
|
@Override
|
public abstract String getStringValue(String name, VariantRequestParams params) throws Exception;
|
|
public void linkContext(VariantContext context) {
|
linkedContextList.add(context);
|
}
|
|
}
|