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<String> paramNames;
|
|
|
static {
|
createInstance();
|
}
|
|
private ActivePeriod() {
|
paramNames = new HashSet<String>();
|
|
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<String> getVariantNames() {
|
return paramNames;
|
}
|
|
}
|