Example usage for org.joda.time DateTime minusHours

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

Introduction

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

Prototype

public DateTime minusHours(int hours) 

Source Link

Document

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

Usage

From source file:com.marand.thinkmed.medications.business.impl.DefaultMedicationsBo.java

License:Open Source License

@Override
public List<TherapySurgeryReportElementDto> getTherapySurgeryReportElements(@Nonnull final String patientId,
        final Double patientHeight, @Nonnull final DateTime searchStart,
        @Nonnull final RoundsIntervalDto roundsIntervalDto, @Nonnull final Locale locale,
        @Nonnull final DateTime when) {
    Preconditions.checkNotNull(patientId, "patientId");
    Preconditions.checkNotNull(searchStart, "searchStart");
    Preconditions.checkNotNull(roundsIntervalDto, "roundsIntervalDto");
    Preconditions.checkNotNull(locale, "locale");
    Preconditions.checkNotNull(when, "when");

    final DateTime roundsStart = new DateTime(searchStart.getYear(), searchStart.getMonthOfYear(),
            searchStart.getDayOfMonth(), roundsIntervalDto.getStartHour(), roundsIntervalDto.getStartMinute());

    final List<Pair<MedicationOrderComposition, MedicationInstructionInstruction>> instructionsList = medicationsOpenEhrDao
            .findMedicationInstructions(patientId, Intervals.infiniteFrom(roundsStart), null);

    final Double referenceWeight = medicationsOpenEhrDao.getPatientLastReferenceWeight(patientId,
            Intervals.infiniteTo(searchStart));

    final List<TherapySurgeryReportElementDto> elements = new ArrayList<>();
    final Map<Long, MedicationDataForTherapyDto> medicationsMap = getMedicationDataForTherapies(
            instructionsList, null);/*  w  w  w  .  j  a va 2 s  . c  om*/

    for (final Pair<MedicationOrderComposition, MedicationInstructionInstruction> instructionPair : instructionsList) {
        final MedicationOrderComposition composition = instructionPair.getFirst();
        final MedicationInstructionInstruction instruction = instructionPair.getSecond();

        final MedicationTimingCluster medicationTiming = instruction.getOrder().get(0).getMedicationTiming();
        final Interval instructionInterval = MedicationsEhrUtils.getInstructionInterval(medicationTiming);
        final boolean onlyOnce = isOnlyOnceThenEx(medicationTiming);
        if (instructionInterval.overlaps(Intervals.infiniteFrom(searchStart))
                || onlyOnce && instructionInterval.getStart().isAfter(searchStart.minusHours(1))) {
            final List<MedicationActionAction> actions = MedicationsEhrUtils.getInstructionActions(composition,
                    instruction);
            if (!isTherapyCanceledAbortedOrSuspended(actions)) {
                final TherapyDto therapy = getTherapyFromMedicationInstruction(composition, instruction,
                        referenceWeight, patientHeight, when);

                therapyDisplayProvider.fillDisplayValues(therapy, false, true, false, locale, true);

                final boolean containsAntibiotics = getMedicationIds(
                        MedicationsEhrUtils.getRepresentingOrderActivity(instruction)).stream().anyMatch(
                                id -> medicationsMap.containsKey(id) && medicationsMap.get(id).isAntibiotic());

                if (containsAntibiotics) {
                    final int consecutiveDays = getTherapyConsecutiveDay(
                            getOriginalTherapyStart(patientId, composition), when, when,
                            therapy.getPastDaysOfTherapy());

                    elements.add(new TherapySurgeryReportElementDto(therapy.getFormattedTherapyDisplay(),
                            consecutiveDays));
                } else {
                    elements.add(new TherapySurgeryReportElementDto(therapy.getFormattedTherapyDisplay()));
                }
            }
        }
    }
    return elements;
}

From source file:com.marand.thinkmed.medications.service.impl.MedicationsServiceImpl.java

License:Open Source License

