/** * A method to build a collection of collaborator objects representing a network based on an * organisation * * @param id the id of the central organisation * @param radius the number of edges required from the central contributor * @return the collection of collaborator objects */ @SuppressWarnings("rawtypes") public TreeMap<Integer, Collaborator> getRawCollaboratorData_org(String id, int radius) { // check the parameters if (InputUtils.isValidInt(id) == false) { throw new IllegalArgumentException("Error: the id parameter is required"); } if (InputUtils.isValidInt(radius, ExportServlet.MIN_DEGREES, ExportServlet.MAX_DEGREES) == false) { throw new IllegalArgumentException( "Error: the radius parameter must be between " + ExportServlet.MIN_DEGREES + " and " + ExportServlet.MAX_DEGREES); } // define helper variables // collection of collaborators java.util.TreeMap<Integer, Collaborator> cId_cObj_map = new java.util.TreeMap<Integer, Collaborator>(); // set of collaborators that we've already processed java.util.TreeSet<Integer> foundCollaboratorsSet = new java.util.TreeSet<Integer>(); // define other helper variables String contributor_id = null; QuerySolution row = null; Collaborator collaborator = null; String sql = "SELECT DISTINCT b.eventid " + "FROM events a, orgevlink b " + "WHERE b.organisationid = ? " // +id + "AND a.eventid = b.eventid"; int[] param = {Integer.parseInt(id)}; java.sql.ResultSet resultSet = db.exePreparedStatement(sql, param); ArrayList<String> eventResults = new ArrayList<String>(); try { // check to see that data was returned if (!resultSet.last()) { db.tidyup(); return null; } else resultSet.beforeFirst(); // loop through the resultset while (resultSet.next() == true) { eventResults.add(resultSet.getString(1)); } } catch (java.sql.SQLException ex) { System.out.println("Exception: " + ex.getMessage()); resultSet = null; } db.tidyup(); // helper int first = 0; // define the query String sparqlQuery1 = "PREFIX foaf: <" + FOAF.NS + "> " + "PREFIX ausestage: <" + AuseStage.NS + "> " + "PREFIX event: <http://purl.org/NET/c4dm/event.owl#> " + "PREFIX dcterms: <http://purl.org/dc/terms/> " + "SELECT DISTINCT ?agent ?givenName ?familyName " + "WHERE { "; for (String event : eventResults) { if (first > 0) { sparqlQuery1 += "UNION "; } first++; sparqlQuery1 += "{<ausstage:e:" + event + "> a event:Event; " + " event:agent ?agent. " + " ?agent a foaf:Person; " + " foaf:givenName ?givenName; " + " foaf:familyName ?familyName. " + " } "; } sparqlQuery1 += " } "; // execute query ResultSet results = rdf.executeSparqlQuery(sparqlQuery1); // now we transfer the results to a TreeMap <Integer, while (results.hasNext()) { row = results.nextSolution(); contributor_id = AusStageURI.getId(row.get("agent").toString()); collaborator = new Collaborator(contributor_id); cId_cObj_map.put(Integer.parseInt(contributor_id), collaborator); foundCollaboratorsSet.add(Integer.parseInt(contributor_id)); } rdf.tidyUp(); return cId_cObj_map; } // end getRawCollaboratorData_org method
/** * 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