package frame.variant;
|
|
import java.util.HashSet;
|
import java.util.List;
|
import java.util.Set;
|
|
import frame.util.Util;
|
|
public class VariantLink {
|
|
public static void moveOnConsumer(IVariantsConsumer consumer, IVariantsProvider... providers) throws Exception {
|
if (providers == null) {
|
return;
|
}
|
|
List<String> nameList = consumer.getVariantNameList();
|
boolean multi = providers.length > 1;
|
boolean first = true;
|
|
for (String name: nameList) {
|
first = true;
|
|
for (IVariantsProvider provider: providers) {
|
if (provider.containsVariant(name)) {
|
if (first || (multi && consumer.isVariantNull(name))) {
|
Object value = provider.getVariantValue(name);
|
consumer.setVariant(name, value);
|
}
|
}
|
|
first = false;
|
}
|
}
|
}
|
|
public static boolean moveOnConsumer(IVariantsProvider provider, IVariantsConsumer consumer, Set<String> excludeNames) throws Exception {
|
boolean excluded = false;
|
|
Set<String> lowerSet = new HashSet<String>();
|
for (String one: excludeNames) {
|
lowerSet.add(one.toLowerCase());
|
}
|
|
List<String> nameList = consumer.getVariantNameList();
|
if (Util.isEmptyStr(nameList)) {
|
return excluded;
|
}
|
for (String name: nameList) {
|
if (lowerSet.contains(name)) {
|
excluded = true;
|
continue;
|
}
|
|
if (provider.containsVariant(name)) {
|
Object value = provider.getVariantValue(name);
|
consumer.setVariant(name, value);
|
}
|
}
|
|
return excluded;
|
}
|
|
|
public static void moveOnProvider(IVariantsProvider provider, IVariantsConsumer consumer) throws Exception {
|
List<String> nameList = provider.getVariantNameList();
|
|
for (String name: nameList) {
|
if (consumer.containsVariant(name)) {
|
Object value = provider.getVariantValue(name);
|
consumer.setVariant(name, value);
|
}
|
}
|
}
|
|
public static boolean moveOnProvider(IVariantsProvider provider, IVariantsConsumer consumer, Set<String> excludeNames) throws Exception {
|
boolean excluded = false;
|
|
Set<String> lowerSet = new HashSet<String>();
|
for (String one: excludeNames) {
|
lowerSet.add(one.toLowerCase());
|
}
|
|
List<String> nameList = provider.getVariantNameList();
|
|
for (String name: nameList) {
|
if (lowerSet.contains(name)) {
|
excluded = true;
|
continue;
|
}
|
|
if (consumer.containsVariant(name)) {
|
Object value = provider.getVariantValue(name);
|
consumer.setVariant(name, value);
|
}
|
}
|
|
return excluded;
|
}
|
|
}
|