@Override
@Transactional(readOnly = true)//ww w .  j a v a2s.c om
@ServiceMethod(auditing = @Auditing(level = Level.FULL))
@EhrSessioned
public TherapyViewPatientDto getTherapyViewPatientData(@Nonnull final String patientId) {
    StringUtils.checkNotBlank(patientId, "patientId required");
    final DateTime requestTimestamp = RequestContextHolder.getContext().getRequestTimestamp();

    final TherapyViewPatientDto therapyViewPatientDto = new TherapyViewPatientDto();

    final PatientDataForMedicationsDto patientData = patientDataProvider.getPatientData(patientId,
            requestTimestamp);
    therapyViewPatientDto.setPatientData(patientData);

    final MedicationsCentralCaseDto centralCaseDto = patientData.getCentralCaseDto();

    final String careProviderId = centralCaseDto != null && centralCaseDto.getCareProvider() != null
            ? centralCaseDto.getCareProvider().getId()
            : null;

    final boolean inpatient = centralCaseDto != null && !centralCaseDto.isOutpatient();
    final Interval referenceWeightSearchInterval;
    if (inpatient) {
        referenceWeightSearchInterval = new Interval(centralCaseDto.getCentralCaseEffective().getStart(),
                requestTimestamp);
        final Interval recentHospitalizationInterval = new Interval(requestTimestamp.minusHours(12),
                requestTimestamp);
        therapyViewPatientDto.setRecentHospitalization(
                recentHospitalizationInterval.contains(centralCaseDto.getCentralCaseEffective().getStart()));
    } else {
        referenceWeightSearchInterval = new Interval(requestTimestamp.minusHours(24), requestTimestamp);
    }

    final Double referenceWeight = medicationsOpenEhrDao.getPatientLastReferenceWeight(patientId,
            referenceWeightSearchInterval);
    therapyViewPatientDto.setReferenceWeight(referenceWeight);

    if (careProviderId != null) {
        final List<String> customGroups = medicationsDao.getCustomGroupNames(careProviderId);
        therapyViewPatientDto.setCustomGroups(customGroups);
    }

    final AdministrationTimingDto administrationTiming = MedicationPreferencesUtil
            .getAdministrationTiming(careProviderId);
    therapyViewPatientDto.setAdministrationTiming(administrationTiming);

    final RoundsIntervalDto roundsInterval = MedicationPreferencesUtil.getRoundsInterval(careProviderId);
    therapyViewPatientDto.setRoundsInterval(roundsInterval);

    final Long patientIdLong = MedicationsConnectorUtils.getId(patientId);
    if (patientIdLong != null) {
        final String lastLinkName = medicationsDao.getPatientLastLinkName(patientIdLong);
        therapyViewPatientDto.setLastLinkName(lastLinkName);
    }

    return therapyViewPatientDto;
}

From source file:com.marand.thinkmed.medications.service.impl.MedicationsServiceImpl.java

License:Open Source License

@Override
@Transactional/*from   w w w. jav  a2s  .  co m*/
@ServiceMethod(auditing = @Auditing(level = Level.FULL))
public boolean finishedPerfusionSyringeRequestsExistInLastHours(@Nonnull final String patientId,
        @Nonnull final String originalTherapyId, final int hours) {
    Preconditions.checkNotNull(patientId, "patientId is null");
    Preconditions.checkNotNull(originalTherapyId, "originalTherapyId is null");

    final DateTime requestTimestamp = RequestContextHolder.getContext().getRequestTimestamp();
    return pharmacistTaskProvider.therapyHasTasksClosedInInterval(patientId, originalTherapyId,
            Collections.singleton(TaskTypeEnum.PERFUSION_SYRINGE_DISPENSE),
            new Interval(requestTimestamp.minusHours(hours), requestTimestamp));
}

From source file:com.reclabs.recomendar.common.helpers.types.DateHelper.java

License:Open Source License

/**
 * Subtract to the current date the amount of that precisionType represent.
 * @param date The date to subtract/*  w w  w . jav a  2s . c o  m*/
 * @param amount The amount to subtract
 * @param precisionType The field to subtract
 * @return The new date
 */
public static Date subtract(Date date, int amount, DatePrecisionType precisionType) {
    DateTime jodaDate1 = new DateTime(date.getTime());
    DateTime result;
    switch (precisionType) {
    case YEAR:
        result = jodaDate1.minusYears(amount);
        break;
    case MONTH:
        result = jodaDate1.minusMonths(amount);
        break;
    case DAY:
        result = jodaDate1.minusDays(amount);
        break;
    case HOUR:
        result = jodaDate1.minusHours(amount);
        break;
    case MINUTE:
        result = jodaDate1.minusMinutes(amount);
        break;
    case SECOND:
        result = jodaDate1.minusSeconds(amount);
        break;
    case MILLISECOND:
        result = jodaDate1.minusMillis(amount);
        break;
    default:
        LOGGER.warn("[Error subtract, precision value is invalid: {}]", precisionType);
        throw new RecIllegalArgumentException("The precision value is invalid " + precisionType);
    }
    return result.toDate();
}

From source file:com.splicemachine.derby.utils.SpliceDateFunctions.java

License:Apache License

