package foundation.variant.provider; import java.util.Calendar; import java.util.Date; import java.util.HashSet; import java.util.Set; public class GlobalVariantProvider implements IVariantsProvider { public static String ProviderName = "globalVariant"; public static Set VariantNames; private static GlobalVariantProvider instance; static { VariantNames = new HashSet(); initVariantNames(); } private GlobalVariantProvider() { } public static GlobalVariantProvider getInstance() { if (instance == null) { instance = new GlobalVariantProvider(); } return instance; } @Override public String getProviderName() { return ProviderName; } @Override public VariantProviderType getProviderType() { return VariantProviderType.Persist; } @Override public Set getVariantNames() { return VariantNames; } @Override public boolean containsVariant(String name) { if (name == null) { return false; } name = name.toLowerCase(); return VariantNames.contains(name); } @Override public Object getVariantValue(DataEvent dataEvent, String name) { if ("newdate".equals(name)) { return new Date(); } else if ("newdatetime".equals(name)) { return new Date(); } else if ("current.year".equals(name)) { Calendar calendar = Calendar.getInstance(); return String.valueOf(calendar.get(Calendar.YEAR)); } else if ("current.month".equals(name)) { Calendar calendar = Calendar.getInstance(); return String.valueOf(calendar.get(Calendar.MONTH) + 1); } return null; } public static void initVariantNames() { addOneVariantName("newDate"); addOneVariantName("newDateTime"); addOneVariantName("current.year"); addOneVariantName("current.month"); } public static void addOneVariantName(String name) { VariantNames.add(name.toLowerCase()); } }