Example usage for org.joda.time DateTime minusMillis

List of usage examples for org.joda.time DateTime minusMillis

Introduction

In this page you can find the example usage for org.joda.time DateTime minusMillis.

Prototype

public DateTime minusMillis(int millis) 

Source Link

Document

Returns a copy of this datetime minus the specified number of millis.

Usage

From source file:org.apache.pig.pen.AugmentBaseDataVisitor.java

License:Apache License

Object GetSmallerValue(Object v) {
    byte type = DataType.findType(v);

    if (type == DataType.BAG || type == DataType.TUPLE || type == DataType.MAP)
        return null;

    switch (type) {
    case DataType.CHARARRAY:
        String str = (String) v;
        if (str.length() > 0)
            return str.substring(0, str.length() - 1);
        else//  w  w w.  j  a  v  a 2  s .c o m
            return null;
    case DataType.BYTEARRAY:
        DataByteArray data = (DataByteArray) v;
        if (data.size() > 0)
            return new DataByteArray(data.get(), 0, data.size() - 1);
        else
            return null;
    case DataType.INTEGER:
        return Integer.valueOf((Integer) v - 1);
    case DataType.LONG:
        return Long.valueOf((Long) v - 1);
    case DataType.FLOAT:
        return Float.valueOf((Float) v - 1);
    case DataType.DOUBLE:
        return Double.valueOf((Double) v - 1);
    case DataType.BIGINTEGER:
        return ((BigInteger) v).subtract(BigInteger.ONE);
    case DataType.BIGDECIMAL:
        return ((BigDecimal) v).subtract(BigDecimal.ONE);
    case DataType.DATETIME:
        DateTime dt = (DateTime) v;
        if (dt.getMillisOfSecond() != 0) {
            return dt.minusMillis(1);
        } else if (dt.getSecondOfMinute() != 0) {
            return dt.minusSeconds(1);
        } else if (dt.getMinuteOfHour() != 0) {
            return dt.minusMinutes(1);
        } else if (dt.getHourOfDay() != 0) {
            return dt.minusHours(1);
        } else {
            return dt.minusDays(1);
        }
    default:
        return null;
    }

}

From source file:org.apereo.portal.events.aggr.PortalEventPurgerImpl.java

License:Apache License

@AggrEventsTransactional
public EventProcessingResult doPurgeRawEvents() {
    if (!this.clusterLockService.isLockOwner(PURGE_RAW_EVENTS_LOCK_NAME)) {
        throw new IllegalStateException("The cluster lock " + PURGE_RAW_EVENTS_LOCK_NAME
                + " must be owned by the current thread and server");
    }/*from   w w w  .j  av  a 2 s .  c  o m*/

    final IEventAggregatorStatus eventPurgerStatus = eventAggregationManagementDao
            .getEventAggregatorStatus(IEventAggregatorStatus.ProcessingType.PURGING, true);

    //Update status with current server name
    final String serverName = this.portalInfoProvider.getUniqueServerName();
    eventPurgerStatus.setServerName(serverName);
    eventPurgerStatus.setLastStart(new DateTime());

    //Determine date of most recently aggregated data
    final IEventAggregatorStatus eventAggregatorStatus = eventAggregationManagementDao
            .getEventAggregatorStatus(IEventAggregatorStatus.ProcessingType.AGGREGATION, false);
    if (eventAggregatorStatus == null || eventAggregatorStatus.getLastEventDate() == null) {
        //Nothing has been aggregated, skip purging

        eventPurgerStatus.setLastEnd(new DateTime());
        eventAggregationManagementDao.updateEventAggregatorStatus(eventPurgerStatus);

        return new EventProcessingResult(0, null, null, true);
    }
    boolean complete = true;

    //Calculate purge end date from most recent aggregation minus the purge delay
    final DateTime lastAggregated = eventAggregatorStatus.getLastEventDate();
    DateTime purgeEnd = lastAggregated.minus(this.purgeDelay);

    //Determine the DateTime of the oldest event
    DateTime oldestEventDate = eventPurgerStatus.getLastEventDate();
    if (oldestEventDate == null) {
        oldestEventDate = this.portalEventDao.getOldestPortalEventTimestamp();
    }

    //Make sure purgeEnd is no more than 1 hour after the oldest event date to limit delete scope
    final DateTime purgeEndLimit = oldestEventDate.plusHours(1);
    if (purgeEndLimit.isBefore(purgeEnd)) {
        purgeEnd = purgeEndLimit;
        complete = false;
    }

    final Thread currentThread = Thread.currentThread();
    final String currentName = currentThread.getName();
    final int events;
    try {
        currentThread.setName(currentName + "-" + purgeEnd);

        //Purge events
        logger.debug("Starting purge of events before {}", purgeEnd);
        events = portalEventDao.deletePortalEventsBefore(purgeEnd);
    } finally {
        currentThread.setName(currentName);
    }

    //Update the status object and store it
    purgeEnd = purgeEnd.minusMillis(100); //decrement by 100ms since deletePortalEventsBefore uses lessThan and not lessThanEqualTo
    eventPurgerStatus.setLastEventDate(purgeEnd);
    eventPurgerStatus.setLastEnd(new DateTime());
    eventAggregationManagementDao.updateEventAggregatorStatus(eventPurgerStatus);

    return new EventProcessingResult(events, oldestEventDate, purgeEnd, complete);
}

