/** Reads the XML data and create the data */ public void readDOMDataElement(Element element, IDataSets datasets) { // start with source data for (Object child : CodeFragment.getDataElementsOfType(CodeFragment.TYPE.SOURCE, element)) { Element code = (Element) child; try { collectSourceDataFromDOM(code, datasets); } catch (Exception e) { e.printStackTrace(); Util.errorMessage( "Failed to load source " + code.getAttributeValue("name") + ", error " + e.getMessage()); } } // process the data for (Object child : CodeFragment.getDataElementsOfType(CodeFragment.TYPE.GENERATED, element)) { Element code = (Element) child; try { processDataFromDOM(code, datasets); } catch (Exception e) { e.printStackTrace(); Util.errorMessage("Failed to run process " + e.getMessage()); } } }
/** * Método public static void leerArchivoXML(ListaUsuarios listaDeUsuarios): Este método permite * leer un archivo XML que contiene los datos de los usuarios a través de jdom */ public static void leerArchivoXML(ListaUsuario listaDeUsuarios) { try { SAXBuilder builder = new SAXBuilder(); /* Se crea un documento nuevo con el nombre del archivo */ Document doc = builder.build(nombreArchivo); /* Se obtiene la raíz del archivo (la etiqueta inicial) */ Element raiz = doc.getRootElement(); /* Se puede obtener el atributo de la raíz (de la etiqueta) */ System.out.println(raiz.getAttributeValue("tipo")); /* Se obtienen todos los hijos cuya etiqueta esa "usuario" */ /* y se asignan esos hijos a un List */ List listaUsuarios = raiz.getChildren("usuario"); System.out.println("Formada por:" + listaUsuarios.size() + " usuarios"); System.out.println("------------------"); /* Se genera un iterador para recorrer el List que se generó */ Iterator i = listaUsuarios.iterator(); /* Se recorre el List */ while (i.hasNext()) { /* Se obtiene cada uno y se asigna a un objeto de tipo Element */ Element e = (Element) i.next(); /* Se obtiene el nombre, apellido y cargo de cada una de las etiquetas */ /* hijas de usuario, es decir, nombre, apellido y cargo */ Element nick = e.getChild("nick"); Element clave = e.getChild("clave"); Element nombre = e.getChild("nombre"); Element apellido = e.getChild("apellido"); Element fechanac = e.getChild("fechanac"); Element avatar = e.getChild("avatar"); /* Se crea un nodo nuevo con la información y se agrega a la lista de usuarios */ Usuario elUsuario = new Usuario( nick.getText(), clave.getText(), nombre.getText(), apellido.getText(), fechanac.getText(), avatar.getText()); listaDeUsuarios.AgregarElemento(elUsuario); } } catch (Exception e) { e.printStackTrace(); } }
// Empieza La Carga de la Partida public static void leerArchivoXML(ListaPartida listaDePartidas) { try { SAXBuilder builder = new SAXBuilder(); /* Se crea un documento nuevo con el nombre del archivo */ Document doc = builder.build(nombreArchivoPartida); /* Se obtiene la raíz del archivo (la etiqueta inicial) */ Element raiz = doc.getRootElement(); /* Se puede obtener el atributo de la raíz (de la etiqueta) */ System.out.println(raiz.getAttributeValue("tipo")); /* Se obtienen todos los hijos cuya etiqueta esa "usuario" */ /* y se asignan esos hijos a un List */ List listaPartida = raiz.getChildren("partida"); System.out.println("Formada por:" + listaPartida.size() + " Partidas"); System.out.println("------------------"); /* Se genera un iterador para recorrer el List que se generó */ Iterator i = listaPartida.iterator(); /* Se recorre el List */ while (i.hasNext()) { /* Se obtiene cada uno y se asigna a un objeto de tipo Element */ Element e = (Element) i.next(); /* Se obtiene el nombre, apellido y cargo de cada una de las etiquetas */ /* hijas de usuario, es decir, nombre, apellido y cargo */ Element nick = e.getChild("Usuario"); Element ID = e.getChild("ID"); Element fechaactual = e.getChild("fechaacual"); Element fechainicio = e.getChild("fechainicio"); /* Se crea un nodo nuevo con la información y se agrega a la lista de usuarios */ Partida laPartida = new Partida( nick.getText(), ID.getContentSize(), fechaactual.getText(), fechainicio.getText()); listaDePartidas.AgregarElemento(laPartida); } } catch (Exception e) { e.printStackTrace(); } }
private void collectSourceDataFromDOM(Element code, IDataSets dataset) throws Exception { // get code fragment CodeFragment.TYPE type = CodeFragment.TYPE.valueOf(code.getAttributeValue("type")); if (type == CodeFragment.TYPE.SOURCE) { String dataname = code.getAttributeValue("name"); String dataid = code.getAttributeValue("dataid"); // check import method and reader Element importelement = code.getChild(IImport.class.getName()); Element readerelement = code.getChild(IReader.class.getName()); // get URI String URI = importelement.getAttributeValue("URI"); String scheme = (new URI(URI)).getScheme(); // look for a suitable import method IImports allimports = WorkFlowManager.getInstance().getImports(); IImportMethod importmethod = allimports.findImport(scheme); if (importmethod == null) { Util.errorMessage("Could not find suitable import for scheme '" + scheme + "'"); return; } IImport method = importmethod.getImport(); method.setURI(URI); // get reader String readername = readerelement.getAttributeValue("name"); String format = readerelement.getAttributeValue("format"); String readertype = readerelement.getAttributeValue("datatype"); IReaders allreaders = WorkFlowManager.getInstance().getReaders(); IReader reader = allreaders.findReaderWithName(readername); if (reader == null) { Util.errorMessage("Could not find reader " + readername); return; } reader.setType(readertype); reader.setDataFormat(format); reader.setType(readertype); dataset.importDataContent(method, reader, dataname, dataid); } }
// public List getUserStoryList(String sessionId,String iterationId,ServletOutputStream out) { public List getUserStoryList(String sessionId, String iterationId, PrintWriter out) { List<Map> list = new ArrayList<Map>(); statusMap.put(sessionId, "0"); try { String apiURL = rallyApiHost + "/hierarchicalrequirement?" + "query=(Iteration%20=%20" + rallyApiHost + "/iteration/" + iterationId + ")&fetch=true&start=1&pagesize=100"; log.info("getUserStoryList apiURL=" + apiURL); String responseXML = getRallyXML(apiURL); org.jdom.input.SAXBuilder bSAX = new org.jdom.input.SAXBuilder(); org.jdom.Document doc = bSAX.build(new StringReader(responseXML)); Element root = doc.getRootElement(); XPath xpath = XPath.newInstance("//Object"); List xlist = xpath.selectNodes(root); int totalSteps = xlist.size() + 1; int currentStep = 0; List taskRefLink = new ArrayList(); Iterator iter = xlist.iterator(); while (iter.hasNext()) { double totalTimeSpent = 0.0D; Map map = new HashMap(); Element item = (Element) iter.next(); String objId = item.getChildText("ObjectID"); String name = item.getChildText("Name"); String planEstimate = item.getChildText("PlanEstimate"); String formattedId = item.getChildText("FormattedID"); String taskActualTotal = item.getChildText("TaskActualTotal"); String taskEstimateTotal = item.getChildText("TaskEstimateTotal"); String taskRemainingTotal = item.getChildText("TaskRemainingTotal"); String scheduleState = item.getChildText("ScheduleState"); Element ownerElement = item.getChild("Owner"); String owner = ""; String ownerRef = ""; if (ownerElement != null) { owner = ownerElement.getAttributeValue("refObjectName"); } Element taskElements = item.getChild("Tasks"); // List taskElementList=taskElements.getContent(); List taskElementList = taskElements.getChildren(); List taskList = new ArrayList(); log.info("taskElements.getChildren=" + taskElements); log.info("taskList=" + taskElementList); for (int i = 0; i < taskElementList.size(); i++) { Element taskElement = (Element) taskElementList.get(i); String taskRef = taskElement.getAttributeValue("ref"); String[] objectIdArr = taskRef.split("/"); String objectId = objectIdArr[objectIdArr.length - 1]; log.info("objectId=" + objectId); // Map taskMap=getTaskMap(taskRef); Map taskMap = getTaskMapBatch(objectId); double taskTimeSpentTotal = Double.parseDouble((String) taskMap.get("taskTimeSpentTotal")); totalTimeSpent += taskTimeSpentTotal; taskList.add(taskMap); } map.put("type", "userstory"); map.put("formattedId", formattedId); map.put("name", name); map.put("taskStatus", scheduleState); map.put("owner", owner); map.put("planEstimate", planEstimate); map.put("taskEstimateTotal", taskEstimateTotal); map.put("taskRemainingTotal", taskRemainingTotal); map.put("taskTimeSpentTotal", "" + totalTimeSpent); list.add(map); list.addAll(taskList); ++currentStep; double percentage = 100.0D * currentStep / totalSteps; String status = "" + Math.round(percentage); statusMap.put(sessionId, status); out.println("<script>parent.updateProcessStatus('" + status + "%')</script>" + status); out.flush(); log.info("out.flush..." + status); // log.info("status="+status+" sessionId="+sessionId); // log.info("L1 statusMap="+statusMap+" "+statusMap.hashCode()); } double planEstimate = 0.0D; double taskEstimateTotal = 0.0D; double taskRemainingTotal = 0.0D; double taskTimeSpentTotal = 0.0D; Map iterationMap = new HashMap(); for (Map map : list) { String type = (String) map.get("type"); String planEstimateStr = (String) map.get("planEstimate"); log.info("planEstimateStr=" + planEstimateStr); if ("userstory".equals(type)) { if (planEstimateStr != null) { planEstimate += Double.parseDouble(planEstimateStr); } taskEstimateTotal += Double.parseDouble((String) map.get("taskEstimateTotal")); taskRemainingTotal += Double.parseDouble((String) map.get("taskRemainingTotal")); taskTimeSpentTotal += Double.parseDouble((String) map.get("taskTimeSpentTotal")); } } apiURL = rallyApiHost + "/iteration/" + iterationId + "?fetch=true"; log.info("iteration apiURL=" + apiURL); responseXML = getRallyXML(apiURL); bSAX = new org.jdom.input.SAXBuilder(); doc = bSAX.build(new StringReader(responseXML)); root = doc.getRootElement(); xpath = XPath.newInstance("//Iteration"); xlist = xpath.selectNodes(root); String projName = ""; String iterName = ""; String iterState = ""; iter = xlist.iterator(); while (iter.hasNext()) { Element item = (Element) iter.next(); iterName = item.getChildText("Name"); iterState = item.getChildText("State"); Element projElement = item.getChild("Project"); projName = projElement.getAttributeValue("refObjectName"); } iterationMap.put("type", "iteration"); iterationMap.put("formattedId", ""); iterationMap.put("name", projName + " - " + iterName); iterationMap.put("taskStatus", iterState); iterationMap.put("owner", ""); iterationMap.put("planEstimate", "" + planEstimate); iterationMap.put("taskEstimateTotal", "" + taskEstimateTotal); iterationMap.put("taskRemainingTotal", "" + taskRemainingTotal); iterationMap.put("taskTimeSpentTotal", "" + taskTimeSpentTotal); list.add(0, iterationMap); statusMap.put(sessionId, "100"); log.info("L2 statusMap=" + statusMap); log.info("L2 verify=" + getProcessStatus(sessionId)); log.info("-----------"); // String jsonData=JsonUtil.encodeObj(list); String jsonData = JSONValue.toJSONString(list); out.println("<script>parent.tableResult=" + jsonData + "</script>"); out.println("<script>parent.showTableResult()</script>"); } catch (Exception ex) { log.error("ERROR: ", ex); } return list; }
public List getIterationList(String projectId) { List<Map> list = new ArrayList<Map>(); try { String apiUrl = rallyApiHost + "/iteration?" + "project=" + rallyApiHost + "/project/" + projectId + "&fetch=true&order=Name%20desc&start=1&pagesize=100"; String checkProjectRef = rallyApiHost + "/project/" + projectId; log.info("rallyApiUrl:" + apiUrl); log.info("checkProjectRef:" + checkProjectRef); String responseXML = getRallyXML(apiUrl); SimpleDateFormat ISO8601FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); Date currentDate = new Date(); org.jdom.input.SAXBuilder bSAX = new org.jdom.input.SAXBuilder(); org.jdom.Document doc = bSAX.build(new StringReader(responseXML)); Element root = doc.getRootElement(); XPath xpath = XPath.newInstance("//Object"); List xlist = xpath.selectNodes(root); Iterator iter = xlist.iterator(); while (iter.hasNext()) { Map map = new HashMap(); Element item = (Element) iter.next(); String objId = item.getChildText("ObjectID"); String name = item.getChildText("Name"); String state = item.getChildText("State"); String startDateStr = item.getChildText("StartDate"); String endDateStr = item.getChildText("EndDate"); Date startDate = ISO8601FORMAT.parse(startDateStr); Date endDate = ISO8601FORMAT.parse(endDateStr); boolean isCurrent = false; int startCheck = startDate.compareTo(currentDate); int endCheck = endDate.compareTo(currentDate); if (startCheck < 0 && endCheck > 0) { isCurrent = true; } log.info("name=" + name + " isCurrent=" + isCurrent); String releaseRef = item.getAttribute("ref").getValue(); // In child project, parent object have to be filiered Element projectElement = item.getChild("Project"); String projectRef = projectElement.getAttributeValue("ref"); if (projectRef.equals(checkProjectRef)) { map.put("objId", objId); map.put("rallyRef", releaseRef); map.put("name", name); map.put("state", state); map.put("isCurrent", "" + isCurrent); list.add(map); } } log.info("-----------"); } catch (Exception ex) { log.error("ERROR: ", ex); } return list; }
public List getUserTimeSpentByDate(String userObjectId, String startDate, String endDate) { List list = new ArrayList(); log.info("userObjectId=" + userObjectId); log.info("startDate=" + startDate); log.info("endDate=" + endDate); try { String apiUrl = rallyApiHost + "/timeentryvalue?query=((TimeEntryItem.User.ObjectId%20=%20" + userObjectId + ")" + "%20and%20((DateVal%20%3E=%20" + startDate + ")%20and%20(DateVal%20%3C=%20" + endDate + ")))" + "&start=1&pagesize=100&fetch=true"; log.info("apiUrl=" + apiUrl); String responseXML = getRallyXML(apiUrl); log.info("responseXML=" + responseXML); org.jdom.input.SAXBuilder bSAX = new org.jdom.input.SAXBuilder(); org.jdom.Document doc = bSAX.build(new StringReader(responseXML)); Element root = doc.getRootElement(); XPath xpath = XPath.newInstance("//Object"); List xlist = xpath.selectNodes(root); Iterator iter = xlist.iterator(); while (iter.hasNext()) { // Map map=new HashMap(); Element item = (Element) iter.next(); String hours = item.getChildText("Hours"); Element timeEntryItemElement = item.getChild("TimeEntryItem"); String timeEntryItemRef = timeEntryItemElement.getAttributeValue("ref"); Map map = getUserStoryTaskMap(timeEntryItemRef); String checkTaskId = (String) map.get("taskFormattedId"); boolean isExist = false; for (int i = 0; i < list.size(); i++) { Map existMap = (Map) list.get(i); log.info("existMap=" + existMap); String existTaskId = (String) existMap.get("taskFormattedId"); log.info("existTaskId=" + existTaskId); log.info("checkTaskId=" + checkTaskId); if (existTaskId != null && existTaskId.equals(checkTaskId)) { isExist = true; String existHours = (String) existMap.get("hours"); double eHour = 0.0D; if (!"".equals(existHours)) { eHour = Double.parseDouble(existHours); } double nHour = 0.0D; if (!"".equals(hours)) { nHour = Double.parseDouble(hours); } log.info("nHour=" + nHour); log.info("eHour=" + eHour); nHour += eHour; log.info("2 nHour=" + nHour); existMap.put("hours", "" + nHour); break; } } if (!isExist) { map.put("hours", hours); list.add(map); } log.info("hours=" + hours); log.info("timeEntryItemRef=" + timeEntryItemRef); // list.add(map); } Collections.sort( list, new Comparator<Map<String, String>>() { public int compare(Map<String, String> m1, Map<String, String> m2) { if (m1.get("projectName") == null || m2.get("projectName") == null) return -1; return m1.get("projectName").compareTo(m2.get("projectName")); } }); // Sum up the total time double totalTaskEstimate = 0.0D; double totalTaskRemaining = 0.0D; double totalHours = 0.0D; for (int i = 0; i < list.size(); i++) { Map map = (Map) list.get(i); log.info("taskEstimate=" + (String) map.get("taskEstimate")); log.info("taskRemaining=" + (String) map.get("taskRemaining")); log.info("hours=" + (String) map.get("hours")); log.info("map==" + map); try { double taskEstimate = Double.parseDouble((String) map.get("taskEstimate")); double taskRemaining = Double.parseDouble((String) map.get("taskRemaining")); double hours = Double.parseDouble((String) map.get("hours")); totalTaskEstimate += taskEstimate; totalTaskRemaining += taskRemaining; totalHours += hours; } catch (Exception e) { log.info("ERROR in parsing number" + e); } } Map firstMap = new HashMap(); firstMap.put("taskFormattedId", ""); firstMap.put("taskName", ""); firstMap.put("taskState", ""); firstMap.put("owner", ""); firstMap.put("taskEstimate", "" + totalTaskEstimate); firstMap.put("taskRemaining", "" + totalTaskRemaining); firstMap.put("hours", "" + totalHours); firstMap.put("projectName", ""); firstMap.put("iterationName", ""); list.add(0, firstMap); } catch (Exception ex) { log.error("", ex); } return list; }