/** * Returns an UnitTestDailyProjectData instance. * * @param variant The representational variant requested. * @return The representation. */ @Override public Representation represent(Variant variant) { Logger logger = this.server.getLogger(); logger.fine("UnitTest DPD: Starting"); if (variant.getMediaType().equals(MediaType.TEXT_XML)) { try { // [1] get the SensorBaseClient for the user making this request. SensorBaseClient client = super.getSensorBaseClient(); // [2] Check the front side cache and return if the DPD is found and is OK to access. String cachedDpd = this.server.getFrontSideCache().get(uriUser, project, uriString); if ((cachedDpd != null) && client.inProject(uriUser, project)) { return super.getStringRepresentation(cachedDpd); } // [2] get a SensorDataIndex of UnitTest sensor data for this Project on the requested day. XMLGregorianCalendar startTime = Tstamp.makeTimestamp(this.timestamp); XMLGregorianCalendar endTime = Tstamp.incrementDays(startTime, 1); logger.fine("UnitTest DPD: Requesting index: " + uriUser + " " + project); SensorDataIndex index = client.getProjectSensorData(uriUser, project, startTime, endTime, "UnitTest"); // [3] Update the counter with this data. logger.fine("UnitTest DPD: Got index. " + index.getSensorDataRef().size() + " instances"); UnitTestCounter counter = new UnitTestCounter(); for (SensorDataRef ref : index.getSensorDataRef()) { counter.add(client.getSensorData(ref)); } logger.fine("UnitTest DPD: Finished retrieving instances. "); // return resulting data UnitTestDailyProjectData unitTestDPD = new UnitTestDailyProjectData(); // create the individual MemberData elements. String sensorBaseHost = this.server.getServerProperties().get(SENSORBASE_FULLHOST_KEY); for (String member : counter.getMembers()) { MemberData memberData = new MemberData(); memberData.setMemberUri(sensorBaseHost + "users/" + member); memberData.setSuccess(counter.getPassCount(member)); memberData.setFailure(counter.getFailCount(member)); unitTestDPD.getMemberData().add(memberData); } unitTestDPD.setOwner(uriUser); unitTestDPD.setProject(project); unitTestDPD.setStartTime(startTime); unitTestDPD.setUriPattern("**"); // we don't support UriPatterns yet. String xmlData = makeUnitTestDPD(unitTestDPD); if (!Tstamp.isTodayOrLater(startTime)) { this.server.getFrontSideCache().put(uriUser, project, uriString, xmlData); } logRequest("UnitTest"); return super.getStringRepresentation(xmlData); } catch (Exception e) { setStatusError("Error creating UnitTest DPD.", e); return null; } } return null; }