Example usage for org.joda.time.format ISODateTimeFormat dateTime

List of usage examples for org.joda.time.format ISODateTimeFormat dateTime

Introduction

In this page you can find the example usage for org.joda.time.format ISODateTimeFormat dateTime.

Prototype

public static DateTimeFormatter dateTime() 

Source Link

Document

Returns a formatter that combines a full date and time, separated by a 'T' (yyyy-MM-dd'T'HH:mm:ss.SSSZZ).

Usage

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;
}