timecard.java

来自「一个日本流行的,功能较全的开源Web办公管理(Groupware)系统。」· Java 代码 · 共 1,263 行 · 第 1/4 页

JAVA
1,263
字号
package jp.co.sjts.gsession.timecard;

import java.util.StringTokenizer;
import java.util.Iterator;
import java.util.Collection;
import java.io.PrintWriter;
import java.io.IOException;
import java.io.File;
import java.util.Hashtable;
import java.util.Enumeration;
import java.util.Properties;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.ServletConfig;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import jp.co.sjts.gsession.tools.*;

/**
 * <p>TimeCard 偺儊僀儞  TimeCard.java
 *
 * @author Yuuichirou Ohba   &lt;ohba@sjts.co.jp&gt;
 * @author Masako IWAMOTO    &lt;masako@sjts.co.jp&gt;
 * @author Hideyuki KITADE   &lt;kitade@sjts.co.jp&gt;
 */
public class TimeCard extends ModBaseServlet{

	CreatePage page = null;
	private Hashtable hsInitData = null;
	private Properties properties = null;
	private GSDate cal = null;
	private String MapURL = null;
	private String HelpURL = null;
	private String mainURL = null;
	private String hiduke = null;
	private String url ;
	private IUserManager UM = null;
	private int uid;
	private String hour;
	private String min;
	private String from = "丂";
	private String to = "丂";
	private String bikou ="丂";
	private String yymm = null;
	private String userDir;
	private String timecardDir;

	/**
	 * <P>弶婜壔傪峴偄傑偡
	 * @param config  ServletConfig
	 */
	public void init(ServletConfig config) throws ServletException
	{
		cal = new GSDate();
		super.init(config);
		properties = System.getProperties();
		hsInitData = new Hashtable();
		
		try{
			/* 僨乕僞奿擺梡偺僨傿儗僋僩儕傪庢摼(椺丗"c:\DATADIR\")*/
			timecardDir = getInitParameter(TCCmd.TC_DIR);
			if(timecardDir!=null){
  				if(!timecardDir.endsWith("/"))
  					timecardDir+="/";
				
				userDir = timecardDir+"user/";    /* 儐乕僓枅偺僨乕僞僨傿儗僋僩儕僷僗巜掕*/
				String UserDir = userDir;         /* 儐乕僓枅偺僨乕僞僨傿儗僋僩儕*/
				
				timecardDir = timecardDir.replace('/',this.properties.getProperty("file.separator").charAt(0));
				UserDir = UserDir.replace('/',this.properties.getProperty("file.separator").charAt(0));
				
				/* 僨傿儗僋僩儕偺桳岠惈傪僠僃僢僋*/
				try{
					File dir1 = new File(timecardDir);
					if(!dir1.exists()) {		  /* 僨傿儗僋僩儕偼懚嵼偡傞偐*/
						if(!dir1.mkdirs())	      /* 懚嵼偟側偄応崌偼丄嶌惉傪帋傒傞*/
							throw new ServletException("僨傿儗僋僩儕嶌惉偵帋傒偨偑幐攕偟傑偟偨丅");
					}
				} catch (SecurityException e) {
					throw new ServletException("傾僋僙僗尃僄儔乕:"+timecardDir);
				}
				hsInitData.put(TCCmd.TC_DIR,timecardDir);
				/* 僨傿儗僋僩儕偺桳岠惈傪僠僃僢僋*/
				try{
					File dir2 = new File(UserDir);
					if(!dir2.exists()) {		  /* 僨傿儗僋僩儕偼懚嵼偡傞偐*/
						if(!dir2.mkdirs())	      /* 懚嵼偟側偄応崌偼丄嶌惉傪帋傒傞*/
							throw new ServletException("僨傿儗僋僩儕嶌惉偵帋傒偨偑幐攕偟傑偟偨丅");
					}
				} catch (SecurityException e) {
					throw new ServletException("傾僋僙僗尃僄儔乕:"+UserDir);
				}
				hsInitData.put(TCCmd.TC_USER,UserDir);
				
			}else{
				throw new ServletException("InitParameter not find \"timecardDir\"");
			}
				
			/* 儊僀儞偺URL傪庢摼*/
			mainURL = getMainURL();
			if(mainURL!=null){
				hsInitData.put(TCCmd.TC_MAIN,mainURL);
			}else{
				throw new GSException("弶婜抣偺庢摼偵幐攕(儊僀儞倀俼俴)");
			}
			
			/* 儅僢僾梡偺url傪庢摼*/
			MapURL = getMapURL();
			if(MapURL!=null)
				hsInitData.put(TCCmd.TC_MAP,MapURL);
			else
				throw new ServletException("InitParameter not find \"MapDir\"");
			
			/* Help梡偺URL傪庢摼*/
		    HelpURL = getHelpURL();
			if(HelpURL!=null)
				hsInitData.put("help",HelpURL);
			else
				throw new ServletException("InitParameter not find \"HelpURL\"");
						
		} catch (Exception e) {
			throw new ServletException(e.toString());
		}
	}
		
