首页 > 其他分享 >项目管理工具----普加项目管理中间件(PlusProject )入门教程(11):msProject项目的导入和导出(中)

项目管理工具----普加项目管理中间件(PlusProject )入门教程(11):msProject项目的导入和导出(中)

时间:2023-09-08 17:05:31浏览次数:40  
标签:11 name 项目管理 hs nd 中间件 equals put null

普加项目管理中间件是用于跨浏览器和跨平台应用程序的功能齐全的 Gantt 图表,可满足项目管理应用程序的所有需求,是最完善的甘特图图表库。

.net下可以导入xml和.mpp,微软提供了Microsoft.Office.Interop.MSProject.dll,可以将mpp文件转换成xml格式,我们提供了Plusoft.dll对xml文件进行了解析处理,转换成可读的格式存入到数据库中。

private static HashMap getObjectFromXML(Element root) throws Exception {
		NodeList lst = root.getChildNodes();
		HashMap hs = new HashMap();		
		if (lst == null){
			return null;
		}
		for (int it = 0; it <  lst.getLength(); it++){
			Node nd = lst.item(it);
			NodeList tmp = nd.getChildNodes();
			String name = nd.getNodeName();
			String value =  null;
			if(tmp != null && tmp.item(0) != null){
				value = tmp.item(0).getNodeValue();
			}
			//String
			if(	name.equals("UID")
				|| name.equals("Name")
				|| name.equals("CalendarUID")
				|| name.equals("DefaultStartTime")
				|| name.equals("DefaultFinishTime")
			){
				hs.put(name, value);
			}
			//Int
			if(	name.equals("MinutesPerDay")
				|| name.equals("MinutesPerWeek")
				|| name.equals("DaysPerMonth")
				|| name.equals("WeekStartDay")
			){
				hs.put(name, toInt(value));
			}
			//Date
			if(	name.equals("CreationDate") 
				|| name.equals("LastSaved")
				|| name.equals("StartDate") 
				|| name.equals("FinishDate")
			){
				hs.put(name, parseDate(value));
			}
			
			if(	name.equals("Calendars")){
				hs.put(name, getCalendars(nd));
			}
			if(	name.equals("Assignments")){
				hs.put(name, getAssignments(nd));
			}
			if(	name.equals("Resources")){
				hs.put(name, getResources(nd));
			}
			if(	name.equals("Tasks")){
				hs.put(name, getTasks(nd));
			}			
			//ExtendedAttributes
			if(name.equals("ExtendedAttributes")){				
				hs.put("ExtendedAttributes", getNodesList(nd));				
			}
			//OutlineCodes
			if(name.equals("OutlineCodes")){
				ArrayList list = new ArrayList();
				NodeList node_list = nd.getChildNodes();
				for (int i = 0; i < node_list.getLength(); i++){
					NodeList child = node_list.item(i).getChildNodes();				
					if (child.getLength() > 0){
						//OutlineCode						
						HashMap o = new HashMap();
						for (int j = 0; j < child.getLength(); j++){	
							Node _node = child.item(j);	
							String nodeName = _node.getNodeName();				
							putNodeValue(o, _node);	
							if(nodeName.equals("Masks")){
								o.put("Masks", getNodesList(_node));				
							}
							if(nodeName.equals("Values")){
								o.put("Values", getNodesList(_node));				
							}
						}
						list.add(o);
					}					
				}
				hs.put("OutlineCodes", list);				
			}
		}		
        //Calendars
        ArrayList calendars = (ArrayList)hs.get("Calendars");
        for(int i=0,l=calendars.size(); i<l; i++)
        {
        	HashMap calendar = (HashMap)calendars.get(i);                             
            ArrayList WeekDays = (ArrayList)calendar.get("WeekDays");            
            if(WeekDays == null) continue;
            ArrayList Exceptions = (ArrayList)calendar.get("Exceptions");          
            if(Exceptions == null){
            	Exceptions = new ArrayList();
            	calendar.put("Exceptions", Exceptions);
            }
            for (int j = WeekDays.size() - 1; j >= 0; j--)
            {
            	HashMap weekday = (HashMap)WeekDays.get(j);
                if (weekday.get("DayType") == null || weekday.get("DayType").toString().equals("0"))
                {
                    //Exceptions.add(weekday);
                    WeekDays.remove(weekday);
                }
            }
        }        
        if (calendars != null && calendars.size() > 0 && (hs.get("CalendarUID") == null || hs.get("CalendarUID").toString().equals("null")))
        {
            hs.put("CalendarUID", ((Map)calendars.get(0)).get("UID"));
        }
        
		return hs;
	}

