Package com.defaultcompany.web.gantt.model

Source Code of com.defaultcompany.web.gantt.model.GanttChartModel

package com.defaultcompany.web.gantt.model;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Vector;

import org.uengine.kernel.GlobalContext;
import org.uengine.kernel.viewer.gantt.GanttChartUtil;
import org.uengine.persistence.dao.GanttChartDAO;

public class GanttChartModel {

  public final static String VIEW_TYPE_MONTH="month";
  public final static String VIEW_TYPE_DAY="day";
  public final static String VIEW_TYPE_WEEK="week";
 
 
  private GanttChartDAO ganttDao;
    public void setGanntChartDao(GanttChartDAO ganttDao){
      this.ganttDao = ganttDao;
    }
   
    public GanttChartDAO getGanttChartDao(){
      return ganttDao;
    }
   
  Calendar firstDate;
    public void setFirstDate(Calendar firstDate){
      this.firstDate = firstDate;
    }
   
    public Calendar getFirstDate(){
      return firstDate;
    }
     
  Calendar lastDate;
    public void setLastDate(Calendar lastDate){
      this.lastDate = lastDate;
    }
   
    public Calendar getLastDate(){
      return lastDate;
    }
   
  Calendar now;
    public void setNowDate(Calendar nowDate){
      this.now = nowDate;
    }
   
    public Calendar getNowDate(){
      return now;
    }
   
   
  int firstDayOfMonth;
    public void setFirstDayOfMonth(int month){
      this.firstDayOfMonth = month;
    }
   
    public int getFirstDayOfMonth(){
      return firstDayOfMonth;
    }
   
  int lastDateOfMonth;
    public void setLastDayOfMonth(int month){
      this.lastDateOfMonth = month;
    }
   
    public int getLastDayOfMonth(){
      return lastDateOfMonth;
    }
   
 
  int monthOfNow;
    public void setMonthOfNow(int month){
      this.monthOfNow = month;
    }
   
    public int getMonthOfNow(){
      return monthOfNow;
    }
   
  String endpoint;
    public void setEndpoint(String endpoint){
      this.endpoint = endpoint;
    }
   
    public String getEndpoint(){
      return endpoint;
    }
 
  String pd;
    public void setPd(String pd){
      this.pd = pd;
    }
   
    public String getPd(){
      return pd;
    }
 
  String orderby;
    public void setOrderby(String orderby){
      this.orderby = orderby;
    }
   
    public String getOrderby(){
      return orderby;
    }
 
  boolean loggedUserIsMaster;
    public void setLoggedUserIsMaster(boolean loggedUserIsMaster){
      this.loggedUserIsMaster = loggedUserIsMaster;
    }
   