	/**
	 * <P>GET偱庴偗庢偭偨僒乕僽儗僢僩儕僋僄僗僩丄儗僗億儞僗丄僷儔儊乕僞傪Dispatch偵曉偟傑偡丅
	 * @param hsPara  僴僢僔儏僥乕僽儖偵奿擺偝傟偨僷儔儊乕僞
	 * @param req     僒乕僽儗僢僩儕僋僄僗僩
	 * @param res     僒乕僽儗僢僩儗僗億儞僗
	 */
	public void GSdoGet(Hashtable hsPara,HttpServletRequest req,HttpServletResponse res)
		throws ServletException, IOException
	{
		try {
			/* 僷儔儊乕僞側偟偺帪偼MAIN儁乕僕偲偡傞*/
			if(hsPara == null) {
				hsPara = new Hashtable();
				String[] value = {Integer.toString(TCCmd.TC_TIMECARD)};
				hsPara.put(TCCmd.PA_CMD,value);
			}
			Dispatch(hsPara,req,res);
			
		} catch(Exception e) {
			log("TimeCard::GSdoGet",e);
			CreateErrorPage epage = new CreateErrorPage(CreateErrorPage.ERR
														,MapURL,GSTool.removeParaFormURI(req.getRequestURI()));
			return;
		}
	}

	/**
	 * <P>POST偱庴偗庢偭偨僒乕僽儗僢僩儕僋僄僗僩丄儗僗億儞僗丄僷儔儊乕僞傪Dispatch偵曉偟傑偡丅
	 * @param hsPara  僴僢僔儏僥乕僽儖偵奿擺偝傟偨僷儔儊乕僞
	 * @param req     僒乕僽儗僢僩儕僋僄僗僩
	 * @param res     僒乕僽儗僢僩儗僗億儞僗
	 */
	public void GSdoPost(Hashtable hsPara,HttpServletRequest req,HttpServletResponse res)
		throws ServletException, IOException
	{
		try {
			/* 僷儔儊乕僞側偟偺帪偼MAIN儁乕僕偲偡傞*/
			if(hsPara == null) {
				hsPara = new Hashtable();
				String[] value = {Integer.toString(TCCmd.TC_TIMECARD)};
				hsPara.put(TCCmd.PA_CMD,value);
			}
			Dispatch(hsPara,req,res);
			
		} catch(Exception e) {
			log("TimeCard::GSdoGet",e);
			CreateErrorPage epage = new CreateErrorPage(CreateErrorPage.ERR
														,MapURL,GSTool.removeParaFormURI(req.getRequestURI()));
			epage.write(req,res);
			return;
		}
	}
	
	public String getServletInfo(){
		return "Group Session Servlet ver. 1.1";
	}
	