标签:11,name,项目管理,hs,nd,中间件,equals,put,null
From: https://blog.51cto.com/u_16081226/7411530

相关文章

  • 项目管理工具----普加项目管理中间件(PlusProject )入门教程(11):msProject项目的导入和导
    普加项目管理中间件是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表,可满足项目管理应用程序的所有需求,是最完善的甘特图图表库。同样普加项目管理中间件提供了导出方法,可以导出XML格式的文件,这个文件可以在微软project中直接打开展示。varwin=newPlusProject.ExportPro......
  • 项目管理工具----普加项目管理中间件(PlusProject )入门教程(12):前锋线
    普加项目管理中间件是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表,可满足项目管理应用程序的所有需求,是最完善的甘特图图表库。前锋线,是指从检查时刻的时标点出发,用点划线依次将各项工作实际进展位置点连接而成的折线。通过实际进度前锋线与原进度计划中各工作箭线交点的......
  • 项目管理工具----普加项目管理中间件(PlusProject )入门教程(11):msProject项目的导入和导
    普加项目管理中间件是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表,可满足项目管理应用程序的所有需求,是最完善的甘特图图表库。除了上文介绍的加载json数据的方式展示外,更常用的方式是导入。普加项目管理中间件支持导入微软project两种格式的文件,xml和mpp,这里的文件解析都......
  • 计算2111苏峻威
    |这个作业属于哪个课程|https://edu.cnblogs.com/campus/jmu/ComputerScience21/||-----------------|---------------||这个作业要求在哪里|https://edu.cnblogs.com/campus/jmu/ComputerScience21/homework/13033||这个作业的目标|Github的使用|自我介绍这是......
  • AutoC平台搭建指南(基于NXP i.MX RT1170 MCUXPresso开发环境建设 @Like)
    AutoC平台搭建指南(基于NXPi.MXRT1170MCUXPresso开发环境建设@Like)(2022-11-17)目录1.功能需求 2.硬件平台 3.软件工具环境 4.建设基础 5.安装开发工具和环境 5.1.MCUXpressoIDE 5.2.i.MXRT1170SDK 5.3.GUI-Guider-1.4.1-GA 6.创建应用工程 6.1.导入SDK例程 6.1.1.......
  • AutoC平台搭建指南(基于NXP i.MX RT1170 MCUXPresso开发环境建设 @Like)
    AutoC平台搭建指南(基于NXPi.MXRT1170MCUXPresso开发环境建设@Like)(2022-11-17) 目录1.功能需求2.硬件平台3.软件工具环境4.建设基础5.安装开发工具和环境5.1.MCUXpressoIDE5.2.i.MXRT1170SDK5.3.GUI-Guider-1.4.1-GA6.创建应用工程6.1.导入SDK例程6......
  • 线程安全的队列:使用Monitor模式和C++11多线程库
    线程安全的队列:使用Monitor模式和C++11多线程库引言在多线程编程中,数据共享是一个关键的问题。如果多个线程需要访问同一个数据结构,不正确的管理会导致数据不一致甚至程序崩溃。本文将介绍如何使用C++11的多线程库和Monitor模式来实现一个线程安全的队列。Monitor模式Monitor模式......
  • 【230908-11】六对数函数图像比较
    【图像】【代码】<!DOCTYPEhtml><htmllang="utf-8"><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><head><title>六对数函数比较</title><styletype="text/css"&......
  • CF1103C 题解
    2023-09-0514:52:07solution找路径很好找,我们随便跑个dfs树找个深度\(\ge\frac{n}{k}\)的路径输出即可。可是怎么找\(k\)个长度不是\(3\)的倍数的环呢?既然我们跑了dfs树,那么就没有横叉边,对于叶子节点非树边只有返祖边,然后一看这个很奇怪的条件——保证每个点度数大......
  • 集美大学计算2111张艺勇
    这个作业属于哪个课程计算2111这个作业要求在哪里工程概论开篇(第一次作业)这个作业的目标Github和Git工具的使用,Markdown文档编写,工程概论课程初步了解自我介绍我来自集美计算机工程学院,曾任科创委员、文体委员、辅导员助理、党建助手,现任班助,院就业会主......