View Javadoc
1   /******************************************************************************
2    * HomeStatusDom.java - XML Status for PicMan
3    * 
4    * PicMan - The BuckoSoft Picture Manager in Java
5    * Copyright(c) 2007 - Dick Balaska
6    * 
7    */
8   package com.buckosoft.PicMan.dom;
9   
10  import java.util.Date;
11  import java.util.Iterator;
12  import java.util.LinkedList;
13  import java.util.List;
14  
15  import org.dom4j.Document;
16  import org.dom4j.DocumentHelper;
17  import org.dom4j.Element;
18  
19  import com.buckosoft.PicMan.business.PicManFacade;
20  import com.buckosoft.PicMan.domain.ContactParams;
21  import com.buckosoft.PicMan.domain.JobLogEntry;
22  import com.buckosoft.PicMan.domain.User;
23  
24  /** XML Home Page Status for PicMan
25   * @author Dick Balaska
26   * @since 2007/12/01
27   * @see <a href="http://cvs.buckosoft.com/Projects/java/PicMan/PicMan/src/com/buckosoft/PicMan/dom/HomeStatusDom.java">HomeStatusDom.java</a>
28   * @see <a href="http://cvs.buckosoft.com/Projects/java/PicMan/PicMan/src/com/buckosoft/PicMan/dom/PicManStatusDom.java">PicManStatusDom.java</a>
29   */
30  public class HomeStatusDom {
31  	static public Document createDocument(PicManFacade pmf, User user) {
32  		Document document = DocumentHelper.createDocument();
33  		Element root = document.addElement("PicManStatus");
34  		getDateElement(root);
35  		getEngineRunningElement(pmf, root);
36  		getSyncStateElement(pmf, root);
37  		root.addElement("jobLogCount").addText("" + pmf.getJobLog().size());
38  		Element ele = root.addElement("JobLog");
39  		getJobLogs(pmf, ele);
40  		getErrorLog(pmf, root.addElement("ErrorLog"));
41  		getEngineReportAttributes(pmf, root);
42  		root.addElement("homeThumbWidth").addText("" + user.getHomePageThumbWidth());
43  		root.addElement("homeThumb").addText(pmf.getDB().getRandomHomePagePicName(user));
44  		root.addElement("homeThumbDelay").addText("" + user.getHomeThumbDelay());
45  		root.addElement("homeDebug").addText(user.isHomeDebug() ? "1" : "0");
46  //		getNewestContactElement(pmf, root);
47  		return document;
48  	}
49  	
50  	private static void getDateElement(Element ele) {
51  		Date now = new Date();
52  		ele.addElement("date").addText(now.toString());
53  	}
54  
55  	private static void getEngineRunningElement(PicManFacade pmf, Element ele) {
56  		ele.addElement("engineRunningText").addText(pmf.engineRunningShortStatus());
57  	}
58  
59  	private static void getSyncStateElement(PicManFacade pmf, Element ele) {
60  		ele.addElement("syncStateText").addText(pmf.getSyncManager().getSyncStateAsText());
61  	}
62  
63  	private static void getJobLogs(PicManFacade pmf, Element ele) {
64  		List<JobLogEntry> jl = pmf.getJobLog();
65  		int i = 0;
66  		Iterator<JobLogEntry> iter = jl.iterator();
67  		while (iter.hasNext()) {
68  			if (i >= pmf.getJobLogMaxCount())
69  				break;
70  			JobLogEntry jle = iter.next();
71  			ele.add(JobLogEntryDom.getDomElement(pmf, jle));
72  			i++;
73  		}
74  	}
75  
76  	private	static void getErrorLog(PicManFacade pmf, Element ele) {
77  		List<Throwable> el = pmf.getErrorLog();
78  		Iterator<Throwable> iter = el.iterator();
79  		while (iter.hasNext()) {
80  			Throwable t = iter.next();
81  			if (t.getLocalizedMessage() != null)
82  				ele.addElement("Error").addText(t.getLocalizedMessage());
83  			else if (t.getMessage() != null)
84  				ele.addElement("Error").addText(t.getMessage());
85  			else
86  				ele.addElement("Error").addText("No t.getMessage()");
87  		}
88  	}
89  
90  	private	static void getEngineReportAttributes(PicManFacade pmf, Element ele) {
91  		LinkedList<ContactParams>	contactParamsList = pmf.getBatchManager().getContactManager().determineContactsToMake();
92  //		TreeMap<String, SetTodoReport> tm = condenseToDoList(contactParamsList);
93  		List<String>	otherJobs = pmf.getBatchManager().getOtherJobsQueued();
94  		int	jobsToDo = contactParamsList.size() + otherJobs.size() + pmf.getMosaicMan().getMosaicQueueListString().size();
95  		ele.addElement("engineReportTodo").addText("" + jobsToDo);
96  		ele.addElement("engineReportStatus").addText(pmf.engineRunningShortStatus());
97  	}
98  /*	private static void getNewestContactElement(PicManFacade pmf, Element ele) {
99  		Contact c = pmf.getDB().getNewestContact();
100 		String s;
101 		s = c.getName() + " : " + c.getEndTime().toString();
102 		ele.addElement("newestContact").addText(s);
103 
104 		LinkedList<ContactParams>	contactParamsList = pmf.getBatchManager().getContactManager().determineContactsToMake();
105 		TreeMap<String, SetTodoReport> tm = condenseToDoList(contactParamsList);
106 		List<String>	otherJobs = pmf.getBatchManager().getOtherJobsQueued();
107 		int	jobsToDo = tm.size() + otherJobs.size() + pmf.getMosaicMan().getMosaicQueueListString().size();
108 
109 	}
110 */
111 }