Example usage for org.joda.time Duration Duration

List of usage examples for org.joda.time Duration Duration

Introduction

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

Prototype

public Duration(ReadableInstant start, ReadableInstant end) 

Source Link

Document

Creates a duration from the given interval endpoints.

Usage

From source file:org.jbpm.process.core.timer.DateTimeUtils.java

License:Apache License

public static long[] parseRepeatableDateTime(String dateTimeStr) {
    long[] result = new long[3];
    if (isRepeatable(dateTimeStr)) {

        String[] parsed = parseISORepeatable(dateTimeStr);
        String repeats = parsed[0];
        String delayIn = parsed[1];
        String periodIn = parsed[2];

        DateTime startAtDelay = ISODateTimeFormat.dateTimeParser().parseDateTime(delayIn);
        Duration startAtDelayDur = new Duration(System.currentTimeMillis(), startAtDelay.getMillis());
        if (startAtDelayDur.getMillis() <= 0) {
            // need to introduce delay to allow all initialization
            startAtDelayDur = Duration.standardSeconds(1);
        }/*w w  w .  j  ava2  s  .com*/
        Period period = ISOPeriodFormat.standard().parsePeriod(periodIn);
        result[0] = Long.parseLong(repeats.length() == 0 ? "-1" : repeats);
        result[1] = startAtDelayDur.getMillis();
        result[2] = period.toStandardDuration().getMillis();

        return result;
    } else {

        int index = dateTimeStr.indexOf("###");
        if (index != -1) {
            String period = dateTimeStr.substring(index + 3);
            String delay = dateTimeStr.substring(0, index);
            result = new long[] { TimeUtils.parseTimeString(delay), TimeUtils.parseTimeString(period) };

            return result;
        }
        result = new long[] { TimeUtils.parseTimeString(dateTimeStr) };
        return result;
    }
}

From source file:org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.discharge.QReal.java

License:Open Source License

/**
 * Calculate the discharge with rainfall data.
 *//* w  ww. ja  v  a  2 s .  c  om*/
// public QReal( ParameterBox fixedParameters, double[][] iuhdata, double[][] jeffdata ) {
// fixedParams = fixedParameters;
//
// jeff = jeffdata;
// ampi = iuhdata;
//
// System.out.println("AAAAAAAAAAAAAAAAAAAAAAAAAAAAA: ampilength " + ampi[ampi.length - 1][0]);
// }

/*
 * (non-Javadoc)
 * @see bsh.commands.h.peakflow.core.discharge.DischargeCalculator#calculateQ()
 */
