package foundation.period; import java.util.Calendar; import java.util.Date; import java.util.HashSet; import java.util.Set; import foundation.variant.provider.DataEvent; import foundation.variant.provider.IVariantsProvider; import foundation.variant.provider.VariantCenter; import foundation.variant.provider.VariantExistsException; import foundation.variant.provider.VariantProviderType; public class ActivePeriod implements IVariantsProvider { public static String ProviderName = "activePeriod"; private static ActivePeriod instance; private static Object lock = new Object(); private String id; private int year; private int month; private int day; private int monthNo; private static Set paramNames; static { createInstance(); } private ActivePeriod() { paramNames = new HashSet(); Date now = new Date(); Calendar calendar = Calendar.getInstance(); calendar.setTime(now); year = calendar.get(Calendar.YEAR); month = calendar.get(Calendar.MONTH) + 1; day = calendar.get(Calendar.DAY_OF_MONTH); monthNo = year * 100 + month; } public static ActivePeriod getInstance() { if (instance == null) { synchronized (lock) { if (instance == null) { instance = new ActivePeriod(); } } } return instance; } public static synchronized ActivePeriod createInstance() { instance = new ActivePeriod(); return instance; } public static void init(String id, int year, int month) throws VariantExistsException { ActivePeriod period = getInstance(); period.id = id; period.year = year; period.month = month; period.monthNo = year * 100 + month; paramNames.add("period.year"); paramNames.add("period.month"); paramNames.add("period.monthno"); VariantCenter.getInstance().registPersist(paramNames, period); } public String getId() { return instance.id; } public static int getYear() { return instance.year; } public static int getMonth() { return instance.month; } public static int getDay() { return instance.day; } public static int getMonthNo() { return instance.monthNo; } @Override public String getProviderName() { return ProviderName; } @Override public VariantProviderType getProviderType() { return VariantProviderType.Persist; } @Override public boolean containsVariant(String name) { if (name == null) { return false; } return paramNames.contains(name); } @Override public Object getVariantValue(DataEvent dataEvent, String name) { if (name == null) { return null; } name = name.toLowerCase(); if ("period.year".equals(name)) { return String.valueOf(year); } else if ("period.month".equals(name)) { return String.valueOf(month); } else if ("period.monthno".equals(name)) { return String.valueOf(monthNo); } return null; } @Override public Set getVariantNames() { return paramNames; } }