From source file:org.jasig.portal.events.aggr.PortalEventAggregationManagerImpl.java

License:Apache License

void doPurgeRawEvents() {
    final IEventAggregatorStatus eventPurgerStatus = eventAggregationManagementDao
            .getEventAggregatorStatus(ProcessingType.PURGING, true);

    //Update status with current server name
    final String serverName = this.portalInfoProvider.getServerName();
    eventPurgerStatus.setServerName(serverName);
    eventPurgerStatus.setLastStart(new DateTime());

    //Determine date of most recently aggregated data
    final IEventAggregatorStatus eventAggregatorStatus = eventAggregationManagementDao
            .getEventAggregatorStatus(ProcessingType.AGGREGATION, false);
    if (eventAggregatorStatus == null || eventAggregatorStatus.getLastEventDate() == null) {
        //Nothing has been aggregated, skip purging

        eventPurgerStatus.setLastEnd(new DateTime());
        eventAggregationManagementDao.updateEventAggregatorStatus(eventPurgerStatus);

        return;//from w ww . j  a  va 2s .  c o  m
    }

    //Calculate purge end date from most recent aggregation minus the purge delay
    final DateTime lastAggregated = eventAggregatorStatus.getLastEventDate();
    final DateTime purgeEnd = lastAggregated.minus(this.purgeDelay);

    //Purge events
    logger.debug("Starting purge of events before {}", purgeEnd);
    final long start = System.nanoTime();
    final int events = portalEventDao.deletePortalEventsBefore(purgeEnd);
    logger.debug("Purged {} events before {} in {}ms",
            new Object[] { events, purgeEnd, TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - start) });

    //Update the status object and store it
    eventPurgerStatus.setLastEventDate(purgeEnd.minusMillis(1)); //decrement by 1ms since deletePortalEventsBefore uses lessThan and not lessThanEqualTo 
    eventPurgerStatus.setLastEnd(new DateTime());
    eventAggregationManagementDao.updateEventAggregatorStatus(eventPurgerStatus);
}

From source file:org.jasig.portal.events.aggr.PortalEventPurgerImpl.java

License:Apache License

@AggrEventsTransactional
public EventProcessingResult doPurgeRawEvents() {
    if (!this.clusterLockService.isLockOwner(PURGE_RAW_EVENTS_LOCK_NAME)) {
        throw new IllegalStateException("The cluster lock " + PURGE_RAW_EVENTS_LOCK_NAME
                + " must be owned by the current thread and server");
    }/*from  ww  w . ja v  a  2s.c  o  m*/

    final IEventAggregatorStatus eventPurgerStatus = eventAggregationManagementDao
            .getEventAggregatorStatus(ProcessingType.PURGING, true);

    //Update status with current server name
    final String serverName = this.portalInfoProvider.getUniqueServerName();
    eventPurgerStatus.setServerName(serverName);
    eventPurgerStatus.setLastStart(new DateTime());

    //Determine date of most recently aggregated data
    final IEventAggregatorStatus eventAggregatorStatus = eventAggregationManagementDao
            .getEventAggregatorStatus(ProcessingType.AGGREGATION, false);
    if (eventAggregatorStatus == null || eventAggregatorStatus.getLastEventDate() == null) {
        //Nothing has been aggregated, skip purging

        eventPurgerStatus.setLastEnd(new DateTime());
        eventAggregationManagementDao.updateEventAggregatorStatus(eventPurgerStatus);

        return new EventProcessingResult(0, null, null, true);
    }
    boolean complete = true;

    //Calculate purge end date from most recent aggregation minus the purge delay
    final DateTime lastAggregated = eventAggregatorStatus.getLastEventDate();
    DateTime purgeEnd = lastAggregated.minus(this.purgeDelay);

    //Determine the DateTime of the oldest event
    DateTime oldestEventDate = eventPurgerStatus.getLastEventDate();
    if (oldestEventDate == null) {
        oldestEventDate = this.portalEventDao.getOldestPortalEventTimestamp();
    }

    //Make sure purgeEnd is no more than 1 hour after the oldest event date to limit delete scope
    final DateTime purgeEndLimit = oldestEventDate.plusHours(1);
    if (purgeEndLimit.isBefore(purgeEnd)) {
        purgeEnd = purgeEndLimit;
        complete = false;
    }

    final Thread currentThread = Thread.currentThread();
    final String currentName = currentThread.getName();
    final int events;
    try {
        currentThread.setName(currentName + "-" + purgeEnd);

        //Purge events
        logger.debug("Starting purge of events before {}", purgeEnd);
        events = portalEventDao.deletePortalEventsBefore(purgeEnd);
    } finally {
        currentThread.setName(currentName);
    }

    //Update the status object and store it
    purgeEnd = purgeEnd.minusMillis(100); //decrement by 100ms since deletePortalEventsBefore uses lessThan and not lessThanEqualTo
    eventPurgerStatus.setLastEventDate(purgeEnd);
    eventPurgerStatus.setLastEnd(new DateTime());
    eventAggregationManagementDao.updateEventAggregatorStatus(eventPurgerStatus);

    return new EventProcessingResult(events, oldestEventDate, purgeEnd, complete);
}