public double[][] calculateQ() {
    double timestep = fixedParams.getTimestep();
    double area_super = fixedParams.getArea();
    double area_sub = fixedParams.getArea_sub();
    double area_tot = 0f;

    double raintimestep = jeffC.getRain_timestep();
    DateTime firstDate = jeffC.getFirstDate();

    /*
     * The maximum rain time has no sense with the real precipitations. In this case it will use
     * the rain timestep for tp.
     */
    double tcorr = ampi[ampi.length - 1][0];
    tpmax = (double) raintimestep;
    int rainLength = jeff.size();
    double[][] totalQshiftMatrix = new double[rainLength][(int) (Math.floor((tcorr + tpmax) / timestep) + 1
            + rainLength * raintimestep / timestep)];
    double[][] Q = new double[(int) Math.floor((tcorr + tpmax) / timestep) + 1][3];

    if (area_sub != -9999.0) {
        area_tot = area_sub + area_super;
    } else {
        area_tot = area_super;
    }

    Set<DateTime> dates = jeff.keySet();
    pm.beginTask("Calculating discharge...", dates.size());
    int i = 0;
    for (DateTime dateTime : dates) {
        double J = jeff.get(dateTime);
        /*
         * calculate the discharge for t < tcorr
         */
        int j = 0;
        for (int t = 1; t < tcorr; t += timestep) {
            j = (int) Math.floor((t) / timestep);

            if (t <= tpmax) {
                Q[j][0] = t;
                double widthInterpolate = ModelsEngine.width_interpolate(ampi, t, 0, 2);
                Q[j][1] = (double) (J * area_tot * widthInterpolate);
                Q[j][2] = Q[j - 1][2] + Q[j][1];
            } else {
                Q[j][0] = t;
                Q[j][1] = (double) (J * area_tot * (ModelsEngine.width_interpolate(ampi, t, 0, 2)
                        - ModelsEngine.width_interpolate(ampi, t - tpmax, 0, 2)));
                Q[j][2] = Q[j - 1][2] + Q[j][1];
            }
        }

        /*
         * calculate the discharge for t > tcorr
         */

        for (double t = tcorr; t < (tcorr + tpmax); t += timestep) {
            j = (int) Math.floor(((int) t) / timestep);
            Q[j][0] = t;
            Q[j][1] = (double) (J * area_tot
                    * (ampi[ampi.length - 1][2] - ModelsEngine.width_interpolate(ampi, t - tpmax, 0, 2)));
            Q[j][2] = Q[j - 1][2] + Q[j][1];
        }

        /*
         * calculate the volumes
         */
        // double vol = Q[Q.length - 2][2] * timestep;
        // double vol2 = (double) (area_tot * J * raintimestep);

        /*
         * calculate zero padding before first value Note that jeff contains already the
         * progressive time of the rainfile.
         */
        int totalshiftmatrixindex = 0;
        int initalshiftmatrixindex = 0;
        // FIXME time in ???
        Duration duration = new Duration(firstDate, dateTime);
        long intervalSeconds = duration.getStandardSeconds();

        int paddingnumber = (int) (intervalSeconds / timestep);
        for (int m = 0; m < paddingnumber; m++) {
            totalQshiftMatrix[i][m] = 0;
            totalshiftmatrixindex++;
        }
        initalshiftmatrixindex = totalshiftmatrixindex;
        for (int k = initalshiftmatrixindex; k < Q.length + initalshiftmatrixindex; k++) {
            totalQshiftMatrix[i][k] = Q[k - initalshiftmatrixindex][1];
            totalshiftmatrixindex++;
        }
        for (int k = Q.length + totalshiftmatrixindex; k < totalQshiftMatrix[0].length; k++) {
            totalQshiftMatrix[i][k] = 0;
        }
        i++;
        pm.worked(1);
    }
    pm.done();

    /*
     * sum the discharge contributes
     */
    Qtot = new double[totalQshiftMatrix[0].length][2];
    double tottime = 0f;
    for (int k = 0; k < Qtot.length; k++) {
        double sum = 0f;
        for (int j = 0; j < totalQshiftMatrix.length; j++) {
            sum = sum + totalQshiftMatrix[j][k];
        }

        tottime = tottime + timestep;

        Qtot[k][1] = sum;
        Qtot[k][0] = tottime;
    }

    double total_vol = 0f;
    for (int k = 0; k < Qtot.length; k++) {
        total_vol = total_vol + Qtot[k][1];
    }
    double total_rain = 0.0;
    for (DateTime dateTime : dates) {
        double J = jeff.get(dateTime);
        total_rain = total_rain + J;
    }
    total_rain = total_rain * area_tot * raintimestep;

    return Qtot;
}

From source file:org.kalypso.ui.rrm.internal.timeseries.view.imports.ValidateTimestepsVisitor.java

License:Open Source License

@Override
public void visit(final IObservationValueContainer container) throws SensorException {
    final IAxis dateAxis = AxisUtils.findDateAxis(container.getAxes());
    final Date date = (Date) container.get(dateAxis);

    if (Objects.isNotNull(m_lastDate)) {
        final Duration duration = new Duration(m_lastDate.getTime(), date.getTime());
        if (!m_duration.equals(duration)) {
            /** take time zone from source file for displaying (so it's equivalent to source date times!) */
            final SimpleDateFormat sdf = new SimpleDateFormat(Messages.getString("ValidateTimestepsVisitor_0")); //$NON-NLS-1$
            final TimeZone timeZoneID = MetadataHelper.getTimeZone(container.getMetaData(),
                    KalypsoCorePlugin.getDefault().getTimeZone().getID());
            sdf.setTimeZone(timeZoneID);

            m_status.add(IStatus.WARNING, String.format(Messages.getString("ValidateTimestepsVisitor_1"), //$NON-NLS-1$
                    sdf.format(m_lastDate), sdf.format(date)));
        }/*  w w  w  .j  a v  a 2  s .  c om*/
    }

    m_lastDate = date;
}