/**
 * Implements the trunc_date function/*from  w w w .  j  a v  a2  s . co m*/
 */
public static Timestamp TRUNC_DATE(Timestamp source, String field) throws SQLException {
    if (source == null || field == null)
        return null;
    DateTime dt = new DateTime(source);
    field = field.toLowerCase();
    String lowerCaseField = field.toLowerCase();
    if ("microseconds".equals(lowerCaseField)) {
        int nanos = source.getNanos();
        nanos = nanos - nanos % 1000;
        source.setNanos(nanos);
        return source;
    } else if ("milliseconds".equals(lowerCaseField)) {
        int nanos = source.getNanos();
        nanos = nanos - nanos % 1000000;
        source.setNanos(nanos);
        return source;
    } else if ("second".equals(lowerCaseField)) {
        source.setNanos(0);
        return source;

    } else if ("minute".equals(lowerCaseField)) {
        DateTime modified = dt.minusSeconds(dt.getSecondOfMinute());
        Timestamp ret = new Timestamp(modified.getMillis());
        ret.setNanos(0);
        return ret;
    } else if ("hour".equals(lowerCaseField)) {
        DateTime modified = dt.minusMinutes(dt.getMinuteOfHour()).minusSeconds(dt.getSecondOfMinute());
        Timestamp ret = new Timestamp(modified.getMillis());
        ret.setNanos(0);
        return ret;
    } else if ("day".equals(lowerCaseField)) {
        DateTime modified = dt.minusHours(dt.getHourOfDay()).minusMinutes(dt.getMinuteOfHour())
                .minusSeconds(dt.getSecondOfMinute());
        Timestamp ret = new Timestamp(modified.getMillis());
        ret.setNanos(0);
        return ret;
    } else if ("week".equals(lowerCaseField)) {
        DateTime modified = dt.minusDays(dt.getDayOfWeek()).minusHours(dt.getHourOfDay())
                .minusMinutes(dt.getMinuteOfHour()).minusSeconds(dt.getSecondOfMinute());
        Timestamp ret = new Timestamp(modified.getMillis());
        ret.setNanos(0);
        return ret;
    } else if ("month".equals(lowerCaseField)) {
        DateTime modified = dt.minusDays(dt.get(DateTimeFieldType.dayOfMonth()) - 1)
                .minusHours(dt.getHourOfDay()).minusMinutes(dt.getMinuteOfHour())
                .minusSeconds(dt.getSecondOfMinute());
        Timestamp ret = new Timestamp(modified.getMillis());
        ret.setNanos(0);
        return ret;
    } else if ("quarter".equals(lowerCaseField)) {
        int month = dt.getMonthOfYear();
        DateTime modified = dt;
        if ((month + 1) % 3 == 1) {
            modified = dt.minusMonths(2);
        } else if ((month + 1) % 3 == 0) {
            modified = dt.minusMonths(1);
        }
        DateTime fin = modified.minusDays(dt.get(DateTimeFieldType.dayOfMonth()) - 1)
                .minusHours(dt.getHourOfDay()).minusMinutes(dt.getMinuteOfHour())
                .minusSeconds(dt.getSecondOfMinute());
        Timestamp ret = new Timestamp(fin.getMillis());
        ret.setNanos(0);
        return ret;
    } else if ("year".equals(lowerCaseField)) {
        DateTime modified = dt.minusDays(dt.get(DateTimeFieldType.dayOfMonth()) - 1)
                .minusHours(dt.getHourOfDay()).minusMonths(dt.getMonthOfYear() - 1)
                .minusMinutes(dt.getMinuteOfHour()).minusSeconds(dt.getSecondOfMinute());
        Timestamp ret = new Timestamp(modified.getMillis());
        ret.setNanos(0);
        return ret;
    } else if ("decade".equals(lowerCaseField)) {
        DateTime modified = dt.minusDays(dt.get(DateTimeFieldType.dayOfMonth()) - 1)
                .minusYears(dt.getYear() % 10).minusHours(dt.getHourOfDay())
                .minusMonths(dt.getMonthOfYear() - 1).minusMinutes(dt.getMinuteOfHour())
                .minusSeconds(dt.getSecondOfMinute());
        Timestamp ret = new Timestamp(modified.getMillis());
        ret.setNanos(0);
        return ret;
    } else if ("century".equals(lowerCaseField)) {
        DateTime modified = dt.minusDays(dt.get(DateTimeFieldType.dayOfMonth()) - 1)
                .minusHours(dt.getHourOfDay()).minusYears(dt.getYear() % 100)
                .minusMonths(dt.getMonthOfYear() - 1).minusMinutes(dt.getMinuteOfHour())
                .minusSeconds(dt.getSecondOfMinute());
        Timestamp ret = new Timestamp(modified.getMillis());
        ret.setNanos(0);
        return ret;
    } else if ("millennium".equals(lowerCaseField)) {
        int newYear = dt.getYear() - dt.getYear() % 1000;
        //noinspection deprecation (converstion from joda to java.sql.Timestamp did not work for millennium < 2000)
        return new Timestamp(newYear - 1900, Calendar.JANUARY, 1, 0, 0, 0, 0);
    } else {
        throw new SQLException(String.format("invalid time unit '%s'", field));
    }
}

