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

📄 pptaskganttchartservlet.java

📁 本人课程设计时做的一个用struts框架实现的基于cmmi2的项目管理系统的原型。还有部分功能尚未实现
💻 JAVA
字号:

package com.cmmi2pms.chart;
/*
import com.chinaspis.future.dao.Project;
import com.chinaspis.future.domain.TaskCategory;
import com.chinaspis.future.domain.TaskFactory;
*/
import java.util.StringTokenizer;
import java.awt.*;

import java.util.*;
import javax.servlet.http.*;
import org.jfree.chart.*;
import org.jfree.chart.axis.Axis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.Plot;
import org.jfree.data.DefaultPieDataset;
import org.jfree.data.IntervalCategoryDataset;
import org.jfree.data.gantt.*;
import org.jfree.data.time.SimpleTimePeriod;

import com.cmmi2pms.common.DateOp;
import org.apache.log4j.Logger;


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 class PPTaskGanttChartServlet extends GenericChartServlet
{

    private String title;
    private int width;
    private int height;
    private static final String xLabel = null;
    private static final String yLabel = null;
    
    private static Logger logger = Logger.getLogger ("PPTaskGanttChartServlet") ;
    
    private DateOp dop;

    public PPTaskGanttChartServlet()
    {
        title = "任务进度计划";
        width = 700;
        height = 525;
    }

	
    public IntervalCategoryDataset getGanttDataset(HttpServletRequest request, HttpServletResponse response)
    {
//		Project project = (Project)request.getSession().getAttribute("future.project");
		TaskSeries s1 = new TaskSeries("计划进度");

		com.cmmi2pms.pp.task.Task taskitem = new com.cmmi2pms.pp.task.Task() ;	
		com.cmmi2pms.pp.process.Process proc=new com.cmmi2pms.pp.process.Process();
		String taskIdStr = request.getParameter("taskid");
		int taskid = Integer.valueOf(taskIdStr).intValue();
		taskitem.loadTask( taskid );//默认root是1
		
		proc.getTaskInfo(taskid);
						
		String subtaskid = proc.getSubTask();	

		//待处理的子节点列表栈
		ArrayList sub = new ArrayList();
		sub.clear();
		sub.add( new Node(subtaskid,taskid) );
		int count = 1;
		while( !sub.isEmpty() )
		{
			Node sn=(Node)sub.get(0);
			String top = sn.getIdlist();
			int id=sn.getSelfId();
			
			taskitem.loadTask( id );		
			//proc.getTaskInfo(taskid);
			logger.debug("The start time is "+taskitem.getPlanStart().toString());
			logger.debug("The start time is "+taskitem.getPlanEnd().toString());
			
			Task rootTask = new Task( taskitem.getTaskName(), 
						           new SimpleTimePeriod( dop.getDate( taskitem.getPlanStart() ),	
								dop.getDate(taskitem.getPlanEnd()) 
											 )
     				            );
     				            
			StringTokenizer st = new StringTokenizer(top,",");
			st.nextToken();

			String tmpid;
	
			while(st.hasMoreTokens())
			{
				tmpid = st.nextToken(",");
				
				logger.debug("The tmpid is "+tmpid);
				if(tmpid.length()==0)
				{ 
					break;
				}
				
				taskitem = new com.cmmi2pms.pp.task.Task() ;
				taskitem.loadTask(Integer.valueOf(tmpid).intValue());  
				
				logger.debug("The start time is "+taskitem.getPlanStart().toString());
				logger.debug("The start time is "+taskitem.getPlanEnd().toString());
			
				Task tmpTask = new Task( taskitem.getTaskName(), 
						           new SimpleTimePeriod( dop.getDate( taskitem.getPlanStart() ),	
								dop.getDate(taskitem.getPlanEnd()) 
											 )
     				            );
				rootTask.addSubtask( tmpTask );
				count++;
				
				proc.getTaskInfo(Integer.valueOf(tmpid).intValue());
				sub.add( new Node(proc.getSubTask(), proc.getTaskId() ) );

			}		
			s1.add( rootTask );
			sub.remove(0);		
		} //所有的节点已经遍历过,在s1中有所有的列表					

		TaskSeriesCollection collection = new TaskSeriesCollection();
		collection.add(s1);
//		System.out.println(root.getRecursiveCategoryCount());
		height = count * 15 + 100;
		return collection;
    }

/*
    private static Date date(int day, int month, int year)
    {
        Calendar calendar = Calendar.getInstance();
        calendar.set(year, month, day);
        Date result = calendar.getTime();
        return result;
    }
*/
    public DefaultPieDataset getPieDataset(HttpServletRequest request, HttpServletResponse response)
    {
        return null;
    }

    public int getWidth()
    {
        return width;
    }

    public int getHeight()
    {
        return height;
    }

    protected JFreeChart getChart(HttpServletRequest request, HttpServletResponse response)
    {
        title = "Gantt图";
        JFreeChart chart = ChartFactory.createGanttChart(title, yLabel, xLabel, getGanttDataset(request, response), true, false, false);
        chart.setBackgroundPaint(new GradientPaint(0.0F, 0.0F, Color.white, 0.0F, 1000F, Color.orange));
        Font font = new Font("黑体", 0, 12);
        StandardLegend legend = (StandardLegend)chart.getLegend();
        legend.setItemFont(font);
        CategoryPlot plot = (CategoryPlot)chart.getPlot();
        plot.setForegroundAlpha(0.9F);
        org.jfree.chart.axis.CategoryAxis domain_axis = plot.getDomainAxis();
        domain_axis.setTickLabelFont(font);
        org.jfree.chart.axis.ValueAxis value_axis = plot.getRangeAxis();
        value_axis.setTickLabelFont(font);
        return chart;
    }

}

⌨️ 快捷键说明

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