From source file:org.kuali.kpme.tklm.time.rules.shiftdifferential.service.ShiftDifferentialRuleServiceImpl.java

License:Educational Community License

@Override
public void processShiftDifferentialRules(TimesheetDocument timesheetDocument, TkTimeBlockAggregate aggregate) {
    DateTimeZone zone = HrServiceLocator.getTimezoneService().getUserTimezoneWithFallback();
    List<List<TimeBlock>> blockDays = aggregate.getDayTimeBlockList();
    DateTime periodStartDateTime = timesheetDocument.getCalendarEntry().getBeginPeriodLocalDateTime()
            .toDateTime(zone);//from  ww  w  . j ava2 s .com
    Map<Long, Set<ShiftDifferentialRule>> jobNumberToShifts = getJobNumberToShiftRuleMap(timesheetDocument);

    // If there are no shift differential rules, we have an early exit.
    if (jobNumberToShifts.isEmpty()) {
        return;
    }

    // Get the last day of the previous pay period. We need this to determine
    // if there are hours from the previous pay period that will effect the
    // shift rule on the first day of the currently-being-processed pay period.
    //
    // Will be set to null if not applicable.
    boolean previousPayPeriodPrevDay = true;
    Map<Long, List<TimeBlock>> jobNumberToTimeBlocksPreviousDay = getPreviousPayPeriodLastDayJobToTimeBlockMap(
            timesheetDocument, jobNumberToShifts);

    // We are going to look at the time blocks grouped by Days.
    //
    // This is a very large outer loop.
    for (int pos = 0; pos < blockDays.size(); pos++) {
        List<TimeBlock> blocks = blockDays.get(pos); // Timeblocks for this day.
        if (blocks.isEmpty())
            continue; // No Time blocks, no worries.

        DateTime currentDay = periodStartDateTime.plusDays(pos);
        Interval virtualDay = new Interval(currentDay, currentDay.plusHours(24));

        // Builds our JobNumber to TimeBlock for Current Day List.
        //
        // Shift Differential Rules are also grouped by Job number, this
        // provides a quick way to do the lookup / reference.
        // We don't need every time block, only the ones that will be
        // applicable to the shift rules.
        Map<Long, List<TimeBlock>> jobNumberToTimeBlocks = new HashMap<Long, List<TimeBlock>>();
        for (TimeBlock block : blocks) {
            Long jobNumber = block.getJobNumber();
            if (jobNumberToShifts.containsKey(jobNumber)) {
                List<TimeBlock> jblist = jobNumberToTimeBlocks.get(jobNumber);
                if (jblist == null) {
                    jblist = new ArrayList<TimeBlock>();
                    jobNumberToTimeBlocks.put(jobNumber, jblist);
                }
                jblist.add(block);
            }
        }

        // Large Outer Loop to look at applying the Shift Rules based on
        // the current JobNumber.
        //
        // This loop will handle previous day boundary time as well as the
        // current day.
        //
        // There is room for refactoring here!
        for (Map.Entry<Long, Set<ShiftDifferentialRule>> entry : jobNumberToShifts.entrySet()) {
            Set<ShiftDifferentialRule> shiftDifferentialRules = entry.getValue();
            // Obtain and sort our previous and current time blocks.
            List<TimeBlock> ruleTimeBlocksPrev = null;
            List<TimeBlock> ruleTimeBlocksCurr = jobNumberToTimeBlocks.get(entry.getKey());
            if (ruleTimeBlocksCurr != null && ruleTimeBlocksCurr.size() > 0) {
                if (jobNumberToTimeBlocksPreviousDay != null)
                    ruleTimeBlocksPrev = jobNumberToTimeBlocksPreviousDay.get(entry.getKey());
                if (ruleTimeBlocksPrev != null && ruleTimeBlocksPrev.size() > 0)
                    this.sortTimeBlocksInverse(ruleTimeBlocksPrev);
                this.sortTimeBlocksNatural(ruleTimeBlocksCurr);
            } else {
                // Skip to next job, there is nothing for this job
                // on this day, and because of this we don't care
                // about the previous day either.
                continue;
            }

            for (ShiftDifferentialRule rule : shiftDifferentialRules) {
                Set<String> fromEarnGroup = HrServiceLocator.getEarnCodeGroupService()
                        .getEarnCodeListForEarnCodeGroup(rule.getFromEarnGroup(), timesheetDocument
                                .getCalendarEntry().getBeginPeriodFullDateTime().toLocalDate());

                LocalTime ruleStart = new LocalTime(rule.getBeginTime(), zone);
                LocalTime ruleEnd = new LocalTime(rule.getEndTime(), zone);

                DateTime shiftEnd = ruleEnd.toDateTime(currentDay);
                DateTime shiftStart = ruleStart.toDateTime(currentDay);

                if (shiftEnd.isBefore(shiftStart) || shiftEnd.isEqual(shiftStart)) {
                    shiftEnd = shiftEnd.plusDays(1);
                }
                Interval shiftInterval = new Interval(shiftStart, shiftEnd);

                // Set up buckets to handle previous days time accumulations
                BigDecimal hoursBeforeVirtualDay = BigDecimal.ZERO;

                // Check current day first block to see if start time gap from virtual day start is greater than max gap
                // if so, we can skip the previous day checks.
                TimeBlock firstBlockOfCurrentDay = null;
                for (TimeBlock b : ruleTimeBlocksCurr) {
                    if (timeBlockHasEarnCode(fromEarnGroup, b)) {
                        firstBlockOfCurrentDay = b;
                        break;
                    }
                }

                // Previous Day :: We have prior block container of nonzero size, and the previous day is active.
                Interval previousDayShiftInterval = new Interval(shiftStart.minusDays(1),
                        shiftEnd.minusDays(1));

                // Blank initialization pointer for picking which interval to pass to applyPremium()
                Interval evalInterval = null;
                if (ruleTimeBlocksPrev != null && ruleTimeBlocksPrev.size() > 0
                        && dayIsRuleActive(currentDay.minusDays(1), rule)) {
                    // Simple heuristic to see if we even need to worry about
                    // the Shift rule for this set of data.
                    if (shiftEnd.isAfter(virtualDay.getEnd())) {
                        // Compare first block of previous day with first block of current day for max gaptitude.
                        TimeBlock firstBlockOfPreviousDay = null;
                        for (TimeBlock b : ruleTimeBlocksPrev) {
                            if (timeBlockHasEarnCode(fromEarnGroup, b)) {
                                firstBlockOfPreviousDay = b;
                                break;
                            }
                        }
                        // Only if we actually have at least one block.
                        // Adding Assumption: We must have both a valid current and previous block. Max Gap can not be more than a virtual day.
                        // If this assumption does not hold, additional logic will be needed to iteratively go back in time to figure out which
                        // blocks are valid.
                        if ((firstBlockOfPreviousDay != null) && (firstBlockOfCurrentDay != null)) {
                            Interval previousBlockInterval = new Interval(
                                    firstBlockOfPreviousDay.getEndDateTime().withZone(zone),
                                    firstBlockOfCurrentDay.getBeginDateTime().withZone(zone));
                            Duration blockGapDuration = previousBlockInterval.toDuration();
                            BigDecimal bgdHours = TKUtils.convertMillisToHours(blockGapDuration.getMillis());
                            // if maxGap is 0, ignore gaps and assign shift to time blocks within the hours
                            if (rule.getMaxGap().compareTo(BigDecimal.ZERO) == 0
                                    || bgdHours.compareTo(rule.getMaxGap()) <= 0) {
                                // If we are here, we know we have at least one valid time block to pull some hours forward from.

                                // These are inversely sorted.
                                for (int i = 0; i < ruleTimeBlocksPrev.size(); i++) {
                                    TimeBlock b = ruleTimeBlocksPrev.get(i);
                                    if (timeBlockHasEarnCode(fromEarnGroup, b)) {
                                        Interval blockInterval = new Interval(
                                                b.getBeginDateTime().withZone(zone),
                                                b.getEndDateTime().withZone(zone));

                                        // Calculate Block Gap, the duration between clock outs and clock ins of adjacent time blocks.
                                        if (previousBlockInterval != null) {
                                            blockGapDuration = new Duration(b.getEndDateTime().withZone(zone),
                                                    previousBlockInterval.getStart());
                                            bgdHours = TKUtils
                                                    .convertMillisToHours(blockGapDuration.getMillis());
                                        }

                                        // Check Gap, if good, sum hours, if maxGap is 0, ignore gaps
                                        if (rule.getMaxGap().compareTo(BigDecimal.ZERO) == 0
                                                || bgdHours.compareTo(rule.getMaxGap()) <= 0) {
                                            // Calculate Overlap and add it to hours before virtual day bucket.
                                            if (blockInterval.overlaps(previousDayShiftInterval)) {
                                                BigDecimal hrs = TKUtils.convertMillisToHours(blockInterval
                                                        .overlap(previousDayShiftInterval).toDurationMillis());
                                                hoursBeforeVirtualDay = hoursBeforeVirtualDay.add(hrs);
                                            }

                                        } else {
                                            // Time blocks are reverse sorted, we can jump out as soon as the max gap is exceeded.
                                            break;
                                        }

                                        previousBlockInterval = blockInterval;

                                    }
                                }
                            } else {
                                // DO NOTHING!
                            }
                        }
                    }
                }

                BigDecimal hoursToApply = BigDecimal.ZERO;
                BigDecimal hoursToApplyPrevious = BigDecimal.ZERO;
                // If the hours before virtual day are less than or equal to
                // min hours, we have already applied the time, so we don't
                // set hoursToApplyPrevious
                if (hoursBeforeVirtualDay.compareTo(rule.getMinHours()) <= 0) {
                    // we need to apply these hours.
                    hoursToApplyPrevious = hoursBeforeVirtualDay;
                }

                //  Current Day

                TimeBlock previous = null; // Previous Time Block
                List<TimeBlock> accumulatedBlocks = new ArrayList<TimeBlock>(); // TimeBlocks we MAY or MAY NOT apply Shift Premium to.
                List<Interval> accumulatedBlockIntervals = new ArrayList<Interval>(); // To save recompute time when checking timeblocks for application we store them as we create them.
                // Iterate over sorted list, checking time boundaries vs Shift Intervals.
                long accumulatedMillis = TKUtils.convertHoursToMillis(hoursBeforeVirtualDay);

                boolean previousDayOnly = false; // IF the rule is not active today, but was on the previous day, we need to still look at time blocks.
                if (!dayIsRuleActive(currentDay, rule)) {
                    if (dayIsRuleActive(currentDay.minusDays(1), rule)) {
                        previousDayOnly = true;
                    } else {
                        // Nothing to see here, move to next rule.
                        continue;
                    }

                }

                /*
                 * We will touch each time block and accumulate time blocks that are applicable to
                 * the current rule we are on.
                 */

                // These blocks are only used for detail application
                // We don't want to pass along the previous pay period,
                // because we don't want to modify the time blocks on that
                // period. If null is passed, time will be placed on the
                // first block of the first period if the previous period
                // block had influence.
                List<TimeBlock> previousBlocksFiltered = (previousPayPeriodPrevDay) ? null
                        : filterBlocksByApplicableEarnGroup(fromEarnGroup, ruleTimeBlocksPrev);

                for (TimeBlock current : ruleTimeBlocksCurr) {
                    if (!timeBlockHasEarnCode(fromEarnGroup, current)) {
                        // TODO: WorkSchedule considerations somewhere in here?
                        continue;
                    }

                    Interval blockInterval = new Interval(current.getBeginDateTime().withZone(zone),
                            current.getEndDateTime().withZone(zone));

                    // Check both Intervals, since the time blocks could still
                    // be applicable to the previous day.  These two intervals should
                    // not have any overlap.
                    if (previousDayShiftInterval.overlaps(shiftInterval)) {
                        LOG.error("Interval of greater than 24 hours created in the rules processing.");
                        return;
                        //                     throw new RuntimeException("Interval of greater than 24 hours created in the rules processing.");
                    }

                    // This block of code handles cases where you have time
                    // that spills to multiple days and a shift rule that
                    // has a valid window on multiple consecutive days. Time
                    // must be applied with the correct shift interval.
                    Interval overlap = previousDayShiftInterval.overlap(blockInterval);
                    evalInterval = previousDayShiftInterval;
                    if (overlap == null) {
                        if (hoursToApplyPrevious.compareTo(BigDecimal.ZERO) > 0) {
                            // we have hours from previous day, and the shift
                            // window is going to move to current day.
                            // Need to apply this now, and move window forward
                            // for current time block.
                            BigDecimal accumHours = TKUtils.convertMillisToHours(accumulatedMillis);
                            this.applyAccumulatedWrapper(accumHours, evalInterval, accumulatedBlockIntervals,
                                    accumulatedBlocks, previousBlocksFiltered, hoursToApplyPrevious,
                                    hoursToApply, rule);
                            accumulatedMillis = 0L; // reset accumulated hours..
                            hoursToApply = BigDecimal.ZERO;
                            hoursToApplyPrevious = BigDecimal.ZERO;
                        }

                        // Because of our position in the loop, when we are at this point,
                        // we know we've passed any previous day shift intervals, so we can
                        // determine if we should skip the current day based on the boolean
                        // we set earlier.
                        if (previousDayOnly) {
                            continue;
                        }

                        overlap = shiftInterval.overlap(blockInterval);
                        evalInterval = shiftInterval;
                    }

                    // Time bucketing and application as normal:
                    //
                    if (overlap != null) {
                        // There IS overlap.
                        if (previous != null) {
                            // only check max gap if max gap of rule is not 0
                            if (rule.getMaxGap().compareTo(BigDecimal.ZERO) != 0
                                    && exceedsMaxGap(previous, current, rule.getMaxGap())) {
                                BigDecimal accumHours = TKUtils.convertMillisToHours(accumulatedMillis);
                                this.applyAccumulatedWrapper(accumHours, evalInterval,
                                        accumulatedBlockIntervals, accumulatedBlocks, previousBlocksFiltered,
                                        hoursToApplyPrevious, hoursToApply, rule);
                                accumulatedMillis = 0L; // reset accumulated hours..
                                hoursToApply = BigDecimal.ZERO;
                                hoursToApplyPrevious = BigDecimal.ZERO;
                            } else {
                                long millis = overlap.toDurationMillis();
                                accumulatedMillis += millis;
                                hoursToApply = hoursToApply.add(TKUtils.convertMillisToHours(millis));
                            }
                        } else {
                            // Overlap shift at first time block.
                            long millis = overlap.toDurationMillis();
                            accumulatedMillis += millis;
                            hoursToApply = hoursToApply.add(TKUtils.convertMillisToHours(millis));
                        }
                        accumulatedBlocks.add(current);
                        accumulatedBlockIntervals.add(blockInterval);
                        previous = current; // current can still apply to next.
                    } else {
                        // No Overlap / Outside of Rule
                        if (previous != null) {
                            BigDecimal accumHours = TKUtils.convertMillisToHours(accumulatedMillis);
                            this.applyAccumulatedWrapper(accumHours, evalInterval, accumulatedBlockIntervals,
                                    accumulatedBlocks, previousBlocksFiltered, hoursToApplyPrevious,
                                    hoursToApply, rule);
                            accumulatedMillis = 0L; // reset accumulated hours..
                            hoursToApply = BigDecimal.ZERO;
                            hoursToApplyPrevious = BigDecimal.ZERO;
                        }
                    }

                }

                // All time blocks are iterated over, check for remainders.
                // Check containers for time, and apply if needed.
                BigDecimal accumHours = TKUtils.convertMillisToHours(accumulatedMillis);
                this.applyAccumulatedWrapper(accumHours, evalInterval, accumulatedBlockIntervals,
                        accumulatedBlocks, previousBlocksFiltered, hoursToApplyPrevious, hoursToApply, rule);
            }
        }
        //    Keep track of previous as we move day by day.
        jobNumberToTimeBlocksPreviousDay = jobNumberToTimeBlocks;
        previousPayPeriodPrevDay = false;
    }

}

