@SuppressWarnings("unchecked") public Document toGraphMLDOM_org(Document egoDom, String id, int radius, String graphType) { Collaborator collaborator = null; if (db.connect() == false) { throw new RuntimeException("Unable to connect to the database"); } // add the graph element Element rootElement = egoDom.getDocumentElement(); rootElement = createHeaderElements(egoDom, rootElement, graphType); Element graph = egoDom.createElement("graph"); graph.setAttribute("id", "Contributor Network for organisation:" + " ( " + id + " )"); graph.setAttribute("edgedefault", graphType); rootElement.appendChild(graph); network = getRawCollaboratorData_org(id, radius); if (network != null) { // add some additional required information for contributors collaborators = getCollaborators(network, "0"); // get collaboration List collaborations = getCollaborations_org(id, network); } else return egoDom; // create node element in DOM for (int i = 0; i < collaborators.size(); i++) { Element node = createNodeElement(egoDom, i); graph.appendChild(node); } // we have a list of collaborations. // loop through the list, for each - create a collaboration // - create edge. // 1.iterate through the collaboration hashmap Iterator contributorIter = collaborations.values().iterator(); int edgeIndex = 0; // collabCheck used to ensure no doubling up of collaborations. (pretty quick hack, ideally this // issue would be sorted before this point) Vector collabCheck = new Vector(); while (contributorIter.hasNext()) { CollaborationList list = (CollaborationList) contributorIter.next(); // get the actual collaborations if (list != null) { Iterator collaborationIter = list.getCollaborations().values().iterator(); // loop through the hashmap of collaborations while (collaborationIter.hasNext()) { Collaboration collaboration = (Collaboration) collaborationIter.next(); if (!collabCheck.contains( collaboration.getPartner() + "-" + collaboration.getCollaborator())) { // create an edge for each of them Element edge = createEdgeElement( egoDom, collaboration, Integer.parseInt(collaboration.getCollaborator()), Integer.parseInt(collaboration.getPartner()), edgeIndex); graph.appendChild(edge); // add the collaboration to the list for checking. collabCheck.add(collaboration.getCollaborator() + "-" + collaboration.getPartner()); edgeIndex++; } } } } return egoDom; }
/** * A method to build a list of Collaboration objects representing a list of collaborations * associated with a collaborator * * @param id the unique identifier of a collaborator * @return a CollaborationList object containing a list of Collaboration objects */ public CollaborationList getCollaborationList_org(String org_id, String id) { // check on the input parameters if (InputUtils.isValidInt(id) == false) { throw new IllegalArgumentException("The id parameter cannot be null"); } // declare helper variables CollaborationList list = new CollaborationList(id); // define other helper variables Collaboration collaboration = null; // define other helper variables String partner = null; Integer count = null; String firstDate = null; String lastDate = null; // define the base sql query String sqlQuery = "SELECT distinct count(*), con.contributorid, min(e.first_date), max(e.first_date) " + "FROM contributor con, conevlink c , conevlink c2, orgevlink o, events e " + "WHERE o.organisationid = ? " // + org_id + " " + "AND c.eventid = O.EVENTID " + "AND e.eventid = O.EVENTID " + "AND e.eventid = c.EVENTID " + "AND c.contributorid != ?" // + id + " " + "AND con.contributorid = c.contributorid " + "AND c2.contributorid = ? " // + id + " " + "AND c2.eventid = c.eventid " + "GROUP BY con.contributorid, con.first_name "; int[] param = {Integer.parseInt(org_id), Integer.parseInt(id), Integer.parseInt(id)}; // execute the query java.sql.ResultSet resultSet = db.exePreparedStatement(sqlQuery, param); try { // check to see that data was returned if (!resultSet.last()) { db.tidyup(); return null; } else resultSet.beforeFirst(); // loop though the resulset while (resultSet.next()) { // get the data partner = resultSet.getString(2); count = resultSet.getInt(1); firstDate = resultSet.getDate(3).toString(); lastDate = resultSet.getDate(4).toString(); // create the collaboration object collaboration = new Collaboration(id, partner, count, firstDate, lastDate); // add the collaboration to the list list.addCollaboration(collaboration); } } catch (java.sql.SQLException ex) { System.out.println("Exception: " + ex.getMessage()); resultSet = null; } db.tidyup(); // return the list of collaborations return list; } // end the CollaborationList method