    public boolean getLoggedUserIsMaster(){
      return loggedUserIsMaster;
    }
   
   
  public String ganttChartTitleToHTML(int currentPage,int intPageCnt) throws Exception{
   
    currentPage=currentPage==0?1:currentPage;
    intPageCnt=intPageCnt==0?10:intPageCnt;
    orderby=orderby.equals("")?"instance":orderby;
   
   
    StringBuilder sb = new StringBuilder()
    int totalCount = ganttDao.size();

    Calendar today = Calendar.getInstance();
    int todayDate = today.get(Calendar.DATE);
    String oldProcessInstance = "";
    String oldResName = "";

    int rowCount = 0;
   
    int firstRowCount = (currentPage == 1) ? 0 : (currentPage-1) * intPageCnt + 1;
    int lastRowCount = (currentPage * intPageCnt);
   
    String startdate="";
    String enddate="";
    String colTitle = "";
   
    if (orderby.equals("resource")) {
      colTitle = GlobalContext.getLocalizedMessageForWeb("By_Instance", "ko", "Instance");
    } else if (orderby.equals("instance")) {
        colTitle = GlobalContext.getLocalizedMessageForWeb("Resource", "ko", "Resource");
    }
   
   
    sb.append("<table  style='table-layout:fixed;' bgcolor='#C7D3E4'  border='0' cellspacing='0' cellpadding='0' WIDTH='100%' align='left' >");
    sb.append("  <tr  style='border:1px solid #C7D3E4; background:url(../images/Common/tabletitle.gif) repeat-x;height:30px;color:#29384a;font-weight:bold;font-size:11px;'>");
    sb.append("    <th width=70%  style='border:1px solid #C7D3E4;'>"+GlobalContext.getLocalizedMessageForWeb("Task", "ko", "Task") +"</th>");
    sb.append("    <th width=30%  style='border:1px solid #C7D3E4;'>"+colTitle+"</th>");
   
    sb.append("  </tr>");
   
    while(ganttDao.next()){
     
      rowCount++;
     
      if (rowCount >= firstRowCount && rowCount <= lastRowCount) {
     
        int  start=1, end=-1, dueDate=-1;
        String status = ganttDao.getStatus();
       
       
       
       
        try{
          if(ganttDao.getStartDate()!=null){
            Calendar startCalendar = Calendar.getInstance();
            startCalendar.setTime(ganttDao.getStartDate());
            startdate=(ganttDao.getStartDate()).toString();
            //System.out.println(startdate);
   
            if(startCalendar.before(firstDate))
              start = 1;
            else
              start = ganttDao.getStartDate().getDate();
          }else
            start = todayDate;
   
          if(ganttDao.getEndDate()!=null){
            Calendar endCalendar = Calendar.getInstance();
            endCalendar.setTime(ganttDao.getEndDate());
           
            if(endCalendar.before(firstDate))
              end = 1;
            else
              end = ganttDao.getEndDate().getDate();
          }else
            end = todayDate;
   
          if(ganttDao.getDueDate()!=null){
            Calendar dueDateCalendar = Calendar.getInstance();
            dueDateCalendar.setTime(ganttDao.getDueDate());
            enddate=(ganttDao.getDueDate()).toString();
            //System.out.println(enddate);
           
            if(dueDateCalendar.before(firstDate)){
              dueDate = 0;
            }else if(dueDateCalendar.after(lastDate)){
              dueDate = lastDateOfMonth;//implicitly make it out of bound
            }else{
              dueDate = ganttDao.getDueDate().getDate();
            }
          }else{
            dueDate = end;
          }
         
         
          if(!ganttDao.getStatus().equals("COMPLETED") && dueDate < end){
            status="DELAY";
          }
   
        }catch(Exception e){
          //e.printStackTrace();
        }

        if(status.equals("Skipped") || status.equals("CANCELLED") || status.equals("Stopped") || status.equals("Timeout"))
          end = dueDate;
   
        if(end==-1) end = todayDate;
        else if(end<start) end = lastDateOfMonth;
   
        int drawingEnd = (dueDate > end ? dueDate:end);
   
        String processInstanceLabel;
       
        if(orderby.equals("instance")){
         
   
            if(oldProcessInstance.equals(""+ganttDao.getInstId())){
              processInstanceLabel = "";
            }else{
             
              if(rowCount>1){
                sb.append("<tr ><td height='15px' colspan='2' bgcolor='#FFFFFF' style='border:none;'></td></tr>");
             
             
             
              processInstanceLabel = ganttDao.get("name") + " ("+ganttDao.getInstId()+")";
              oldProcessInstance = ""+ganttDao.getInstId();
 
              String instStatus=(String)ganttDao.get("inststatus");
              String statusClass="runsectiontitle";
              if(instStatus!=null && instStatus.equals("Completed"))
                statusClass="comsectiontitle";
              else if(instStatus!=null && instStatus.equals("Running"))
                statusClass="runsectiontitle";
              else if(instStatus!=null &&instStatus.equals("DELAY"))
                statusClass="delaysectiontitle";
             
               
              sb.append("<tr class='gantable'>");
              sb.append("  <td colspan='2' bgcolor='#FFFFFF' style='padding-left:5px;  height:30px;' >");
              sb.append("  <span class='"+statusClass+"' style='position:relative;  z-index:1'><nobr><a href=\"javascript:openProcess('"+ganttDao.getInstId()+"')\"><b style='color:#2E4074'>"+processInstanceLabel+"</b></a></nobr></span>");
              sb.append("  </td>");
              sb.append("</tr>");

            }
   
            String userName = ganttDao.getResName();

 
            sb.append("<tr class='gantable'>");
 
             sb.append("<td bgcolor=#F4F4F4 style='padding-left:5px;text-overflow:ellipsis; overflow:hidden;' height='17'><nobr>"+ganttDao.getTitle()+"</nobr></td>");
             sb.append("<td bgcolor=#F4F4F4 align=center height='17' style='text-overflow:ellipsis; overflow:hidden;'><nobr>"+userName+"</nobr></td>");
         
             sb.append("</tr>");
 
            }else{
             
              String userName = ganttDao.getResName();

                if(oldResName.equals(""+userName)){
              userName = "";
            }else{
              oldResName = ""+userName;
             
              if(rowCount>1){
                sb.append("<tr><td height='15px' colspan='2' bgcolor='#FFFFFF' style='border:none;'></td></tr>");
             
             
              sb.append("<tr class='gantable'>");
              sb.append("  <td colspan='2' bgcolor='#FFFFFF' style='padding-left:5px; height:30px;'><span class='sectiontitle' >");
              sb.append("  <a href=\"javascript:openProcess('"+ganttDao.getInstId()+"')\"><b style='color:#2E4074'>"+userName+"</b></a></span>");
              sb.append("  </td>");
              sb.append("</tr>");
             

            }
   
                processInstanceLabel = ganttDao.get("name") + " ("+ganttDao.getInstId()+")";

 
            sb.append("<tr class='gantable'>");
 
             sb.append("<td bgcolor=#F4F4F4 style='padding-left:5px;' height='17'>"+ganttDao.getTitle()+"</td>");
             sb.append("<td bgcolor=#F4F4F4 align=left><a href=\"javascript:openProcess('"+ganttDao.getInstId()+"')\"><b style='color:#2E4074'>"+processInstanceLabel+"</b></a></td>");
            
             sb.append("</tr>");
             
             
            }
      }// end if
    } //end while

    sb.append("</table>");
   
   
   
     
    return sb.toString();
  }
 
 
 
 
public String ganttChartListToHTML(int currentPage,int intPageCnt,String viewMode) throws Exception{
   
    currentPage=currentPage==0?1:currentPage;
    intPageCnt=intPageCnt==0?10:intPageCnt;
    orderby=orderby.equals("")?"instance":orderby;
   
   
    StringBuilder sb = new StringBuilder()
    int totalCount = ganttDao.size();

    Calendar today = Calendar.getInstance();
    int todayDate = today.get(Calendar.DATE);
    String oldProcessInstance = "";
    String oldResName = "";
   
    int rowCount = 0;
   
    int firstRowCount = (currentPage == 1) ? 0 : (currentPage-1) * intPageCnt + 1;
    int lastRowCount = (currentPage * intPageCnt);
   
   
    Calendar firstDate=Calendar.getInstance();
    firstDate.set(Calendar.YEAR, now.get(Calendar.YEAR));
    firstDate.set(Calendar.MONTH, 0);
    firstDate.set(Calendar.DATE, 1);
   
    Calendar lastDate=Calendar.getInstance();
    lastDate.set(Calendar.YEAR, now.get(Calendar.YEAR));
    lastDate.set(Calendar.MONTH, 11);
    lastDate.set(Calendar.DATE, 31);
   
   
    if(viewMode.equals(VIEW_TYPE_DAY)){
      int nDaysList[] = {31 , 28 , 31 , 30 ,31 ,30, 31, 31 , 30 ,31 ,30 ,31};
      rowCount = 0;
     
      firstRowCount = (currentPage == 1) ? 0 : (currentPage-1) * intPageCnt + 1;
      lastRowCount = (currentPage * intPageCnt);
     
      String startdate="";
      String enddate="";
      String duedate="";
      String colTitle = "";
      int curdays=0;
     
     
      int todayMonth=today.getTime().getMonth();
      for(int i=0; i<todayMonth; i++){
        curdays=curdays+nDaysList[i];
      }
     
      curdays = curdays+today.getTime().getDate();
     
     
     
      if (orderby.equals("resource")) {
        colTitle = GlobalContext.getLocalizedMessageForWeb("By_Instance", "ko", "Instance");
      } else if (orderby.equals("instance")) {
          colTitle = GlobalContext.getLocalizedMessageForWeb("Resource", "ko", "Resource");
      }
     
      //document.getElementById('idsu_map').style.width=document.getElementById('td').offsetWidth;
      sb.append("<table style='table-layout:fixed;' bgcolor='#C7D3E4' border='0' cellspacing='0' cellpadding='0' WIDTH='100%' align='left' >");
      sb.append("  <tr style='border:1px solid #C7D3E4; background:url(../images/Common/tabletitle.gif) repeat-x;height:15px;color:#29384a;font-weight:bold;font-size:11px;'>");
      int tempCount=0;
     
      for(int i=0; i<nDaysList.length; i++){
       
        for(int j=1; j<=nDaysList[i]; j++){
          tempCount++;
          sb.append("<td width=15  style='border:1px solid #C7D3E4;'>");     
          if(tempCount==curdays) {
            sb.append("  <div style='position:relative; width:100%'><div id='curBarDiv' style='position:absolute;width:15;height:10;z-index:2;filter:alpha(opacity=50);background-color:#F2E3BD;opacity:0.5;'  ></div></div>");                 
          }
         
          sb.append("  <div style='position:relative; width:100%' align='center'>");
          sb.append("<font size='-2'>"+j+"</font>");
          if((j + firstDayOfMonth)%7==0) {
            sb.append("<font color=red>"+j+"</font>");
          }
          sb.append("</div>");
         
         
          sb.append("</td>");
        }
       
      }
     
     
      sb.append("  </tr>");
     
      sb.append("  <tr style='border:1px solid #C7D3E4; background:url(../images/Common/tabletitle.gif) repeat-x;height:15px;color:#29384a;font-weight:bold;font-size:11px;'>");
 
      for(int i=0; i<nDaysList.length; i++){
        sb.append("<th colspan='"+nDaysList[i]+"'  style='border:1px solid #C7D3E4;'>"+(i+1)+"M</th>");
      }
      sb.append("  </tr>");
     
     
     
      while(ganttDao.next()){
       
        rowCount++;
       
        if (rowCount >= firstRowCount && rowCount <= lastRowCount) {
       
          int  start=-1, end=-1, dueDate=-1;
          String status = ganttDao.getStatus();
         
         
          try{
           
           
           
           
            if(ganttDao.getStartDate()!=null){
              Calendar startCalendar = Calendar.getInstance();
              startCalendar.setTime(ganttDao.getStartDate());
              startdate=(ganttDao.getStartDate()).toString();
              //System.out.println(startdate);
             
             
              //System.out.println("firstdate:"+firstDate.getTime());
     
              if(startCalendar.before(firstDate)){
                start = 1;
              }else{
                int startMonth=ganttDao.getStartDate().getMonth();
                for(int i=0; i<startMonth; i++){
                  start=start+nDaysList[i];
                }
                start = start+ganttDao.getStartDate().getDate();
              }
            }else{
              int startMonth=now.get(Calendar.MONTH);
              for(int i=0; i<startMonth; i++){
                start=start+nDaysList[i];
              }
              start = start+todayDate;
             
            }
     
            if(ganttDao.getEndDate()!=null){
              Calendar endCalendar = Calendar.getInstance();
              endCalendar.setTime(ganttDao.getEndDate());
             
              if(endCalendar.before(firstDate)){
                end = 1;
              }else{
               
                int endMonth=ganttDao.getEndDate().getMonth();
                for(int i=0; i<endMonth; i++){
                  end=end+nDaysList[i];
                }
                end = end+ganttDao.getEndDate().getDate();
              }
            }else{
              int endMonth=now.get(Calendar.MONTH)-1;
              for(int i=0; i<endMonth; i++){
                end=end+nDaysList[i];
              }
              end = todayDate;
            }
     
            if(ganttDao.getDueDate()!=null){
              Calendar dueDateCalendar = Calendar.getInstance();
              dueDateCalendar.setTime(ganttDao.getDueDate());
             
             
              if(dueDateCalendar.before(firstDate)){
                dueDate = 0;
              }else if(dueDateCalendar.after(lastDate)){
                dueDate = 365;//implicitly make it out of bound
              }else{
                int endMonth=dueDateCalendar.get(Calendar.MONTH);
                for(int i=0; i<endMonth; i++){
                  dueDate=dueDate+nDaysList[i];
                }
                dueDate = dueDate+ganttDao.getDueDate().getDate();
              }
            }else{
              dueDate = end;
            }
           
           
            if(!ganttDao.getStatus().equals("COMPLETED") && dueDate < end){
              status="DELAY";
            }
     
          }catch(Exception e){
            //e.printStackTrace();
          }
 
          if(status.equals("Skipped") || status.equals("CANCELLED") || status.equals("Stopped") || status.equals("Timeout"))
            end = dueDate;
     
          if(end==-1) end = todayDate;
          else if(end<start) end = lastDateOfMonth;
     
          int drawingEnd = (dueDate > end ? dueDate:end);
     
          String processInstanceLabel;
         
          if(orderby.equals("instance")){
     
     
              if(oldProcessInstance.equals(""+ganttDao.getInstId())){
                processInstanceLabel = "";
              }else{
                processInstanceLabel = ganttDao.get("name") + " ("+ganttDao.getInstId()+")";
                oldProcessInstance = ""+ganttDao.getInstId();
   
                if(rowCount>1){
                  sb.append("<tr><td height='15px' colspan='365' bgcolor='#FFFFFF' style='border:none;'></td></tr>");
               
               
                sb.append("<tr class='gantable'>");
                sb.append("  <td colspan='365' bgcolor='#FFFFFF' style='padding-left:5px; height:30px;'><span class='sectiontitle' >");
                sb.append("  &nbsp;");
                sb.append("  </td>");
                sb.append("</tr>");
 
              }
     
              String userName = ganttDao.getResName();
 
   
              sb.append("<tr class='gantable'>");
   
              for(int d=1; d<start; d++){
                sb.append("<td bgcolor=white></td>");
              }
             
              GanttChartUtil ganttChartUtil = new GanttChartUtil();
               String chartBar = ganttChartUtil.getGanttChartBarHtml(start,drawingEnd, end, dueDate, status);
               sb.append(chartBar);
              
               if(drawingEnd<365) {
                 for(int d=drawingEnd+1; d<=365; d++){
                  sb.append("<td bgcolor=white></td>");
                 }
               }
              
              
               sb.append("</tr>");
   
              }else{
               
               
               
               
                String userName = ganttDao.getResName();

                  if(oldResName.equals(""+userName)){
                userName = "";
              }else{
                oldResName = ""+userName;
               
   
                sb.append("<tr class='gantable'>");
                sb.append("  <td colspan='365' bgcolor='#FFFFFF' style='padding-left:5px; height:30px;'><span class='sectiontitle' >");
                sb.append("  &nbsp;");
                sb.append("  </td>");
                sb.append("</tr>");
               

              }
 
               
               
     
 
   
              sb.append("<tr class='gantable'>");
   
              for(int d=1; d<start; d++){
                sb.append("<td bgcolor=white></td>");
              }
             
              GanttChartUtil ganttChartUtil = new GanttChartUtil();
               String chartBar = ganttChartUtil.getGanttChartBarHtml(start,drawingEnd, end, dueDate, status);
               sb.append(chartBar);
              
               if(drawingEnd<365) {
                 for(int d=drawingEnd+1; d<=365; d++){
                  sb.append("<td bgcolor=white></td>");
                 }
               }
              
              
               sb.append("</tr>");
               
               
              }
        }
      } //end while
     
      sb.append("</table>");
    }else if(viewMode.equals(VIEW_TYPE_MONTH)){
     
      rowCount = 0;     
      firstRowCount = (currentPage == 1) ? 0 : (currentPage-1) * intPageCnt + 1;
      lastRowCount = (currentPage * intPageCnt);
      int curMonth=today.getTime().getMonth()+1;
     
     
     
      sb.append("<table style='table-layout:fixed;' bgcolor='#C7D3E4'  border='0' cellspacing='0' cellpadding='0' WIDTH='100%' align='left' >");
           
      sb.append("  <tr style='border:1px solid #C7D3E4; background:url(../images/Common/tabletitle.gif) repeat-x;height:30px;color:#29384a;font-weight:bold;font-size:11px;'>");
     
      int tempCount=0;
      for(int i=1; i<=12; i++){
       
        tempCount++;
        sb.append("<td  style='border:1px solid #C7D3E4;' valign='top'>");
        if(tempCount==curMonth) {
          sb.append("  <div style='position:relative; width:100%'><div id='curBarDiv' style='position:absolute;width:100%;height:10;z-index:2;filter:alpha(opacity=50);background-color:#F2E3BD;opacity:0.5;'></div><div>");           
        }
        sb.append("<div style='position:relative; width:100%' align='center'><font size='-2'>"+i+"M</font><div>");
        sb.append("</td>");
       
      }
   
     
      sb.append("</tr>");
     
      while(ganttDao.next()){
       
        rowCount++;
       
        if (rowCount >= firstRowCount && rowCount <= lastRowCount) {
          String startdate=(ganttDao.getStartDate()).toString().substring(0,10);
          String enddate=(ganttDao.getEndDate()).toString().substring(0,10);
          String duedate=(ganttDao.getDueDate()).toString().substring(0,10);
         
         
         
          int startMonth=1;
          int startday=1;
         
          int endMonth=1;
          int endday=1;
         
          int dueMonth=1;
          int dueday=1;
         
          if(ganttDao.getStartDate()!=null){
            Calendar startCalendar = Calendar.getInstance();
            startCalendar.setTime(ganttDao.getStartDate());
            startdate=(ganttDao.getStartDate()).toString();
            //System.out.println(startdate);
           
           
           
   
            if(startCalendar.before(firstDate)){
              startMonth = 1;
              startday=(100-(100/31))/10;
            }else{
              startMonth=Integer.parseInt(startdate.substring(5,7));
              startday=(100-(Integer.parseInt(startdate.substring(8,10))*(100/31)))/10;
            }
          }else{
            startMonth=now.get(Calendar.MONTH)+1;
           
            startday =now.get(Calendar.DAY_OF_MONTH);           
          }
         
         
          if(ganttDao.getEndDate()!=null){
            Calendar endCalendar = Calendar.getInstance();
            endCalendar.setTime(ganttDao.getEndDate());
           
            if(endCalendar.before(firstDate)){
              endMonth = 1;
              endday = (100-(100/31))/10;
            }else{
              endMonth=Integer.parseInt(enddate.substring(5,7));
              endday=(Integer.parseInt(enddate.substring(8,10))*(100/31))/10;
            }
          }else{
            startMonth=now.get(Calendar.MONTH)+1;           
            startday =now.get(Calendar.DAY_OF_MONTH);
          }
   
          if(ganttDao.getDueDate()!=null){
            Calendar dueDateCalendar = Calendar.getInstance();
            dueDateCalendar.setTime(ganttDao.getDueDate());
           
           
            if(dueDateCalendar.before(firstDate)){
              dueMonth = 0;
              dueday = 0;
            }else if(dueDateCalendar.after(lastDate)){
              dueMonth = 12;//implicitly make it out of bound
              dueday = 31;
            }else{
              dueMonth=Integer.parseInt(duedate.substring(5,7));
              dueday=(Integer.parseInt(duedate.substring(8,10))*(100/31))/10;
            }
          }else{
            dueMonth=endMonth;
            dueday=endday;
          }
         
         
         
         
         
         
         
          int drawEndMonth=dueMonth>endMonth?dueMonth:endMonth;
             
          //System.out.println(startMonth+"  "+startday+"  "+endMonth+"  "+endday);
         
          float start=(float)(startMonth*10+startday)/10;   
          float end=(float)(endMonth*10+endday)/10;;
          float dueDate=(float)(dueMonth*10+dueday)/10;
          float drawingEnd=(float)dueDate>end?dueDate:end;
          //System.out.println(start+"  "+end);
         
          String status=ganttDao.getStatus();
         
          if(!ganttDao.getStatus().equals("COMPLETED") && dueDate < end){
            status="DELAY";
          }
         
          String processInstanceLabel;
         
          if(orderby.equals("instance")){
     
     
              if(oldProcessInstance.equals(""+ganttDao.getInstId())){
                processInstanceLabel = "";
              }else{
                processInstanceLabel = ganttDao.get("name") + " ("+ganttDao.getInstId()+")";
                oldProcessInstance = ""+ganttDao.getInstId();
               
                if(rowCount>1){
                  sb.append("<tr><td height='15px' colspan='12' bgcolor='#FFFFFF' style='border:none;'></td></tr>");
                }
   
                sb.append("<tr class='gantable'>");
                sb.append("  <td colspan='12' bgcolor='#FFFFFF' style='padding-left:5px; height:30px;'><span class='sectiontitle' >");
                sb.append("  &nbsp;");
                sb.append("  </td>");
                sb.append("</tr>");
 
              }
     
              String userName = ganttDao.getResName();
 
   
              sb.append("<tr class='gantable'>");
             
             
            for(int j=1; j<startMonth; j++){
              sb.append("<td bgcolor=white></td>");
            }
           
            GanttChartUtil ganttChartUtil = new GanttChartUtil(now,"white","month");
              String chartBar = ganttChartUtil.getGanttChartBarHtml(start,drawingEnd, end, dueDate, status);
              sb.append(chartBar);
             
              for(int j=drawEndMonth+1; j<=12; j++){
                sb.append("<td bgcolor=white></td>");               
              }
              sb.append("</tr>");
          }else{
           
           
           
           
           
           
           
           
           
           
            String userName = ganttDao.getResName();

                  if(oldResName.equals(""+userName)){
                userName = "";
              }else{
                oldResName = ""+userName;
               
               
                if(rowCount>1){
                  sb.append("<tr><td height='15px' colspan='365' bgcolor='#FFFFFF' style='border:none;'></td></tr>");
                }
               
   
                sb.append("<tr class='gantable'>");
                sb.append("  <td colspan='"+12+"' bgcolor='#FFFFFF' style='padding-left:5px; height:30px;'><span class='sectiontitle' >");
                sb.append("  &nbsp;");
                sb.append("  </td>");
                sb.append("</tr>");
               

              }
 
           

             
     
           
 
   
              sb.append("<tr class='gantable'>");
             
             
            for(int j=1; j<startMonth; j++){
              sb.append("<td bgcolor=white></td>");
            }
           
            GanttChartUtil ganttChartUtil = new GanttChartUtil(now,"white","month");
              String chartBar = ganttChartUtil.getGanttChartBarHtml(start,drawingEnd, end, dueDate, status);
              sb.append(chartBar);
             
              for(int j=drawEndMonth+1; j<=12; j++){
                sb.append("<td bgcolor=white></td>");
              }
              sb.append("</tr>");
           
           
           
           
          }
        }
       
      }
      sb.append("</table>");
    }else{     
     
     
      
      rowCount = 0;     
      firstRowCount = (currentPage == 1) ? 0 : (currentPage-1) * intPageCnt + 1;
      lastRowCount = (currentPage * intPageCnt);
     
      Vector weekInfo=new Vector();
     
      String FIRST_DATE = Integer.toString( firstDate.get(Calendar.YEAR) );
      FIRST_DATE += "-";
      FIRST_DATE += "01";
      FIRST_DATE += "-";
      FIRST_DATE += "01";
     
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        Date date = df.parse(FIRST_DATE);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
       
        int startDateWeekDay=7-(calendar.get(Calendar.DAY_OF_WEEK)-2);
        int endDateWeekDay=(365-startDateWeekDay)%7;       
        int totalWeek=(365-startDateWeekDay)/7+2;
       
        int curWeek=today.get(Calendar.WEEK_OF_YEAR);
       
        if(curWeek==1){
        if((today.getTime().getMonth()+1)!=1){
          curWeek=totalWeek;
        }
      }
         
     
     
       
       
       
       
     
      sb.append("<table  style='table-layout:fixed;' bgcolor='#C7D3E4'  border='0' cellspacing='0' cellpadding='0' WIDTH='100%' align='left' >");
      sb.append("  <tr style='background:url(../images/Common/tabletitle.gif) repeat-x;height:15px;color:#29384a;font-weight:bold;font-size:11px;'>");
     
      int startWidthPixel=0;
      int endWidthPixel=0;
      int tempCount=0;
     
      for(int i=0; i<totalWeek; i++){       
        int tempWidth=50;
        if(i==0){
          tempWidth=Float.valueOf((float)50/100*((float)100/7*startDateWeekDay)).intValue();
          startWidthPixel=tempWidth;
        }else if(i==totalWeek-1){
          tempWidth=Float.valueOf((float)50/100*(100/7*endDateWeekDay)).intValue();
          endWidthPixel=tempWidth;
        }
        tempCount++;
        sb.append("<td style='border:1px solid #C7D3E4;' width='"+tempWidth+"px'>");       
        if(tempCount==curWeek) {         
          sb.append("  <div style='position:relative; width:100%'><div id='curBarDiv' style='position:absolute;width:"+tempWidth+"px;height:10;z-index:2;filter:alpha(opacity=50);background-color:#F2E3BD;opacity:0.5;'></div><div>");                 
        }
        sb.append("  <div style='position:relative; width:100%' align='center'><font size='-3' align='center'>"+(i+1)+"W</font><div>");       
        sb.append("</td>");   
      }
     
      sb.append("  </tr>");
      sb.append("  <tr  style='height:15px;'>");
      sb.append("    <td colspan='"+totalWeek+"'>");
      sb.append("      <table border='0'  cellspacing='0' cellpadding='0' WIDTH='100%'>");
      sb.append("        <tr style='background:url(../images/Common/tabletitle.gif) repeat-x;color:#29384a;font-weight:bold;font-size:11px;'>");
      int totalWidthPixel=startWidthPixel+endWidthPixel+(50*(totalWeek-2));
      int oneDayWidthPixel=totalWidthPixel/365;
      int nDaysList[] = {31 , 28 , 31 , 30 ,31 ,30, 31, 31 , 30 ,31 ,30 ,31};
     
      for(int i=0; i<nDaysList.length; i++){
           
        int tempWidth=oneDayWidthPixel*nDaysList[i];
        String tempWidthStr=tempWidth+"px";
        if(i==nDaysList.length-1)tempWidthStr="*";
       
        sb.append("          <td  align='center' style=' border:1px solid #C7D3E4; border-left-style:none; border-top-style:none; border-bottom-style:none' width='"+tempWidthStr+"'>");
        sb.append("            <font size='-2'>");
       
        sb.append(i+1+"M");
       
        sb.append(            "</font>");
        sb.append("          </td>");
      }
     
      sb.append("        </tr>");
      sb.append("      </table>");
      sb.append("    </td>");
      sb.append("  </tr>");
     
     
     
     
     
     
     
      while(ganttDao.next()){
       
        rowCount++;
       
        if (rowCount >= firstRowCount && rowCount <= lastRowCount) {
          String startdate=(ganttDao.getStartDate()).toString().substring(0,10);
          String enddate=(ganttDao.getEndDate()).toString().substring(0,10);
          String duedate=(ganttDao.getDueDate()).toString().substring(0,10);
         
          Calendar startdateCal=Calendar.getInstance()
          startdateCal.setTime(ganttDao.getStartDate());
         
            Calendar enddateCal=Calendar.getInstance()
            enddateCal.setTime(ganttDao.getEndDate());
           
            Calendar duedateCal=Calendar.getInstance()
            duedateCal.setTime(ganttDao.getDueDate());
           
           
           
            int startWeek=1;
          int startWeekDay=1;         
         
          int endWeek=1;
          int endWeekDay=1;
                   
          int dueWeek=1;
          int dueWeekday=1
         
         
          if(ganttDao.getStartDate()!=null){
           
            if(startdateCal.before(firstDate)){
              startWeek = 1;
              startWeekDay=7*(100/7)/10;
            }else{
              startWeek=startdateCal.get(Calendar.WEEK_OF_YEAR);
              startWeekDay=(7-(startdateCal.get(Calendar.DAY_OF_WEEK)-1))*(100/7)/10;
             
              if(startWeek==1){
                if(!startdate.substring(5,7).equals("01")){
                  startWeek=totalWeek;
                }
              }
             
             
            }
          }else{
            startWeek=now.get(Calendar.WEEK_OF_YEAR);
            startWeekDay =(7-(now.get(Calendar.DAY_OF_WEEK)-1))*(100/7)/10;            
          }
         
         
          if(ganttDao.getEndDate()!=null){
           
            if(enddateCal.before(firstDate)){
              endWeek = 1;
              endWeekDay = 7*(100/7)/10;
            }else{
              endWeek=enddateCal.get(Calendar.WEEK_OF_YEAR);
              endWeekDay=(100-(7-(enddateCal.get(Calendar.DAY_OF_WEEK)-1))*(100/7))/10;
             
              if(endWeek==1){
                if(!enddate.substring(5,7).equals("01")){
                  endWeek=totalWeek;
                }
              }
            }
          }else{
            endWeek=now.get(Calendar.WEEK_OF_YEAR);
            endWeekDay =(7-(now.get(Calendar.DAY_OF_WEEK)-1))*(100/7)/10;
          }
   
          if(ganttDao.getDueDate()!=null){
         
            if(duedateCal.before(firstDate)){
              dueWeek = 0;
              dueWeekday = 0;
            }else if(duedateCal.after(lastDate)){
              dueWeek = 12;//implicitly make it out of bound
              dueWeekday = 7*(100/7)/10;
            }else{
              dueWeek=duedateCal.get(Calendar.WEEK_OF_YEAR);
              dueWeekday=(100-(7-(duedateCal.get(Calendar.DAY_OF_WEEK)-1))*(100/7))/10;
             
              if(dueWeek==1){
                if(!duedate.substring(5,7).equals("01")){
                  dueWeek=totalWeek;
                }
              }
               
            }
          }else{
            dueWeek=now.get(Calendar.WEEK_OF_YEAR);
            dueWeekday =(7-(now.get(Calendar.DAY_OF_WEEK)-1))*(100/7)/10;
          }
         
         
         
         
         
          int drawEndWeek=dueWeek>endWeek?dueWeek:endWeek;
             
          //System.out.println(startWeek+"  "+startWeekDay+"  "+endWeek+"  "+endWeekDay);
         
          float start=(float)(startWeek*10+startWeekDay)/10;   
          float end=(float)(endWeek*10+endWeekDay)/10;;
          float dueDate=(float)(dueWeek*10+dueWeekday)/10;
          float drawingEnd=(float)dueDate>end?dueDate:end;
          //System.out.println(start+"  "+end);
         
          String status=ganttDao.getStatus();
         
          if(!ganttDao.getStatus().equals("COMPLETED") && dueDate < end){
            status="DELAY";
          }
         
          String processInstanceLabel;
         
          if(orderby.equals("instance")){
     
     
              if(oldProcessInstance.equals(""+ganttDao.getInstId())){
                processInstanceLabel = "";
              }else{
                processInstanceLabel = ganttDao.get("name") + " ("+ganttDao.getInstId()+")";
                oldProcessInstance = ""+ganttDao.getInstId();
               
                if(rowCount>1){
                  sb.append("<tr><td height='15px' colspan='"+totalWeek+"' bgcolor='#FFFFFF' style='border:none;'></td></tr>");
                }
   
                sb.append("<tr class='gantable'>");
                sb.append("  <td colspan='"+totalWeek+"' bgcolor='#FFFFFF' style='padding-left:5px; height:30px;'><span class='sectiontitle' >");
                sb.append("  &nbsp;");
                sb.append("  </td>");
                sb.append("</tr>");
 
              }
     
              String userName = ganttDao.getResName();
 
   
              sb.append("<tr class='gantable'>");
             
             
            for(int j=1; j<startWeek; j++){
              sb.append("<td bgcolor=white></td>");
            }
           
            GanttChartUtil ganttChartUtil = new GanttChartUtil(now,"white","week");
              String chartBar = ganttChartUtil.getGanttChartBarHtml(start,drawingEnd, end, dueDate, status);
              sb.append(chartBar);
             
              for(int j=drawEndWeek+1; j<=totalWeek; j++){
                sb.append("<td bgcolor=white></td>");
              }
              sb.append("</tr>");
          }else{
           
           
           
           
           
           
           
           
            String userName = ganttDao.getResName();

                  if(oldResName.equals(""+userName)){
                userName = "";
              }else{
                oldResName = ""+userName;
               
                if(rowCount>1){
                  sb.append("<tr><td height='15px' colspan='"+totalWeek+"' bgcolor='#FFFFFF' style='border:none;'></td></tr>");
                }
               
   
                sb.append("<tr class='gantable'>");
                sb.append("  <td colspan='"+totalWeek+"' bgcolor='#FFFFFF' style='padding-left:5px; height:30px;'><span class='sectiontitle' >");
                sb.append("  &nbsp;");
                sb.append("  </td>");
                sb.append("</tr>");
               

              }
 
   
              sb.append("<tr class='gantable'>");
             
             
            for(int j=1; j<startWeek; j++){
              sb.append("<td bgcolor=white></td>");
            }
           
            GanttChartUtil ganttChartUtil = new GanttChartUtil(now,"white","week");
              String chartBar = ganttChartUtil.getGanttChartBarHtml(start,drawingEnd, end, dueDate, status);
              sb.append(chartBar);
             
              for(int j=drawEndWeek+1; j<=totalWeek; j++){
                sb.append("<td bgcolor=white></td>");
              }
              sb.append("</tr>");
           
           
           
           
           
           
          }
        }
       
      }
      sb.append("</table>");
     
     
     
    }
   
   
     
    return sb.toString();
  }

  public String toXML() {
    return "";
  }

  public String toJSON() {
    return "";
  }
 
}
TOP

Related Classes of com.defaultcompany.web.gantt.model.GanttChartModel

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.