From source file:org.kuali.kpme.tklm.utils.TkTestUtils.java

License:Educational Community License

public static Map<DateTime, BigDecimal> getDateToHoursMap(TimeBlock timeBlock, TimeHourDetail timeHourDetail) {
    Map<DateTime, BigDecimal> dateToHoursMap = new HashMap<DateTime, BigDecimal>();
    DateTime beginTime = timeBlock.getBeginDateTime();
    DateTime endTime = timeBlock.getEndDateTime();

    Days d = Days.daysBetween(beginTime, endTime);
    int numberOfDays = d.getDays();
    if (numberOfDays < 1) {
        dateToHoursMap.put(timeBlock.getBeginDateTime(), timeHourDetail.getHours());
        return dateToHoursMap;
    }//w ww.  j a v  a2s. co m
    DateTime currentTime = beginTime;
    for (int i = 0; i < numberOfDays; i++) {
        DateTime nextDayAtMidnight = currentTime.plusDays(1);
        nextDayAtMidnight = nextDayAtMidnight.hourOfDay().setCopy(12);
        nextDayAtMidnight = nextDayAtMidnight.minuteOfDay().setCopy(0);
        nextDayAtMidnight = nextDayAtMidnight.secondOfDay().setCopy(0);
        nextDayAtMidnight = nextDayAtMidnight.millisOfSecond().setCopy(0);
        Duration dur = new Duration(currentTime, nextDayAtMidnight);
        long duration = dur.getStandardSeconds();
        BigDecimal hrs = new BigDecimal(duration / 3600, HrConstants.MATH_CONTEXT);
        dateToHoursMap.put(currentTime, hrs);
        currentTime = nextDayAtMidnight;
    }
    Duration dur = new Duration(currentTime, endTime);
    long duration = dur.getStandardSeconds();
    BigDecimal hrs = new BigDecimal(duration / 3600, HrConstants.MATH_CONTEXT);
    dateToHoursMap.put(currentTime, hrs);

    return dateToHoursMap;
}