	/**
	 * <P>GET丄POST偱庴偗庢偭偨僒乕僽儗僢僩儕僋僄僗僩丄儗僗億儞僗丄僷儔儊乕僞傪傕偲偵張棟傪幚峴偟傑偡丅
	 * @param hsPara  僴僢僔儏僥乕僽儖偵奿擺偝傟偨僷儔儊乕僞
	 * @param req     僒乕僽儗僢僩儕僋僄僗僩
	 * @param res     僒乕僽儗僢僩儗僗億儞僗
	 */
	private void Dispatch(Hashtable hsPara,HttpServletRequest req,HttpServletResponse res)
		throws GSException {

		HttpSession session = req.getSession(false);
		Integer sessionUID = (Integer)session.getAttribute(GSBase.SESSION_PARA_UID);
		Integer sessionstrUID = (Integer)session.getAttribute(GSBase.SESSION_PARA_UID);
		String sessionUNAME = (String)session.getAttribute(GSBase.SESSION_PARA_UNAME);
		String gid = (hsPara.get(TCCmd.PA_GID)!=null)?(String)((String[])hsPara.get(TCCmd.PA_GID))[0]:"-1";
		String xid = (hsPara.get(TCCmd.PA_XID)!=null)?(String)((String[])hsPara.get(TCCmd.PA_XID))[0]:"-1";
		CreatePage page=null;
		uid = sessionUID.intValue();
		UM = getUserManager(req);
		
		/* sessionUID傪xid偵僙僢僩*/
		if((xid).equals("-1")){
			xid = Integer.toString(uid);
		}
		String hiduke = cal.getstrDay();
		String sid = Integer.toString(uid);
		String uri = GSTool.removeParaFormURI(req.getRequestURI());
		int y = cal.getYear();
		int m = cal.getMonth();
		int day = cal.getDay();
		int cmd = Integer.parseInt((String)((String[])hsPara.get(TCCmd.PA_CMD))[0]);
		UserConfFile uconf = new UserConfFile(userDir,xid);
		AdminConfFile adconf;
		DayData dayData ;
		TCFile tfile = null;
		String[] bufs;
		String buf1;
		String buf2;
		String buf3;
		String buf4;
		String buf5;
		String buf6;
		String buf7;
		String buf8;
		String NULL = null;
		String d_start = null;
		String d_stop = null;
		boolean chkon = false;
		boolean hit =false;

		adconf = new AdminConfFile(timecardDir);
		String time = adconf.GetTime();
		if((gid).equals("-1")){                   /* 僨僼僅儖僩僌儖乕僾僙僢僩*/
			if((xid).equals("0")){                /* admin僠僃僢僋*/
				gid = "0";                        /* 娗棟幰僌儖乕僾*/
			}else{
				IUser iuser = UM.getUser(uid);
				gid = Integer.toString(iuser.getDefaultGroup());
			}
		}
		
		int[] alluid = UM.getUidArray(Integer.parseInt(gid));
		boolean blnFlg = false;
		
		if(alluid == null){                       /* 儐乕僓偑強懏偟偰偄側偄応崌*/
			if(uid==0){                           /* admin僠僃僢僋*/
				gid = "0";                        /* 娗棟幰僌儖乕僾*/
			}else{
				IUser iuser = UM.getUser(uid);
				gid = Integer.toString(iuser.getDefaultGroup());
			}
			alluid = UM.getUidArray(Integer.parseInt(gid));
			xid = Integer.toString(uid);
			blnFlg = true;
		}
		
		for(int i = 0 ; i < alluid.length ; i++){
			if(Integer.parseInt(xid) == alluid[i]){
				blnFlg = true;
			}
		}
		if (blnFlg == false){                     /* 嵼愋偟偰偄側偄応崌*/
			xid = Integer.toString(alluid[0]);    /* 攝楍偺侽斣栚傪僙僢僩*/
		}

		switch(cmd) {
		case TCCmd.TC_MONTH:{                     /* 僞僀儉僇乕僪乮寧娫堏摦)*/
						
			if( UM.isSU(uid) ){
				sid = (hsPara.get("s_user")!=null)?(String)((String[])hsPara.get("s_user"))[0]:"-1";
			}
			/* 慜寧*/
			bufs = (String[])hsPara.get("zmon.x");
				y = Integer.parseInt((String)((String[])hsPara.get(TCCmd.PA_YY))[0]);
				m = Integer.parseInt((String)((String[])hsPara.get(TCCmd.PA_MM))[0]);
			if(bufs!=null) {
				m--;
				if(m == 0){
					y--;
					m = 12;
				}
			}
			/* 崱寧*/
			bufs = (String[])hsPara.get("kmon.x");
			if(bufs!=null) {
				cal = new GSDate();
				y = cal.getYear();
				m = cal.getMonth();
			}
			/* 梻寧*/
			bufs = (String[])hsPara.get("ymon.x");
			if(bufs!=null) {
				m++;
				if(m == 13){
					y++;
					m = 1;
				}
			}

			/* 嶍彍幚峴儃僞儞*/
			bufs = (String[])hsPara.get("del1.x");
			if(bufs!=null){

				if(Integer.parseInt(xid) != uid){//尃尷偑柍偗傟偽僄儔乕夋柺傊
					CreateErrorPage epage = new CreateErrorPage("晄惓側張棟偱偡丅尃尷偑偁傝傑偣傫丅",
																MapURL,GSTool.
																removeParaFormURI(req.getRequestURI())
																);
					epage.write(req,res);
					return;
				}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?