From source file:org.n52.sos.request.operator.AqdGetObservationOperatorV10.java

License:Open Source License

private void checkRequestForFlowAndTemporalFilter(GetObservationRequest request, ReportObligationType flow)
        throws CodedException {
    try {/*  w w w .jav  a  2  s.  co  m*/
        if (!request.isSetTemporalFilter()) {
            DateTime start = null;
            DateTime end = null;
            DateTime dateTime = new DateTime();
            if (ReportObligationType.E2A.equals(flow)) {
                String timeString;
                timeString = DateTimeHelper.formatDateTime2YearMonthDayDateStringYMD(dateTime.minusDays(1));
                start = DateTimeHelper.parseIsoString2DateTime(timeString);
                int timeLength = DateTimeHelper.getTimeLengthBeforeTimeZone(timeString);
                DateTime origEnd = DateTimeHelper.parseIsoString2DateTime(timeString);
                end = DateTimeHelper.setDateTime2EndOfMostPreciseUnit4RequestedEndPosition(origEnd, timeLength);
            } else if (ReportObligationType.E1A.equals(flow) || ReportObligationType.E1B.equals(flow)) {
                String year = Integer.toString(dateTime.minusYears(1).getYear());
                start = DateTimeHelper.parseIsoString2DateTime(year);
                int timeLength = DateTimeHelper.getTimeLengthBeforeTimeZone(year);
                end = DateTimeHelper.setDateTime2EndOfMostPreciseUnit4RequestedEndPosition(
                        DateTimeHelper.parseIsoString2DateTime(year), timeLength);
            }
            if (start != null && end != null) {
                request.setTemporalFilters(
                        getTemporalFilter(new TimePeriod(start.minusMillis(1), end.plusMillis(2))));
            }
        }
    } catch (DateTimeFormatException | DateTimeParseException e) {
        throw new NoApplicableCodeException().causedBy(e).withMessage(
                "The request does not contain a temporal filter and the temporal filter creation for the flow fails!");
    }
}

From source file:org.openmainframe.ade.ext.output.ExtOutputFilenameGenerator.java

License:Open Source License

/**
 * A public method to get the Interval Serial Number given the end time.
 * @param intervalStartTime/*from w  ww.j a v  a  2s  .c om*/
 * @param intervalEndTime
 * @return
 * @throws AdeException
 */
public static int getIntervalSerialNumber(long intervalEndTime, FramingFlowType framingFlowType)
        throws AdeException {
    final long xmlHardenedLength = XMLUtil.getXMLHardenedDurationInMillis(framingFlowType);
    final long intervalEndTimeMillis = intervalEndTime;
    final DateTime dateTime = new DateTime(intervalEndTimeMillis).withZone(getOutputTimeZone());
    final DateTime startOfDay = dateTime.minusMillis(1).withTimeAtStartOfDay();

    final long diffInMillis = dateTime.getMillis() - startOfDay.getMillis();
    int intervalSerialNum = (int) (diffInMillis / xmlHardenedLength) - 1;
    if (((int) diffInMillis % xmlHardenedLength) != 0) {
        intervalSerialNum++;
    }

    return intervalSerialNum;
}

From source file:org.openmainframe.ade.ext.stats.MessageRateStats.java

License:Open Source License

/**
 * Return the end of day of yesterday/*ww w . ja  va  2  s  .c  om*/
 * @param dateTime
 * @return
 */
private DateTime getYesterdayEndOfDay(DateTime dateTime) {
    dateTime = dateTime.withTimeAtStartOfDay();
    dateTime = dateTime.minusMillis(1);

    return dateTime;
}

From source file:petascope.util.TimeUtil.java

License:Open Source License

/**
 * Removes an epsilon to the input timestamp.
 * <p>//from w ww .  j  a  va2s  .c o  m
 * When translating to cell indexes, there is a particular case:
 * <p>
 * 9h00     10h00     11h00     12h00     13h00
 * o---------o---------o---------o---------o
 * cell0     cell1     cell2     cell3
 * <p>
 * E.g. subset=t(10h00:18h00)
 * cellLo = cellMin + countPixels( 9h00:10h00) = cellMin + 1
 * cellHi = cellLo  + countPixels(10h00:13h00) = cellLo  + 3 --> overflow
 * <p>
 * Whereas subset=t(10h01:18h00) would work fine: things work when
 * excluding the maximum, i.e. < instead of <=.
 *
 * @param timestamp ISO:8601 timestamp
 * @return 1 nanosecond before timestamp.
 */
public static String minusEpsilon(String timestamp) {
    DateTime dt = isoFmt.parseDateTime(fix(timestamp));
    DateTime dtEps = dt.minusMillis(1);
    return dtEps.toString();
}