package foundation.variant.provider; import java.util.HashSet; import java.util.Set; import foundation.util.Util; public class VariantLink { public static void fillOnConsumer(DataEvent dataEvent, IVariantsConsumer consumer, IVariantsProvider... providers) throws Exception { if (providers == null) { return; } Set nameList = consumer.getVariantNames(); for (String name: nameList) { //如果已经有值就不重新添加了 if (!consumer.isVariantNull(name)) { continue; } for (IVariantsProvider provider: providers) { if (provider == null) { continue; } if (provider.containsVariant(name)) { Object value = provider.getVariantValue(dataEvent, name); setCustomerValue(dataEvent, consumer, name, value); } } } } public static void overWriteOnConsumer(DataEvent dataEvent, IVariantsConsumer consumer, IVariantsProvider... providers) throws Exception { if (providers == null) { return; } Set nameList = consumer.getVariantNames(); for (String name: nameList) { for (IVariantsProvider provider: providers) { if (provider == null) { continue; } if (provider.containsVariant(name)) { Object value = provider.getVariantValue(dataEvent, name); setCustomerValue(dataEvent, consumer, name, value); } } } } public static boolean moveOnConsumer(DataEvent dataEvent, IVariantsProvider provider, IVariantsConsumer consumer, Set excludeNames) throws Exception { boolean excluded = false; Set nameList = consumer.getVariantNames(); if (nameList == null) { return excluded; } //1. to lower Set lowerSet = new HashSet(); for (String one: excludeNames) { lowerSet.add(one.toLowerCase()); } //2. compare for (String name: nameList) { if (lowerSet.contains(name)) { excluded = true; continue; } if (provider.containsVariant(name)) { Object value = provider.getVariantValue(dataEvent, name); setCustomerValue(dataEvent, consumer, name, value); } } return excluded; } public static void moveOnProvider(DataEvent dataEvent, IVariantsProvider provider, IVariantsConsumer consumer) throws Exception { Set nameList = provider.getVariantNames(); for (String name: nameList) { if (consumer.containsVariant(name)) { Object value = provider.getVariantValue(dataEvent, name); setCustomerValue(dataEvent, consumer, name, value); } } } public static boolean moveOnProvider(DataEvent dataEvent, IVariantsProvider provider, IVariantsConsumer consumer, Set excludeNames) throws Exception { boolean excluded = false; Set lowerSet = new HashSet(); for (String one: excludeNames) { lowerSet.add(one.toLowerCase()); } Set nameList = provider.getVariantNames(); for (String name: nameList) { if (lowerSet.contains(name)) { excluded = true; continue; } if (consumer.containsVariant(name)) { Object value = provider.getVariantValue(dataEvent, name); setCustomerValue(dataEvent, consumer, name, value); } } return excluded; } private static void setCustomerValue(DataEvent dataEvent, IVariantsConsumer consumer, String name, Object value) throws Exception { if (Util.isEmpty(value)) { return; } consumer.setVariant(dataEvent, name, value); } }