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<String> 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<String> 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<String> excludeNames) throws Exception {
|
boolean excluded = false;
|
|
Set<String> nameList = consumer.getVariantNames();
|
|
if (nameList == null) {
|
return excluded;
|
}
|
|
//1. to lower
|
Set<String> lowerSet = new HashSet<String>();
|
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<String> 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<String> excludeNames) throws Exception {
|
boolean excluded = false;
|
|
Set<String> lowerSet = new HashSet<String>();
|
for (String one: excludeNames) {
|
lowerSet.add(one.toLowerCase());
|
}
|
|
Set<String> 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);
|
}
|
|
}
|