⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 task.java

📁 本人课程设计时做的一个用struts框架实现的基于cmmi2的项目管理系统的原型。还有部分功能尚未实现
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*
 * Created on 2004-4-14
 *
 * To change the template for this generated file go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
package com.cmmi2pms.pp.task;

import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.log4j.Logger;

import java.util.*;
import java.util.StringTokenizer;

import com.cmmi2pms.common.comdb.*;

/**
 * <p>This is a bean,which describ a task.Using it,you can get a task informination,
 * or insert a new task into the db's table. 
 * @author xunzy
 * @version 0.01
 */
public class Task 
{

	private int projectId;//项目编号
	private int taskId;//任务/子任务编号
	private String taskName;//任务/子任务名
	private String planStart;//计划起始时间
	private String planEnd;//计划结束时间
	private String realStart;//实际开始时间
	private String realEnd;//实际结束时间
	private String formerTask;//前置子任务,对于任务没有前置,只有子任务有前置任务
	private String wsbId;//WBS码,格式待定,为方便分析
	private boolean isLandMask;//是否里程碑
	private int managerId;//负责人
	private int taskLoad;//工作量(人天)
	private String harves;//成果,在该任务、子任务结束填写
	private String desc;//备注
	
	private String layer;	
	private int parentId;//父任务id
	private String managerName;
	
	private SqlDB dbf;
	private ResultSet rs;
	
	private static Logger logger = Logger.getLogger ("Task") ;

	class Node
	{
	private	String idlist;
	private	int selfId;
	public	Node( String s, int n )
		{
			idlist = s;
			selfId = n;
		}
		public String getIdlist()
		{ 
			return idlist;
		}
		public int getSelfId()
		{
			return selfId;
		}
	}

	public Task() {}
	public void loadTask(int taskid)
	{
		this.taskId = taskid;
		logger.debug("The taskid is "+taskId+" in the Task class");

		try{
			
			dbf=new SqlDB();		
			
			String sql ="select taskname, planend,planstart from pp_scheme where taskid = "+taskId;
			rs=dbf.executeQuery(sql);
			logger.debug("after executeQuery:"+sql);	
			if(rs.next())
			{
				taskName = rs.getString("taskname");			
				logger.debug("The task name is "+taskName);
					
				planEnd = rs.getDate("planend").toString();
				logger.debug("The planend is "+planEnd);
				
				planStart = rs.getDate("planstart").toString();
				
				logger.debug("The planstart is "+planStart);
				//realStart = rs.getDate("realstart").toString();
				//realEnd = rs.getDate("realend").toString();
			}
		
		}
		catch (Exception e)   	
		{
			e.printStackTrace();
		}finally
		{
			close();
		}
	}
	
	private void close()
	{
		try
		{
			if(rs!=null) rs.close();
			logger.debug("close the resultset");
			if(dbf!=null) dbf.close();
			logger.debug("close the sqldb");
		}
		catch(SQLException sqle)
		{
			logger.error("Close SqlDB error: "+sqle.getMessage());
		}
	}
	
	public void getTaskInfo(int taskId)
	{
		this.taskId=taskId;
		logger.debug("The taskId is "+taskId);
		try
		{
			//PooledConnectionMgr.getInstance().initialize(30,"192.168.15.150",3306,"CMMI2PM");
			dbf = new SqlDB();
			String sql="select * from pp_scheme where taskid="+taskId;
			rs=dbf.executeQuery(sql);
			logger.debug(sql);
			fillField(rs);
			logger.debug("The manager is "+managerName);
			logger.debug("The isLandMask is "+isLandMask);

		} catch (Exception e)
		{
			e.printStackTrace();
		}finally
		{
			close();
		}
	}
	public void fillField(ResultSet rs)throws Exception
	{
		try
		{
			if(rs.next())
			{
				projectId=rs.getInt("projectid");
				taskName=rs.getString("taskname");
				planStart=rs.getDate("planstart").toString();
				planEnd=rs.getDate("planend").toString();
				
				java.sql.Date realdate;
				if((realdate=rs.getDate("realstart"))==null)
				{
					realStart=null;
				}else
				{
					realStart=rs.getDate("realstart").toString();
				}
				if((realdate=rs.getDate("realend"))==null)
				{
					realEnd=null;
				}else
				{
					realEnd=rs.getDate("realend").toString();
				}
				//realStart=rs.getDate("realstart").toString();
				//realEnd=rs.getDate("realend").toString();
				formerTask=rs.getString("formertask");
				wsbId=rs.getString("WBSID");
				isLandMask=rs.getBoolean("landmask");
				managerName=rs.getString("manager");
				taskLoad=rs.getInt("taskload");
				harves=rs.getString("harvest");
				desc=rs.getString("describ");
			}
		}catch (Exception e)
		{
			throw new Exception("The resultSet is error: "+e.getMessage());
		}
	}
	
