holiday.java
来自「一个日本流行的,功能较全的开源Web办公管理(Groupware)系统。」· Java 代码 · 共 299 行
JAVA
299 行
package jp.co.sjts.gsession.main;
import java.io.File;
import java.io.Serializable;
import java.util.Arrays;
import java.util.Hashtable;
import java.util.StringTokenizer;
import java.text.DecimalFormat;
import jp.co.sjts.gsession.tools.*;
/**
* <p>媥擔愝掕
*
* @author Satoru K <koni@sjts.co.jp><br>
* @author Yuuichirou O <ohba@sjts.co.jp><br>
* @author Junichi K <kaneuchi@sjts.co.jp><br>
*/
public class Holiday extends HolidayFile implements IHoliday{
private Hashtable hs;
private String year;
private File mainDir;
/**
* 僐儞僗僩儔僋僞
*
* @param mainDir 僼傽僀儖偺奿擺愭僨傿儗僋僩儕
*/
public Holiday(File mainDir) throws GSException{
this(mainDir,(new GSDate()).getstrYear());
}
public Holiday(File mainDir,String year) throws GSException{
super(mainDir,year);
this.year = year;
this.mainDir = mainDir;
if(hs==null)
hs = new Hashtable();
}
public IHoliday CreateHoliday(String year) throws GSException {
return (IHoliday) new Holiday(mainDir,year);
}
public String howYear() {
return year;
}
Hashtable getDataHash() throws GSException{
return hs;
}
void setDataHash(Hashtable hs) throws GSException{
this.hs = hs;
}
private String __YYMMDD(int y,int m,int d){
return Integer.toString(y) + __MMDD(m,d);
}
private String __MMDD(int m,int d) {
DecimalFormat df = new DecimalFormat("00");
String mm = df.format(m);
String dd = df.format(d);
return mm+dd;
}
/**
* 巜掕寧擔偑媥擔偐傪敾掕偡傞丅
*
* @param month 寧
* @param day 擔
* @return 媥擔偺応崌偼:true丂堘偆応崌:false
*/
public boolean isHoliday(int month,int day) throws GSException{
String mmdd = __MMDD(month,day);
return isHoliday(mmdd);
}
/**
* 巜掕擭寧擔偑媥擔偐丠
*
* @param month 寧
* @param day 擔
* @return 媥擔偺応崌偼:true丂堘偆応崌:false
*/
public boolean isHoliday(int year,int month,int day) throws GSException{
String yyyymmdd = __YYMMDD(year,month,day);
return isHoliday(yyyymmdd);
}
/**
* 巜掕擔晅偑媥擔偐丠
*
* @param date 擔晅("date")
* @return 媥擔偺応崌偼:true丂堘偆応崌:false
*/
public boolean isHoliday(String date) throws GSException{
String datekey = date;
synchronized(hs) {
if(date.length() == 8){
String y = date.substring(0,4);
datekey = date.substring(4,8);
if(!(year.equals(y))){
year = y;
SetFile(y);
if(GetFile().exists())
Load();
else
hs = new Hashtable();
}
}
return hs.containsKey(datekey);
}
}
/**
* 媥擔傪捛壛偡傞丅
*
* @param month 寧
* @param day 擔
* @param title 媥擔柤
* @param update 寧擔偑婛偵偁偭偨応崌偼嫮惂揑偵忋彂偒偡傞偐丅偡傞応崌偼丄true傪僙僢僩偡傞丅
* @exception GSException 婛偵寧擔偑媥擔搊榐偝傟偰偄偰丄update 偑 false 偺応崌
*/
public void addHoliday(int month,int day,String title,int flg,boolean update)
throws GSException{
String mmdd = __MMDD(month,day);
addHoliday(mmdd,title,flg,update);
}
/**
* 媥擔傪捛壛偡傞丅
*
* @param mmdd 寧擔("mmdd")
* @param title 媥擔柤
* @param update 寧擔偑婛偵偁偭偨応崌偼嫮惂揑偵忋彂偒偡傞偐丅偡傞応崌偼丄true傪僙僢僩偡傞丅
* @exception GSException 婛偵寧擔偑媥擔搊榐偝傟偰偄偰丄update 偑 false 偺応崌
*/
public void addHoliday(String mmdd,String title,int flg,boolean update)
throws GSException{
synchronized(hs) {
if(update) {
HolidayData data = new HolidayData(mmdd,title,flg);
hs.put(mmdd,data);
} else {
if(hs.containsKey(mmdd))
throw new GSException("婛偵搊榐嵪傒偱偡");
else{
HolidayData data = new HolidayData(mmdd,title,flg);
hs.put(mmdd,data);
}
}
}
}
/**
* 媥擔傪捛壛偡傞丅
*
* @param month 寧
* @param day 擔
* @param title 媥擔柤
* @exception GSException 婛偵寧擔偑媥擔搊榐偝傟偰偄傞応崌
*/
public void addHoliday(int month,int day,String title,int flg)
throws GSException{
String mmdd = __MMDD(month,day);
addHoliday(mmdd,title,flg,false);
}
/**
* 媥擔傪捛壛偡傞丅
*
* @param mmdd 寧擔("mmdd")
* @param title 媥擔柤
* @exception GSException 婛偵寧擔偑媥擔搊榐偝傟偰偄傞応崌
*/
public void addHoliday(String mmdd,String title,int flg)
throws GSException{
addHoliday(mmdd,title,flg,false);
}
/**
* 媥擔傪嶍彍偡傞丅
*
* @param month 寧
* @param day 擔
* @exception GSException 嶍彍懳徾偺僨乕僞偑懚嵼偟側偄応崌
*/
public void deleteHoliday(int month,int day)
throws GSException{
String mmdd = __MMDD(month,day);
deleteHoliday(mmdd);
}
/**
* 媥擔傪嶍彍偡傞丅
*
* @param mmdd 寧擔("mmdd")
* @exception GSException 嶍彍懳徾偺僨乕僞偑懚嵼偟側偄応崌
*/
public void deleteHoliday(String mmdd)
throws GSException{
synchronized(hs) {
if(hs.containsKey(mmdd)){
hs.remove(mmdd);
}
else{
throw new GSException("懳徾僨乕僞偑懚嵼偟傑偣傫丅");
}
}
}
/**
* 媥擔柤傪庢摼偡傞丅
*
* @param month 寧
* @param day 擔
* @return 媥擔柤丄懳徾偺僨乕僞偑側偄応崌偼 ""
*/
public String getTitle(int month,int day) throws GSException{
String mmdd = __MMDD(month,day);
return getTitle(mmdd);
}
/**
* 媥擔柤傪庢摼偡傞丅
*
* @param year 擭
* @param month 寧
* @param day 擔
* @return 媥擔柤丄懳徾偺僨乕僞偑側偄応崌偼 ""
*/
public String getTitle(int year,int month,int day) throws GSException{
String yyyymmdd = __YYMMDD(year,month,day);
return getTitle(yyyymmdd);
}
/**
* 媥擔柤傪庢摼偡傞丅
*
* @param date "yyyymmdd" or "mmdd"
* @return 媥擔柤丄懳徾偺僨乕僞偑側偄応崌偼 ""
*/
public String getTitle(String date) throws GSException{
synchronized(hs) {
String mmdd = date;
if(date.length() == 8){
String y = date.substring(0,4);
mmdd = date.substring(4,8);
if(!(year.equals(y))){
year = y;
SetFile(y);
if(GetFile().exists())
Load();
else
hs = new Hashtable();
}
}
return ((HolidayData)hs.get(mmdd)).getTitle();
}
}
/**
* 僼儔僌傪庢摼偡傞丅
*
* @param mmdd 寧擔
* @return flg
*/
public int getFlag(String mmdd){
return ((HolidayData)hs.get(mmdd)).getFlag();
}
/**
* 媥擔偺擔晅傪慡偰庢摼偡傞
*
* @return 媥擔偺寧擔暥帤楍("mmdd")傪擔晅徃弴偱暲傫偩攝楍
*/
public String[] getHolidays() {
if(hs == null)
return null;
synchronized(hs) {
if(hs.size()==0)
return null;
String[] mmdds = (String[])hs.keySet().toArray(new String[1]);
Arrays.sort(mmdds);
return mmdds;
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?