List of usage examples for org.joda.time.format ISODateTimeFormat dateTime
public static DateTimeFormatter dateTime()
From source file:uk.ac.cam.db538.cryptosms.data.DbPendingAdapter.java
License:Apache License
private ContentValues getValues(Pending pending) { ContentValues values = new ContentValues(); values.put(KEY_SENDER, pending.getSender()); values.put(KEY_TIMESTAMP, ISODateTimeFormat.dateTime().print(pending.getTimeStamp())); values.put(KEY_DATA, pending.getData()); return values; }
From source file:uk.ac.cam.db538.cryptosms.storage.MessageData.java
License:Apache License
/** * Save the contents of this class to its place in the storage file. * * @throws StorageFileException the storage file exception */// ww w. j av a2 s .co m public void saveToFile() throws StorageFileException { ByteBuffer msgBuffer = ByteBuffer.allocate(Storage.ENCRYPTED_ENTRY_SIZE); // flags byte flags = 0; if (this.mDeliveredPart) flags |= (byte) ((1 << 7) & 0xFF); if (this.mDeliveredAll) flags |= (byte) ((1 << 6) & 0xFF); if (this.mMessageType == MessageType.OUTGOING) flags |= (byte) ((1 << 5) & 0xFF); if (this.mUnread) flags |= (byte) ((1 << 4) & 0xFF); if (this.mCompressed) flags |= (byte) ((1 << 3) & 0xFF); if (this.mAscii) flags |= (byte) ((1 << 2) & 0xFF); msgBuffer.put(flags); // time stamp String timeStamp = ISODateTimeFormat.dateTime().print(this.mTimeStamp); msgBuffer.put(Charset.toAscii8(timeStamp, LENGTH_TIMESTAMP)); // message body msgBuffer.put(LowLevel.getBytesUnsignedShort(this.mMessageBody.length)); msgBuffer.put(LowLevel.wrapData(mMessageBody, LENGTH_MESSAGEBODY)); // random data msgBuffer.put(Encryption.getEncryption().generateRandomData(LENGTH_RANDOMDATA)); // indices msgBuffer.put(LowLevel.getBytesUnsignedInt(this.mIndexParent)); msgBuffer.put(LowLevel.getBytesUnsignedInt(this.mIndexMessageParts)); msgBuffer.put(LowLevel.getBytesUnsignedInt(this.mIndexPrev)); msgBuffer.put(LowLevel.getBytesUnsignedInt(this.mIndexNext)); byte[] dataEncrypted = null; try { dataEncrypted = Encryption.getEncryption().encryptSymmetricWithMasterKey(msgBuffer.array()); } catch (EncryptionException e) { throw new StorageFileException(e); } Storage.getStorage().setEntry(mEntryIndex, dataEncrypted); }
From source file:uk.ac.soton.itinnovation.ecc.service.controllers.DataController.java
License:Open Source License
/** * Returns attribute data as a download file. * * @param experimentId//from www . j av a2s.c o m * @param attributeId attribute to return data for. * @param response */ @RequestMapping(method = RequestMethod.GET, value = "/export/experiment/{experimentId}/attribute/{attributeId}") @ResponseBody public void exportDataForAttribute(@PathVariable String experimentId, @PathVariable String attributeId, HttpServletResponse response) { logger.debug("Exporting data for attribute [" + attributeId + "], experiment [" + experimentId + "]"); // TODO: should be a database-level query EccAttribute attribute = null; for (EccAttribute eccAttribute : dataService.getAttributesForExperiment(experimentId)) { if (eccAttribute.getUuid().equals(UUID.fromString(attributeId))) { attribute = eccAttribute; break; } } if (attribute == null) { logger.error("Attribute [" + attributeId + "] was not found in experiment [" + experimentId + "]"); } else { String fileName = attribute.getName() + " (attribute) - experiment " + experimentId + ".csv"; response.setContentType("text/csv"); response.setHeader("Content-disposition", "attachment; filename=\"" + fileName + "\""); try { BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(response.getOutputStream())); writer.write("Timestamp, Value"); for (EccMeasurement m : dataService.getAllMeasurementsForAttribute(experimentId, attributeId) .getData()) { writer.newLine(); writer.write( ISODateTimeFormat.dateTime().print(m.getTimestamp().getTime()) + ", " + m.getValue()); } writer.flush(); writer.close(); response.flushBuffer(); } catch (IOException e) { logger.error("Failed to write data to output response stream for attribute [" + attributeId + "], experiment [" + experimentId + "]", e); } } }
From source file:uk.ac.soton.itinnovation.ecc.service.controllers.DataController.java
License:Open Source License
/** * Returns entity data as a download file. * * @param experimentId/* w w w . ja va 2s. c o m*/ * @param entityId * @param response */ @RequestMapping(method = RequestMethod.GET, value = "/export/experiment/{experimentId}/entity/{entityId}") @ResponseBody public void exportDataForEntity(@PathVariable String experimentId, @PathVariable String entityId, HttpServletResponse response) { logger.debug("Exporting data for entity [" + entityId + "], experiment [" + experimentId + "]"); // TODO: add error reporting EccEntity entity = null; for (EccEntity tempEntity : dataService.getEntitiesForExperiment(experimentId, true)) { if (tempEntity.getUuid().equals(UUID.fromString(entityId))) { entity = tempEntity; break; } } if (entity == null) { logger.error("Entity [" + entityId + "] was not found in experiment [" + experimentId + "]"); } else { ArrayList<EccAttribute> attributes = entity.getAttributes(); String fileName = entity.getName() + " (entity) - experiment " + experimentId + ".csv"; response.setContentType("text/csv"); response.setHeader("Content-disposition", "attachment; filename=\"" + fileName + "\""); try { BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(response.getOutputStream())); writer.write("Attribute UUID, Attribute Name, Timestamp, Value, Metric type, Metric unit"); for (EccAttribute a : attributes) { logger.debug("Writing attribute [" + a.getUuid().toString() + "] " + a.getName()); for (EccMeasurement m : dataService .getAllMeasurementsForAttribute(experimentId, a.getUuid().toString()).getData()) { writer.newLine(); writer.write(a.getName() + ", " + a.getUuid().toString() + ", "); writer.write(ISODateTimeFormat.dateTime().print(m.getTimestamp().getTime()) + ", " + m.getValue() + ", "); writer.write(a.getType() + ", " + a.getUnit()); } } writer.flush(); writer.close(); response.flushBuffer(); } catch (IOException e) { logger.error("Failed to write data to output response stream for entity [" + entityId + "], experiment [" + experimentId + "]", e); } } }
From source file:uk.ac.soton.itinnovation.ecc.service.controllers.DataController.java
License:Open Source License
/** * Returns client data as a download file. * * @param clientId//from www.j a va2 s. com * @param response */ @RequestMapping(method = RequestMethod.GET, value = "/export/client/{clientId}") @ResponseBody public void exportDataForClient(@PathVariable String clientId, HttpServletResponse response) { logger.debug("Exporting data for client [" + clientId + "]"); // TODO: add error reporting try { EMClient theClient = experimentService.getClientByID(UUID.fromString(clientId)); Experiment currentExperiment = experimentService.getActiveExperiment(); String experimentUuid; if (currentExperiment == null) { // should never happen experimentUuid = "unknown"; } else { experimentUuid = currentExperiment.getUUID().toString(); } if (theClient != null) { ArrayList<EccEntity> entities = dataService.getEntitiesForClient(clientId, true); ArrayList<EccAttribute> attributes; String fileName = theClient.getName() + " (client) - experiment " + experimentUuid + ".csv"; response.setHeader("Content-disposition", "attachment; filename=\"" + fileName + "\""); response.setContentType("text/csv"); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(response.getOutputStream())); writer.write( "Entity Name, Entity UUID, Attribute Name, Attribute UUID, Timestamp, Value, Metric type, Metric unit"); for (EccEntity e : entities) { attributes = e.getAttributes(); for (EccAttribute a : attributes) { for (EccMeasurement m : dataService.getAllMeasurementsForAttribute(a.getUuid().toString()) .getData()) { writer.newLine(); writer.write(e.getName() + ", " + e.getUuid().toString() + ", "); writer.write(a.getName() + ", " + a.getUuid().toString() + ", "); writer.write(ISODateTimeFormat.dateTime().print(m.getTimestamp().getTime()) + ", " + m.getValue() + ", "); writer.write(a.getType() + ", " + a.getUnit()); } } } writer.flush(); writer.close(); response.flushBuffer(); } else { String msg = "Failed to write data to output: could not find client for experiment: " + clientId; logger.error(msg); } } catch (Exception e) { logger.error("Failed to write data to output response stream for client [" + clientId + "]", e); } }
From source file:uk.ac.soton.itinnovation.ecc.service.controllers.DataController.java
License:Open Source License
/** * Returns experiment data as a download file. * * @param experimentId/* w w w . j a v a 2s . c o m*/ * @param response */ @RequestMapping(method = RequestMethod.GET, value = "/export/experiment/{experimentId}") @ResponseBody public void exportDataForTheExperiment(@PathVariable String experimentId, HttpServletResponse response) { logger.debug("Exporting data for experiment '" + experimentId + "'"); Experiment experiment = dataService.getExperiment(experimentId, false); // TODO: add error reporting if (experiment == null) { logger.error("Failed to get data for experiment [" + experimentId + "], data service returned NULL experiment for that ID"); } else { try { String fileName = experiment.getName() + " - UUID " + experimentId + ".csv"; response.setHeader("Content-disposition", "attachment; filename=\"" + fileName + "\""); response.setContentType("text/csv"); ArrayList<EccEntity> entities = dataService.getEntitiesForExperiment(experimentId, true); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(response.getOutputStream())); writer.write( "Entity Name, Entity UUID, Attribute Name, Attribute UUID, Timestamp, Value, Metric type, Metric unit"); ArrayList<EccAttribute> attributes; for (EccEntity e : entities) { attributes = e.getAttributes(); if (attributes != null) { for (EccAttribute a : attributes) { ArrayList<EccMeasurement> emsData = dataService .getAllMeasurementsForAttribute(experimentId, a.getUuid().toString()).getData(); if (emsData != null) for (EccMeasurement m : emsData) { writer.newLine(); writer.write(e.getName() + ", " + e.getUuid().toString() + ", "); writer.write(a.getName() + ", " + a.getUuid().toString() + ", "); writer.write(ISODateTimeFormat.dateTime().print(m.getTimestamp().getTime()) + ", " + m.getValue() + ", "); writer.write(a.getType() + ", " + a.getUnit()); } } } } writer.flush(); writer.close(); response.flushBuffer(); } catch (IOException e) { logger.error("Failed to write data to output response stream for experiment [" + experimentId + "]", e); } } }
From source file:uk.ac.soton.itinnovation.ecc.service.services.DataService.java
License:Open Source License
/** * * @param attributeId the attribute./* www. j a v a2 s . co m*/ * @param since * @param limit * @return last 10 measurements for the attribute. */ public EccMeasurementSet getTailMeasurementsForAttribute(String attributeId, Long since, int limit) { EccMeasurementSet result = new EccMeasurementSet(); ArrayList<EccMeasurement> data = new ArrayList<>(); result.setData(data); Experiment currentExperiment = experimentService.getActiveExperiment(); if (currentExperiment != null) { try { Attribute attr = MetricHelper.getAttributeFromGenerators(UUID.fromString(attributeId), metricGenDAO.getMetricGeneratorsForExperiment(currentExperiment.getUUID(), true)); Set<MeasurementSet> measurementSets = getTailMeasurementSetsForAttribute( currentExperiment.getUUID(), attr, new Date(since), limit); Iterator<MeasurementSet> it = measurementSets.iterator(); MeasurementSet ms; while (it.hasNext()) { ms = it.next(); logger.debug("Processing measurement set [" + ms.getID().toString() + "] to attribute " + attr.getUUID().toString()); if (ms.getMetric() == null) { logger.warn("Metric for measurement set [" + ms.getID().toString() + "] is NULL"); } else { if (ms.getMetric().getMetricType() == null) { logger.warn("Metric type for measurement set [" + ms.getID().toString() + "] is NULL"); } else { if (ms.getMetric().getUnit() == null) { logger.warn( "Metric unit for measurement set [" + ms.getID().toString() + "] is NULL"); } else { logger.debug("Adding [" + ms.getID().toString() + "] type: " + ms.getMetric().getMetricType().name() + ", unit: " + ms.getMetric().getUnit().getName()); result.setType(ms.getMetric().getMetricType().name()); result.setUnit(ms.getMetric().getUnit().getName()); for (Measurement m : ms.getMeasurements()) { data.add(new EccMeasurement(m.getTimeStamp(), m.getValue())); } } } } } } catch (Exception e) { if (e instanceof NoDataException) { logger.debug("No measurements for attribute [" + attributeId + "] before " + since); } else { logger.error("Failed to retrieve data for attribute [" + attributeId + "]", e); } } } else { logger.warn("Data requested on current experiment which is NULL"); } // Sort by time stamps, add timestamp if (result.getData().size() > 1) { Collections.sort(result.getData(), new EccMeasurementsComparator()); } if (result.getData().size() > 0) { result.setTimestamp(ISODateTimeFormat.dateTime() .print(result.getData().get(result.getData().size() - 1).getTimestamp().getTime())); } return result; }
From source file:uk.ac.soton.itinnovation.ecc.service.services.DataService.java
License:Open Source License
/** * * @param attributeId the attribute./*from w w w . ja v a2s . c o m*/ * @param since * @param limit * @return latest 10 measurements for the attribute since a moment in time. */ public EccMeasurementSet getLatestSinceMeasurementsForAttribute(String attributeId, Long since, int limit) { EccMeasurementSet result = new EccMeasurementSet(); ArrayList<EccMeasurement> data = new ArrayList<EccMeasurement>(); result.setData(data); Experiment currentExperiment = experimentService.getActiveExperiment(); if (currentExperiment != null) { try { Attribute attr = MetricHelper.getAttributeFromGenerators(UUID.fromString(attributeId), metricGenDAO.getMetricGeneratorsForExperiment(currentExperiment.getUUID(), true)); Set<MeasurementSet> measurementSets = getSinceMeasurementSetsForAttribute( currentExperiment.getUUID(), attr, new Date(since), limit); Iterator<MeasurementSet> it = measurementSets.iterator(); MeasurementSet ms; while (it.hasNext()) { ms = it.next(); logger.debug("Processing measurement set [" + ms.getID().toString() + "] to attribute " + attr.getUUID().toString()); if (ms.getMetric() == null) { logger.warn("Metric for measurement set [" + ms.getID().toString() + "] is NULL"); } else { if (ms.getMetric().getMetricType() == null) { logger.warn("Metric type for measurement set [" + ms.getID().toString() + "] is NULL"); } else { if (ms.getMetric().getUnit() == null) { logger.warn( "Metric unit for measurement set [" + ms.getID().toString() + "] is NULL"); } else { logger.debug("Adding [" + ms.getID().toString() + "] type: " + ms.getMetric().getMetricType().name() + ", unit: " + ms.getMetric().getUnit().getName()); result.setType(ms.getMetric().getMetricType().name()); result.setUnit(ms.getMetric().getUnit().getName()); for (Measurement m : ms.getMeasurements()) { if (!m.getTimeStamp().equals(new Date(since))) { data.add(new EccMeasurement(m.getTimeStamp(), m.getValue())); } } } } } } } catch (Exception e) { logger.error("Failed to retrieve data for attribute [" + attributeId + "]", e); } } else { logger.warn("Data requested on current experiment which is NULL"); } // TODO: make this a database operation! // Sort by time stamps int resultSize = result.getData().size(); if (resultSize > 1) { // reverse sort Collections.sort(result.getData(), Collections.reverseOrder(new EccMeasurementsComparator())); // select latest 'limit' measurements ArrayList<EccMeasurement> tempData = new ArrayList<EccMeasurement>( result.getData().subList(0, limit > resultSize ? resultSize : limit)); // sort again Collections.sort(tempData, new EccMeasurementsComparator()); // reset to new data result.setData(tempData); } if (resultSize > 0) { // set timestamp result.setTimestamp(ISODateTimeFormat.dateTime() .print(result.getData().get(result.getData().size() - 1).getTimestamp().getTime())); } return result; }
From source file:uk.ac.soton.itinnovation.ecc.service.services.DataService.java
License:Open Source License
public EccCounterMeasurementSet getCounterMeasurementsForAttributeAfter(String experimentUuid, String attributeUuid, long dateInMsec, int limit) { // Safety// ww w .j a v a 2 s . c om if (experimentUuid == null || attributeUuid == null || dateInMsec < 0 || limit < 1) { logger.error("Could not get measurements for attribute before date: input parameter(s) invalid"); return null; } UUID expID = UUID.fromString(experimentUuid); UUID attrID = UUID.fromString(attributeUuid); EccCounterMeasurementSet result = new EccCounterMeasurementSet(); ArrayList<EccCounterMeasurement> data = new ArrayList<EccCounterMeasurement>(); result.setData(data); // TODO: get from measurement sets below (not sure if Metric is NULL below) result.setType("NOMINAL"); result.setUnit(""); try { Set<MeasurementSet> mSets = msetDAO.getMeasurementSetsForAttribute(attrID, expID, true); Set<Measurement> allMeasurements = new HashSet<Measurement>(); for (MeasurementSet ms : mSets) { // Get measurements from 0 to dateInMsec Report report = expReportDAO.getReportForMeasurementsForTimePeriod(ms.getID(), new Date(0), new Date(dateInMsec), true); allMeasurements.addAll(report.getMeasurementSet().getMeasurements()); } if (!allMeasurements.isEmpty()) { // find most recent Date mostRecent = allMeasurements.iterator().next().getTimeStamp(), temp; for (Measurement m : allMeasurements) { temp = m.getTimeStamp(); if (temp.after(mostRecent)) { mostRecent = temp; } } result.setTimestamp(ISODateTimeFormat.dateTime().print(mostRecent.getTime())); Map<String, Integer> freqMap = MetricCalculator.countValueFrequencies(allMeasurements); for (String key : freqMap.keySet()) { data.add(new EccCounterMeasurement(key, freqMap.get(key))); } } } catch (Exception ex) { logger.error("Could not retrieve measurements for Attribute after date: " + ex.getMessage()); } return result; }
From source file:uk.ac.soton.itinnovation.ecc.service.services.DataService.java
License:Open Source License
public EccCounterMeasurementSet getCounterMeasurementsForAttributeBeforeAndExcluding(String experimentUuid, String attributeUuid, long dateInMsec, int limit) { // Safety//from ww w . j ava 2 s .co m if (experimentUuid == null || attributeUuid == null || dateInMsec < 0 || limit < 1) { logger.error("Could not get counter measurements for attribute after date: input parameter(s) invalid"); return null; } UUID expID = UUID.fromString(experimentUuid); UUID attrID = UUID.fromString(attributeUuid); EccCounterMeasurementSet result = new EccCounterMeasurementSet(); Date start = new Date(dateInMsec); Date end = new Date(); try { Set<MeasurementSet> mSets = msetDAO.getMeasurementSetsForAttribute(attrID, expID, true); Set<Measurement> allMeasurements = new HashSet<Measurement>(); ArrayList<EccCounterMeasurement> data = new ArrayList<EccCounterMeasurement>(); result.setData(data); // TODO: get from measurement sets below (not sure if Metric is NULL below) result.setType("NOMINAL"); result.setUnit(""); for (MeasurementSet ms : mSets) { // Get measurements within time frame Report report = expReportDAO.getReportForMeasurementsForTimePeriod(ms.getID(), start, end, true); // TODO: optimise for (Measurement m : report.getMeasurementSet().getMeasurements()) { if (!m.getTimeStamp().equals(start)) { allMeasurements.add(m); } } } if (!allMeasurements.isEmpty()) { // find most recent Date mostRecent = allMeasurements.iterator().next().getTimeStamp(), temp; for (Measurement m : allMeasurements) { temp = m.getTimeStamp(); if (temp.after(mostRecent)) { mostRecent = temp; } } result.setTimestamp(ISODateTimeFormat.dateTime().print(mostRecent.getTime())); Map<String, Integer> freqMap = MetricCalculator.countValueFrequencies(allMeasurements); for (String key : freqMap.keySet()) { data.add(new EccCounterMeasurement(key, freqMap.get(key))); } } } catch (Exception ex) { logger.error("Could not retrieve measurements for Attribute after date: " + ex.getMessage()); } return result; }