From source file:com.tango.BucketSyncer.MirrorOptions.java

License:Apache License

private long initMaxAge() {

    DateTime dateTime = new DateTime(nowTime);

    // all digits -- assume "days"
    if (ctime.matches("^[0-9]+$"))
        return dateTime.minusDays(Integer.parseInt(ctime)).getMillis();

    // ensure there is at least one digit, and exactly one character suffix, and the suffix is a legal option
    if (!ctime.matches("^[0-9]+[yMwdhms]$"))
        throw new IllegalArgumentException("Invalid option for ctime: " + ctime);

    if (ctime.endsWith("y"))
        return dateTime.minusYears(getCtimeNumber(ctime)).getMillis();
    if (ctime.endsWith("M"))
        return dateTime.minusMonths(getCtimeNumber(ctime)).getMillis();
    if (ctime.endsWith("w"))
        return dateTime.minusWeeks(getCtimeNumber(ctime)).getMillis();
    if (ctime.endsWith("d"))
        return dateTime.minusDays(getCtimeNumber(ctime)).getMillis();
    if (ctime.endsWith("h"))
        return dateTime.minusHours(getCtimeNumber(ctime)).getMillis();
    if (ctime.endsWith("m"))
        return dateTime.minusMinutes(getCtimeNumber(ctime)).getMillis();
    if (ctime.endsWith("s"))
        return dateTime.minusSeconds(getCtimeNumber(ctime)).getMillis();
    throw new IllegalArgumentException("Invalid option for ctime: " + ctime);
}

From source file:com.webarch.common.datetime.DateTimeUtils.java

License:Apache License

/**
 * ?//www.ja  v a  2  s.  c o m
 *
 * @param date     ?
 * @param before   ??
 * @param timeUnit ??,<code>0,1,2,3,4</code>
 * @return ??
 */
public static Date getBeforeDate(Date date, final int before, final int timeUnit) {
    DateTime dateTime = new DateTime(date);
    Date result;
    switch (timeUnit) {
    case YEAR_UNIT:
        result = dateTime.minusYears(before).toDate();
        break;
    case MONTH_UNIT:
        result = dateTime.minusMonths(before).toDate();
        break;
    case DAY_UNIT:
        result = dateTime.minusDays(before).toDate();
        break;
    case HOURE_UNIT:
        result = dateTime.minusHours(before).toDate();
        break;
    case MINUTE_UNIT:
        result = dateTime.minusMinutes(before).toDate();
        break;
    default:
        result = date;
    }
    return result;
}

From source file:com.xpn.xwiki.criteria.impl.PeriodFactory.java

License:Open Source License

/**
 * Creates a new Period instance that matches all the instants between N hours before the instantiation and the
 * instantiation./*from  www. j  a va2s.  c  o m*/
 * 
 * @param numberOfHours number of hours to substract from current date
 * @return The corresponding period object
 */
public static Period createSinceHoursPeriod(int numberOfHours) {
    DateTime dt = new DateTime();
    return createPeriod(dt.minusHours(numberOfHours).getMillis(), dt.getMillis());
}

From source file:controllers.Api.Statistic.java

License:Open Source License

