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 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 excludeNames) throws Exception { boolean excluded = false; Set lowerSet = new HashSet(); for (String one: excludeNames) { lowerSet.add(one.toLowerCase()); } List 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 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 excludeNames) throws Exception { boolean excluded = false; Set lowerSet = new HashSet(); for (String one: excludeNames) { lowerSet.add(one.toLowerCase()); } List 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; } }