List of usage examples for org.joda.time Years ONE
Years ONE
To view the source code for org.joda.time Years ONE.
Click Source Link
From source file:com.mbc.jfin.daycount.impl.calculator.AFBActualActualDaycountCalculator.java
License:Open Source License
public double calculateDaycountFraction(SchedulePeriod period) { int daysBetween = DateUtils.daysBetween(period.getStart(), period.getEnd()); if (daysBetween == 0) return 0; LocalDate newD2 = period.getEnd(); LocalDate temp = period.getEnd(); double sum = 0.0; while (temp.isAfter(period.getStart())) { temp = newD2;//from w w w .j a v a 2 s . c o m temp = temp.minus(Years.ONE); if (temp.getDayOfMonth() == 28 && temp.getMonthOfYear() == 2 && DateUtils.isLeapYear(temp)) { temp = temp.plus(Days.ONE); } if (temp.isAfter(period.getStart()) || temp.equals(period.getStart())) { sum += 1.0; newD2 = temp; } } double den = 365.0; if (DateUtils.isLeapYear(newD2)) { temp = newD2; temp = new LocalDate(temp.getYear(), 2, 29); if (newD2.isAfter(temp) && (period.getStart().isBefore(temp) || period.getStart().equals(temp))) den += 1.0; } else if (DateUtils.isLeapYear(period.getStart())) { temp = new LocalDate(period.getStart().getYear(), 2, 29); if (newD2.isAfter(temp) && (period.getStart().isBefore(temp) || period.getStart().equals(temp))) den += 1.0; } return sum + DateUtils.daysBetween(period.getStart(), newD2) / den; }
From source file:com.mbc.jfin.daycount.impl.calculator.ISMAActualActualDaycountCalculator.java
License:Open Source License
public double calculateDaycountFraction(SchedulePeriod schedulePeriod) { if (schedulePeriod.getStart().equals(schedulePeriod.getEnd())) return 0; // when the reference period is not specified, try taking // it equal to (d1,d2) LocalDate refPeriodStart = (schedulePeriod.getReferenceStart() != null ? schedulePeriod.getReferenceStart() : schedulePeriod.getStart()); LocalDate refPeriodEnd = (schedulePeriod.getReferenceEnd() != null ? schedulePeriod.getReferenceEnd() : schedulePeriod.getEnd());/*from w w w .j a va 2s . c o m*/ LocalDate startCalendar = schedulePeriod.getStart(); LocalDate endCalendar = schedulePeriod.getEnd(); if (!(refPeriodEnd.isAfter(refPeriodStart) && refPeriodEnd.isAfter(startCalendar))) { throw new InvalidReferencePeriodException(schedulePeriod); } // estimate roughly the length in months of a period // Integer months = // Integer(0.5+12*Real(refPeriodEnd-refPeriodStart)/365); double monthsEstimate = DateUtils.daysBetween(refPeriodStart, refPeriodEnd) * (12.0d / 365.0d); int months = (int) Math.round(monthsEstimate); if (months == 0) { refPeriodStart = startCalendar; refPeriodEnd = startCalendar.plus(Years.ONE); months = 12; } double period = (double) months / 12.0; if (endCalendar.isBefore(refPeriodEnd) || endCalendar.equals(refPeriodEnd)) { if (startCalendar.isAfter(refPeriodStart) || startCalendar.equals(refPeriodStart)) { long numerator = DateUtils.daysBetween(startCalendar, endCalendar); long denominator = DateUtils.daysBetween(refPeriodStart, refPeriodEnd); return period * (double) numerator / (double) denominator; } else { LocalDate previousRef = startCalendar; //previousRef.add(Calendar.MONTH, months * -1); if (endCalendar.isAfter(refPeriodStart)) return calculateDaycountFraction( new SchedulePeriod(startCalendar, refPeriodStart, previousRef, refPeriodStart)) + calculateDaycountFraction( new SchedulePeriod(refPeriodStart, endCalendar, refPeriodStart, refPeriodEnd)); else return calculateDaycountFraction( new SchedulePeriod(startCalendar, endCalendar, previousRef, refPeriodStart)); } } else { if (!(refPeriodStart.isBefore(startCalendar) || refPeriodStart.equals(startCalendar))) { throw new InvalidReferencePeriodException(schedulePeriod); } // the part from d1 to refPeriodEnd double sum = calculateDaycountFraction( new SchedulePeriod(startCalendar, refPeriodEnd, refPeriodStart, refPeriodEnd)); // the part from refPeriodEnd to d2 // count how many regular periods are in [refPeriodEnd, d2], // then add the remaining time int i = 0; LocalDate newRefStart, newRefEnd; do { newRefStart = refPeriodEnd.plus(Months.months(months * i)); newRefEnd = refPeriodEnd.plus(Months.months(months * (i + 1))); if (endCalendar.isBefore(newRefEnd)) { break; } else { sum += period; i++; } } while (true); double secondSum = calculateDaycountFraction( new SchedulePeriod(newRefStart, endCalendar, newRefStart, newRefEnd)); sum += secondSum; return sum; } }
From source file:net.schweerelos.timeline.model.Timeline.java
License:Open Source License
private void recalculate() { if (start == null || end == null) { logger.warn("recalculating aborted, start and/or end is null"); numSlices = 0;//from w w w . ja v a 2 s . c om return; } Interval interval = new Interval(start, end); if (Years.yearsIn(interval).isGreaterThan(Years.ZERO)) { // make it start at the start of the current increment mode start = start.withDayOfYear(start.dayOfYear().getMinimumValue()); end = end.withDayOfYear(end.dayOfYear().getMaximumValue()); interval = new Interval(start, end); // figure out number of slices numSlices = Years.yearsIn(interval).getYears(); if (start.plusYears(numSlices).isBefore(end)) { numSlices += 1; } // update label extractor sliceLabelExtractor = new SliceLabelExtractor() { @Override public String extractLabel(DateTime from) { return from.year().getAsShortText(); } }; // update increment increment = Years.ONE.toPeriod(); incrementMode = Mode.Years; } else if (Months.monthsIn(interval).isGreaterThan(Months.ZERO)) { // make it start at the start of the current increment mode start = start.withDayOfMonth(start.dayOfMonth().getMinimumValue()); end = end.withDayOfMonth(end.dayOfMonth().getMaximumValue()); interval = new Interval(start, end); numSlices = Months.monthsIn(interval).getMonths(); if (start.plusMonths(numSlices).isBefore(end)) { numSlices += 1; } sliceLabelExtractor = new SliceLabelExtractor() { @Override public String extractLabel(DateTime from) { return from.monthOfYear().getAsShortText(); } }; increment = Months.ONE.toPeriod(); incrementMode = Mode.Months; } else if (Weeks.weeksIn(interval).isGreaterThan(Weeks.ZERO)) { start = start.withDayOfWeek(start.dayOfWeek().getMinimumValue()); end = end.withDayOfWeek(end.dayOfWeek().getMaximumValue()); interval = new Interval(start, end); numSlices = Weeks.weeksIn(interval).getWeeks(); if (start.plusWeeks(numSlices).isBefore(end)) { numSlices += 1; } sliceLabelExtractor = new SliceLabelExtractor() { @Override public String extractLabel(DateTime from) { return "W" + from.weekOfWeekyear().getAsShortText(); } }; increment = Weeks.ONE.toPeriod(); incrementMode = Mode.Weeks; } else { numSlices = Days.daysIn(interval).getDays(); if (start.plusDays(numSlices).isBefore(end)) { numSlices += 1; } if (numSlices == 0) { // force at least one day to be drawn numSlices = 1; } sliceLabelExtractor = new SliceLabelExtractor() { @Override public String extractLabel(DateTime from) { return from.dayOfMonth().getAsShortText(); } }; increment = Days.ONE.toPeriod(); incrementMode = Mode.Days; } // reset time of day too start = start.withMillisOfDay(start.millisOfDay().getMinimumValue()); end = end.withMillisOfDay(end.millisOfDay().getMaximumValue()); // recalculate which intervals are within range intervalsWithinRange.clear(); intervalsWithinRange.addAll(calculateIntervalsWithinRange(start, end)); // notify listeners changeSupport.firePropertyChange(INTERVAL_PROPERTY_KEY, interval, new Interval(start, end)); }
From source file:org.angnysa.yaba.swing.BudgetFrame.java
License:Open Source License
private void buildSimulationPanel() { simulationPanel = new JPanel(); SpringLayout springLayout = new SpringLayout(); simulationPanel.setLayout(springLayout); // chart data simulationDataset = new SimulationDataset(service); simulationDataset.setInitial(0D);/*from w w w .j a va 2 s . c o m*/ simulationDataset.setStart(new LocalDate()); simulationDataset.setEnd(new LocalDate().plus(Years.ONE)); simulationDataset.setPeriod(Period.months(1)); simulationDataset.updateDataset(); transactionModel.addTableModelListener(new TableModelListener() { @Override public void tableChanged(TableModelEvent e) { simulationDataset.updateDataset(); } }); reconciliationModel.addTableModelListener(new TableModelListener() { @Override public void tableChanged(TableModelEvent e) { simulationDataset.updateDataset(); } }); // initial amount label JLabel amountLbl = new JLabel(Messages.getString("simulation.field.initial-amount")); //$NON-NLS-1$ springLayout.putConstraint(SpringLayout.WEST, amountLbl, 10, SpringLayout.WEST, simulationPanel); simulationPanel.add(amountLbl); // initial amount field amountFld = new JFormattedTextField( new DefaultFormatterFactory(new NumberFormatter(NumberFormat.getNumberInstance()), new NumberFormatter(NumberFormat.getCurrencyInstance()))); amountFld.setColumns(8); amountFld.setValue(simulationDataset.getInitial()); amountFld.addPropertyChangeListener("value", new PropertyChangeListener() { //$NON-NLS-1$ @Override public void propertyChange(PropertyChangeEvent e) { simulationDataset.setInitial(((Number) amountFld.getValue()).doubleValue()); simulationDataset.updateDataset(); } }); springLayout.putConstraint(SpringLayout.VERTICAL_CENTER, amountLbl, 0, SpringLayout.VERTICAL_CENTER, amountFld); springLayout.putConstraint(SpringLayout.WEST, amountFld, 0, SpringLayout.EAST, amountLbl); springLayout.putConstraint(SpringLayout.NORTH, amountFld, 10, SpringLayout.NORTH, simulationPanel); simulationPanel.add(amountFld); // start date label JLabel fromLbl = new JLabel(Messages.getString("simulation.field.start-date")); //$NON-NLS-1$ springLayout.putConstraint(SpringLayout.WEST, fromLbl, 10, SpringLayout.EAST, amountFld); simulationPanel.add(fromLbl); // start date field fromFld = new JFormattedTextField(new JodaLocalDateFormat()); fromFld.setColumns(8); fromFld.setValue(simulationDataset.getStart()); fromFld.addPropertyChangeListener("value", new PropertyChangeListener() { //$NON-NLS-1$ @Override public void propertyChange(PropertyChangeEvent e) { simulationDataset.setStart((LocalDate) fromFld.getValue()); simulationDataset.updateDataset(); } }); springLayout.putConstraint(SpringLayout.VERTICAL_CENTER, fromLbl, 0, SpringLayout.VERTICAL_CENTER, fromFld); springLayout.putConstraint(SpringLayout.WEST, fromFld, 0, SpringLayout.EAST, fromLbl); springLayout.putConstraint(SpringLayout.NORTH, fromFld, 10, SpringLayout.NORTH, simulationPanel); simulationPanel.add(fromFld); // end date label JLabel toLbl = new JLabel(Messages.getString("simulation.field.end-date")); //$NON-NLS-1$ springLayout.putConstraint(SpringLayout.WEST, toLbl, 10, SpringLayout.EAST, fromFld); simulationPanel.add(toLbl); // end date field toFld = new JFormattedTextField(new JodaLocalDateFormat()); toFld.setColumns(8); toFld.setValue(simulationDataset.getEnd()); toFld.addPropertyChangeListener("value", new PropertyChangeListener() { //$NON-NLS-1$ @Override public void propertyChange(PropertyChangeEvent e) { simulationDataset.setEnd((LocalDate) toFld.getValue()); simulationDataset.updateDataset(); } }); springLayout.putConstraint(SpringLayout.VERTICAL_CENTER, toLbl, 0, SpringLayout.VERTICAL_CENTER, toFld); springLayout.putConstraint(SpringLayout.WEST, toFld, 0, SpringLayout.EAST, toLbl); springLayout.putConstraint(SpringLayout.NORTH, toFld, 10, SpringLayout.NORTH, simulationPanel); simulationPanel.add(toFld); // period label JLabel periodLbl = new JLabel(Messages.getString("simulation.field.period")); //$NON-NLS-1$ springLayout.putConstraint(SpringLayout.WEST, periodLbl, 10, SpringLayout.EAST, toFld); simulationPanel.add(periodLbl); // period field periodFld = new JFormattedTextField(new JodaPeriodFormat()); periodFld.setColumns(5); periodFld.setValue(simulationDataset.getPeriod()); periodFld.addPropertyChangeListener("value", new PropertyChangeListener() { //$NON-NLS-1$ @Override public void propertyChange(PropertyChangeEvent e) { simulationDataset.setPeriod((ReadablePeriod) periodFld.getValue()); simulationDataset.updateDataset(); } }); springLayout.putConstraint(SpringLayout.VERTICAL_CENTER, periodLbl, 0, SpringLayout.VERTICAL_CENTER, periodFld); springLayout.putConstraint(SpringLayout.WEST, periodFld, 0, SpringLayout.EAST, periodLbl); springLayout.putConstraint(SpringLayout.NORTH, periodFld, 10, SpringLayout.NORTH, simulationPanel); simulationPanel.add(periodFld); // chart panel JFreeChart chart = ChartFactory.createLineChart("", Messages.getString("simulation.chart.date-axis-label"), //$NON-NLS-1$//$NON-NLS-2$ Messages.getString("simulation.chart.amount-axis-label"), simulationDataset, //$NON-NLS-1$ PlotOrientation.VERTICAL, false, true, false); CategoryPlot plot = (CategoryPlot) chart.getPlot(); plot.getDomainAxis().setCategoryLabelPositions(CategoryLabelPositions.UP_45); LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer(); renderer.setBaseShapesFilled(true); renderer.setBaseShapesVisible(true); renderer.setBaseToolTipGenerator(new SimulationTooltipGenerator(service)); ChartPanel chartPanel = new ChartPanel(chart); chartPanel.setDismissDelay(3600000); chartPanel.setInitialDelay(0); springLayout.putConstraint(SpringLayout.NORTH, chartPanel, 15, SpringLayout.SOUTH, periodFld); springLayout.putConstraint(SpringLayout.WEST, chartPanel, 10, SpringLayout.WEST, simulationPanel); springLayout.putConstraint(SpringLayout.SOUTH, chartPanel, -10, SpringLayout.SOUTH, simulationPanel); springLayout.putConstraint(SpringLayout.EAST, chartPanel, -10, SpringLayout.EAST, simulationPanel); simulationPanel.add(chartPanel); }
From source file:org.whole.lang.xsd.parsers.SchemaDataTypeParsers.java
License:Open Source License
public static IDataTypeParser year() { if (yearDataTypeParser == null) { yearDataTypeParser = new AbstractISO8601DataTypeParser(yearFormatter()) { protected Object parseWithTimeZone(DateTimeParserBucket bucket) { DateTimeZone zone = DateTimeZone.forOffsetMillis(bucket.getOffset()); return new Interval(new DateTime(bucket.computeMillis(), validate(zone)), Years.ONE); }//from www .ja v a 2 s. co m protected Object parseWithoutTimeZone(DateTimeParserBucket bucket) { return new LocalDate(bucket.computeMillis()); } }; } return yearDataTypeParser; }
From source file:org.zkoss.ganttz.timetracker.zoom.DetailOneTimeTrackerState.java
License:Open Source License
@Override protected ReadablePeriod getPeriodFirstLevel() { return Years.ONE; }