	/**
	 * <p> add a new task
	 * @param atf 
	 */
	public void addTask(AddTaskForm atf)
	{
		logger.debug("The projectId is "+atf.getProjectId());
		//logger.debug("The taskId is "+atf.getTaskId());
		
		projectId=Integer.valueOf(atf.getProjectId()).intValue();
		parentId=Integer.valueOf(atf.getParentId()).intValue();
		//taskId=Integer.valueOf(atf.getTaskId()).intValue();
		taskName=atf.getTaskName();
		planStart=atf.getPlanStart();
		planEnd=atf.getPlanEnd();
		formerTask=atf.getFormerTask();
		wsbId=atf.getWbsId();
		isLandMask=Boolean.valueOf(atf.getLandMark()).booleanValue();
		managerId=Integer.valueOf(atf.getManagerId()).intValue();
		if(atf.getTaskLoad().trim().length()==0)
		{
			taskLoad=0;
		}else
		{
			taskLoad=Integer.valueOf(atf.getTaskLoad()).intValue();
		}
		harves=atf.getHarvest();
		desc=atf.getDesc();
		try
		{
			dbf = new SqlDB();
			
			String sql="select MAX(taskid) maxid from pp_scheme";
			
			rs=dbf.executeQuery(sql);
			
			if(rs.next())
			{
				taskId=rs.getInt("maxid")+1;
				logger.debug("The next id is "+taskId);
			}
			
			sql="select Username  from employee where UserID="+managerId;
			
			rs=dbf.executeQuery(sql);
			
			if(rs.next())
			{
				managerName=rs.getString("Username");
				logger.debug("The user name is "+managerName);
			}
						
			java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd",java.util.Locale.CHINA);
			java.util.Date d = sdf.parse(planStart);  
			java.sql.Date startTime = new java.sql.Date(d.getTime());
			d = sdf.parse(planEnd); 
			java.sql.Date endTime = new java.sql.Date(d.getTime());
	
			sql="INSERT INTO pp_scheme VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
			logger.debug(sql);
			dbf.setSql(sql);
			dbf.setInt(1,projectId);
			dbf.setInt(2,taskId);
			dbf.setString(3,taskName);
			dbf.setDate(4,startTime);		
			dbf.setDate(5,endTime);
			//dbf.setNull(6,java.sql.Types.DATE);
			//dbf.setNull(7,java.sql.Types.DATE);
			dbf.setDate(6,null);
			dbf.setDate(7,null);
			dbf.setString(8,formerTask);
			dbf.setString(9,"NOUSE");
			dbf.setInt(10,isLandMask?1:0);
			dbf.setString(11,managerName);
			dbf.setInt(12,taskLoad);
			dbf.setString(13,harves);
			dbf.setString(14,desc);			
			dbf.execute();
			
			sql="INSERT INTO pp_proestimate VALUES (?,?,?,?,?,?,?,?,?,?,?)";
			logger.debug(sql);
			dbf.setSql(sql);
			dbf.setInt(1,projectId);
			dbf.setInt(2,taskId);
			dbf.setString(3,"noUseNow");
			dbf.setString(4,""+parentId);
			dbf.setDate(5,startTime);		
			dbf.setDate(6,endTime);
			//dbf.setNull(6,java.sql.Types.DATE);
			//dbf.setNull(7,java.sql.Types.DATE);
			dbf.setDate(7,startTime);
			dbf.setDate(8,endTime);
			dbf.setInt(9,managerId);
			dbf.setString(10,"nowNoUse");
			dbf.setString(11,desc);	
			dbf.execute();
			
			
			sql="select subtask from pp_proestimate where taskid="+parentId;
			rs=dbf.executeQuery(sql);
			String newST=null;
			if (rs.next())
			{
				newST=rs.getString("subtask");
			}
			newST=newST+","+taskId;
			sql="update pp_proestimate set subtask=? where taskid="+parentId;
			logger.debug(sql);
			dbf.setSql(sql);
			dbf.setString(1,newST);			
			dbf.execute();
			
			sql="update pp_workloadestimate set isleave=? where taskid="+parentId;
			logger.debug(sql);
			dbf.setSql(sql);
			dbf.setInt(1,1);			
			dbf.execute();
			
			
			getLayer();
			logger.debug("The layer is "+layer);
			sql="INSERT INTO pp_workloadestimate VALUES (?,?,?,?,?,?,?,?,?,?)";
			logger.debug(sql);
			dbf.setSql(sql);
			dbf.setInt(1,projectId);
			dbf.setInt(2,taskId);
			dbf.setInt(3,0);
			dbf.setString(4,taskName);
			dbf.setString(5,layer);	
			
			logger.debug("the managerId is "+managerId);		
			dbf.setInt(6,0);			
			dbf.setInt(7,managerId);
			dbf.setDate(8,new java.sql.Date(System.currentTimeMillis()));
			dbf.setInt(9,taskLoad);
			dbf.setString(10,desc);	
			dbf.execute();
		}
		catch(Exception e)
		{
			logger.error(e);
		}finally
		{
			close();				
		}
	}
	
	private void getLayer()
	{
		Stack ly=new Stack();
		String subId=null;
		try
		{
			//dbf=new SqlDB();
			ly.push(new Integer(taskId));
			ly.push(new Integer(parentId));
			int pid=parentId;
			
			while(pid!=0)
			{
				String sql="select subtask from pp_proestimate where taskid="+pid;
				rs=dbf.executeQuery(sql);
				if(rs.next())
				{
					subId=rs.getString("subtask");
				}
				if(subId.indexOf(",")>=0)
				{
					StringTokenizer st=new StringTokenizer(subId,",");
					subId=st.nextToken();
				}
				pid=Integer.valueOf(subId).intValue();
				ly.push(new Integer(pid));
			}
		}catch(SQLException se)
		{
			logger.error(se);
		}catch(Exception e)
		{

⌨️ 快捷键说明

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