From source file:org.libreplan.business.planner.limiting.entities.LimitingResourceQueueElement.java

License:Open Source License

public Duration getLengthBetween() {
    DateTime start = getStartDate().toDateTimeAtStartOfDay().plusHours(getStartHour());
    DateTime end = getEndDate().toDateTimeAtStartOfDay().plusHours(getEndHour());
    return new Duration(start, end);
}

From source file:org.libreplan.web.limitingresources.QueueComponent.java

License:Open Source License

private static Component generateProgressBar(IDatesMapper datesMapper,
        LimitingResourceQueueElement queueElement) {

    DateAndHour advancementEndDate = getAdvanceEndDate(queueElement);

    if (advancementEndDate == null) {
        return null;
    }//from   w w w. ja v  a  2 s . com

    Duration durationBetween = new Duration(queueElement.getStartTime().toDateTime().getMillis(),
            advancementEndDate.toDateTime().getMillis());

    Div progressBar = new Div();

    if (!queueElement.getStartDate().isEqual(advancementEndDate.getDate())) {
        progressBar.setWidth(datesMapper.toPixels(durationBetween) + "px");
        progressBar.setSclass("queue-progress-bar");
    }

    return progressBar;
}

From source file:org.mifos.core.StandardTestDateUtilityService.java

License:Open Source License

public void setCurrentDateTime(DateTime newTime) {
    Duration durToNewTime = new Duration(new DateTime(), newTime);
    DateTimeUtils.setCurrentMillisOffset(durToNewTime.getMillis());
}

From source file:org.netxilia.api.value.DateValue.java

License:Open Source License

@Override
public Double getNumberValue() {
    return value != null
            ? (double) new Duration(ORIGIN, value.toDateTime(ORIGIN)).getMillis()
                    / DateTimeConstants.MILLIS_PER_DAY
            : Double.valueOf(0);/* w  ww . ja  v a  2 s. co  m*/
}

From source file:org.netxilia.functions.DateFunctions.java

License:Open Source License

public int DAYS360(ReadablePartial date1, ReadablePartial date2, boolean europeanMethod) {
    return (int) new Duration(DateUtils.toLocalDateTime(date1, ORIGIN).toDateTime(),
            DateUtils.toLocalDateTime(date2, ORIGIN).toDateTime()).getMillis()
            / DateTimeConstants.MILLIS_PER_DAY;
}