public static Result getAccess() {
    // Variables/*from  w w  w  .j av a 2  s . co m*/
    Integer newValue, accessHour, yesterdayHour, index = 0;
    DateTime yesterdayDayTime, accessTime;

    // Yesterday Time Calc
    yesterdayDayTime = (new DateTime()).withZone(DateTimeZone.forID(session("timezone")));
    //yesterdayDayTime = yesterdayDayTime.minusHours(24);
    yesterdayDayTime = yesterdayDayTime.minusHours(23).minusMinutes(yesterdayDayTime.getMinuteOfHour())
            .minusSeconds(yesterdayDayTime.getSecondOfMinute());
    yesterdayHour = yesterdayDayTime.getHourOfDay();

    DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
    List<models.Access> accessDay = models.Access.find.where()
            .ge("timestamp", fmt.print(yesterdayDayTime.toDateTime(DateTimeZone.UTC))).order().asc("timestamp")
            .findList();
    Iterator<models.Access> accessDayIterator = accessDay.iterator();

    // 0 Liste initialisieren
    List<Integer> accessDayReturn = Arrays.asList(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
            0, 0, 0);

    // Iterate List
    while (accessDayIterator.hasNext()) {
        models.Access access = accessDayIterator.next();
        // Access Time Calc
        accessTime = access.timestamp;
        accessTime = accessTime.withZone(DateTimeZone.forID(session("timezone")));
        accessHour = accessTime.getHourOfDay();

        // Set value
        if (accessHour == yesterdayHour) {
            index = accessDayReturn.size() - 1;
        } else if (accessHour > yesterdayHour) {
            index = accessHour - yesterdayHour;
        } else if (accessHour < yesterdayHour) {
            index = (24 - (yesterdayHour - accessHour)) % 24;
        }

        newValue = accessDayReturn.get(index) + 1;
        accessDayReturn.set(index, newValue);

    }
    return ok(Json.toJson(accessDayReturn));
}

From source file:controllers.JobController.java

License:Apache License

/**
 * Starts the mail-server, creates the Admin-Account specified in application.conf and threads to expire the
 * mail-addresses/* w ww  .  j  ava  2 s .co  m*/
 */
@Start(order = 90)
public void startActions() {
    // only delete transactions if mailtransaction.maxage is not -1 or 0
    deleteTransactions = (xcmConfiguration.MTX_MAX_AGE != 0 && xcmConfiguration.MTX_MAX_AGE != -1);

    if (xcmConfiguration.ADMIN_PASSWORD != null && !User.mailExists(xcmConfiguration.ADMIN_ADDRESS)) { // if a password is set in application.conf ...and the admin-account doesn't exist
                                                                                                       // create the admin-account
        User user = new User("Site", "Admin", xcmConfiguration.ADMIN_ADDRESS, xcmConfiguration.ADMIN_PASSWORD,
                "en");

        // set the status and admin flags
        user.setAdmin(true);
        user.setActive(true);
        user.save();

    }
    // create the server for incoming mails
    smtpServer = new SMTPServer(new SimpleMessageListenerAdapter(messageListener));

    // use a dynamic port for the smtp in test-mode or the port specified in application.conf in all other modes
    int port = ninjaProperties.isTest() ? findAvailablePort(49152, 65535) : xcmConfiguration.MB_PORT;

    // set the port and start the SMTP-Server
    smtpServer.setPort(port);
    smtpServer.start();

    // create the executor-service to check the mail-addresses which were expired since the last run and disable
    // them
    // and also all new MailTransactions will be stored here and old entries will be removed
    expirationService.scheduleAtFixedRate(new Runnable() {
        @Override
        public void run() {
            log.debug("Emailaddress Expiration Task run");

            // get the number of MBox-Elements that will expire in the next "MB_INT"-minutes
            List<MBox> expiringMailBoxesList = MBox.getNextBoxes(xcmConfiguration.MB_INTERVAL);
            ListIterator<MBox> mailBoxIterator = expiringMailBoxesList.listIterator();

            DateTime dt = new DateTime();
            MBox mailBox;
            // disable expired mail-addresses
            while (mailBoxIterator.hasNext()) {
                mailBox = mailBoxIterator.next();
                if (dt.isAfter(mailBox.getTs_Active()) && (mailBox.getTs_Active() != 0)) { // this element is now expired
                    mailBox.enable();
                    log.debug("now expired: " + mailBox.getFullAddress());
                }
            }

            // add the new Mailtransactions
            List<MailTransaction> mtxToSave = new LinkedList<MailTransaction>();

            // add all transactions from the queue to a list
            while (!mtxQueue.isEmpty()) {
                mtxToSave.add(mtxQueue.poll());
            }
            // and save all entries of this list in one transaction to the list
            MailTransaction.saveMultipleTx(mtxToSave);
            log.info("stored " + mtxToSave.size() + " entries in the database");

            // remove old MailTransactions
            if (deleteTransactions) { // execute only if a value has been set
                log.debug("Cleanup Mailtransaction-list");
                long removalTS = dt.minusHours(xcmConfiguration.MTX_MAX_AGE).getMillis();

                MailTransaction.deleteTxInPeriod(removalTS);
                log.debug("finished Mailtransaction cleanup");
            }
        }
    }, new Long(0), new Long(xcmConfiguration.MB_INTERVAL), TimeUnit.MINUTES);

}