%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page trimDirectiveWhitespaces="true" %> <%@ page import="org.crosswire.community.projects.ntmss.data.ProjectManagement" %> <%@ page import="org.crosswire.community.projects.ntmss.data.DocumentGroup" %> <%@ page import="java.util.Vector" %> <%@ page import="org.crosswire.xml.XMLBlock" %> <%@ page import="org.apache.log4j.Logger" %> <%@ page import="org.crosswire.community.RightsAndRoles" %> <% Logger logger = Logger.getLogger("project/get"); String projectIDString = request.getParameter("projectID"); String projectNameString = request.getParameter("projectName"); if (projectNameString != null) projectNameString = new String(projectNameString.getBytes("iso8859-1"), "UTF-8"); int detail = 1; if ("users".equals(request.getParameter("detail"))) detail = 2; else if ("documents".equals(request.getParameter("detail"))) detail = 3; else if ("tasks".equals(request.getParameter("detail"))) detail = 4; else if ("scope".equals(request.getParameter("detail"))) detail = 5; else if ("progress".equals(request.getParameter("detail"))) detail = 6; long start = System.nanoTime(); if (projectIDString != null || projectNameString != null) { response.setContentType("text/xml"); Vector projects = new Vector(); if (projectIDString != null) { for (String pID : projectIDString.split("\\|")) { int projectID = -1; try {projectID = Integer.parseInt(pID);} catch (Exception e){} ProjectManagement.Project pr = ProjectManagement.getProject(projectID); if (pr != null) projects.add(pr); } } if (projectNameString != null) { for (String projectName : projectNameString.split("\\|")) { ProjectManagement.Project pr = ProjectManagement.getProject(projectName); if (pr != null) projects.add(pr); } } logger.debug("finish project query in "+ (System.nanoTime() - start)/1e6 + "ms"); %> <% for (ProjectManagement.Project p : projects) { if (detail == 1) { out.println(p.toFormattedXML()); } else { XMLBlock project = XMLBlock.createXMLBlock(p.toFormattedXML()); if (detail > 1) { String groupName = project.getAttribute("userGroup"); if (groupName == null || groupName.trim().length() < 1) groupName = project.getAttribute("name"); RightsAndRoles.UserGroup ug = RightsAndRoles.getInstance().getUserGroup(groupName); if (ug != null) project.addBlock(XMLBlock.createXMLBlock(ug.formattedString())); if (detail > 2) { DocumentGroup dg = DocumentGroup.getDocumentGroup(Integer.parseInt(project.getAttribute("documentGroupID"))); project.addBlock(XMLBlock.createXMLBlock(dg.toFormattedXML())); if (detail > 3) { logger.debug("starting detail > 3 at "+ (System.nanoTime() - start)/1e6 + "ms"); XMLBlock docs = project.getBlock("documentGroup").getBlock("documents"); int cc = 0; for (ProjectManagement.Task t : ProjectManagement.getProjectAssignments(p.getProjectID(), false)) { ++cc; XMLBlock b = docs.getBlock("document", "docID", Integer.toString(t.getObjectID())); if (b != null) { XMLBlock tb = b.createBlock("task"); tb.setAttribute("assignedTo", t.getAssignedTo()); tb.setAttribute("completedUnits", Integer.toString(t.getCompletedUnits())); tb.setAttribute("objectID", Integer.toString(t.getObjectID())); tb.setAttribute("objectName", t.getObjectName()); tb.setAttribute("objectPart", t.getObjectPart()); tb.setAttribute("percentageComplete", Integer.toString(t.getPercentageComplete())); tb.setAttribute("projectID", Integer.toString(t.getProjectID())); tb.setAttribute("taskTypeID", Integer.toString(t.getTaskTypeID())); tb.setAttribute("totalUnits", Integer.toString(t.getTotalUnits())); // too slow // b.addBlock(XMLBlock.createXMLBlock(t.toFormattedXML())); } } logger.debug("cc = " + cc+ " finished detail > 3 at "+ (System.nanoTime() - start)/1e6 + "ms"); if (detail > 4) { for (XMLBlock d : docs.getBlocks("document")) { ProjectManagement.Task t = new ProjectManagement.Task(p.getProjectID(), Integer.parseInt(d.getAttribute("docID")), p.getTaskTypeID(), "", p.getObjectPart()); ProjectManagement.computeAssignment(t); d.setAttribute("totalUnits", Integer.toString(t.getTotalUnits())); } } } } } out.println(project.formattedString()); } } %> <% logger.debug("finish get project in "+ (System.nanoTime() - start)/1e6 + "ms"); return; } %> project/get Retrieve projects Parameters projectIDproject id to retrieve, can be a list delimited by '|', projectNameproject name to retrieve, can be a list delimited by '|' detailprogressively more detail: [(header),users,documents,tasks,scope,progress]
Retrieve projects