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   &lt;koni@sjts.co.jp&gt;<br>
 * @author   Yuuichirou O  &lt;ohba@sjts.co.jp&gt;<br>
 * @author   Junichi K   &lt;kaneuchi@sjts.co.jp&gt;<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 + -
显示快捷键?