List of usage examples for org.joda.time LocalDateTime dayOfMonth
public Property dayOfMonth()
From source file:ee.ut.soras.ajavtV2.mudel.ajavaljend.arvutus.SemLeidmiseAbimeetodid.java
License:Open Source License
/** * Leiab <tt>currentDateTime</tt> granulaarsuse <tt>superField</tt> * <i>n</i>-inda alamosa, mis vastab tingimustele <tt>subField == soughtValueOfSubField</tt>. * <p>//from w ww.ja va2 s . c om * Negatiivsete <i>n</i> vaartuste korral voetakse alamosa "tagantpoolt": vaartus * <i>n</i> == -1 tahistab <i>viimast</i>, <i>n</i> == -2 tahistab <i>eelviimast</i> * jne alamosa. * <p> * Praegu on defineeritud ainult <i>kuu n-inda nadalapaeva leidmise</i> operatsioon ( * <tt>superField == MONTH</tt>, <tt>subField == DAY_OF_WEEK</tt>, <tt>soughtValueOfSubField == a weekdayname</tt> ). */ public static LocalDateTime findNthSubpartOfGranularity(Granulaarsus superField, Granulaarsus subField, int soughtValueOfSubField, int n, LocalDateTime currentDateTime) { if (superField == Granulaarsus.MONTH) { // -------------------------------------- // Kuu n-inda nadalapaeva leidmine ... // -------------------------------------- if (subField == Granulaarsus.DAY_OF_WEEK && DateTimeConstants.MONDAY <= soughtValueOfSubField && soughtValueOfSubField <= DateTimeConstants.SUNDAY) { if (n > 0) { // // Algoritm: // http://msdn.microsoft.com/en-us/library/aa227532(VS.60).aspx // // Kerime kaesoleva kuu esimese kuupaeva peale ... LocalDateTime newDate = currentDateTime.withDayOfMonth(1); // Leiame esimese otsitud nadalapaeva while (newDate.getDayOfWeek() != soughtValueOfSubField) { newDate = newDate.plusDays(1); } int currentMonth = newDate.getMonthOfYear(); newDate = newDate.plusDays((n - 1) * 7); if (currentMonth == newDate.getMonthOfYear()) { // Kui kuu j2i kindlalt samaks, tagastame leitud nadalapaeva return newDate; } } else if (n < 0) { // Negatiivsete vaartuste korral otsime lahendust lopust: // Kerime kuu viimase vaartuse peale LocalDateTime newDate = currentDateTime .withDayOfMonth(currentDateTime.dayOfMonth().getMaximumValue()); // Leiame viimase otsitud nadalapaeva while (newDate.getDayOfWeek() != soughtValueOfSubField) { newDate = newDate.minusDays(1); } int currentMonth = newDate.getMonthOfYear(); newDate = newDate.minusDays(((n * (-1)) - 1) * 7); if (currentMonth == newDate.getMonthOfYear()) { // Kui kuu j2i kindlalt samaks, tagastame leitud nadalapaeva return newDate; } } } // ------------------------------------------------- // Kuu n-inda ndala/ndalavahetuse leidmine ... // ------------------------------------------------- // ------------------------------------------------------------------- // Teeme eelduse, et kuu esimene ndal on ndal, mis sisaldab kuu // esimest nadalapaeva {soughtValueOfSubField}; // Ning analoogselt, kuu viimane ndal on ndal, mis sisaldab kuu // viimast nadalapaeva {soughtValueOfSubField}; // ------------------------------------------------------------------- if (subField == Granulaarsus.WEEK_OF_YEAR && DateTimeConstants.MONDAY <= soughtValueOfSubField && soughtValueOfSubField <= DateTimeConstants.SUNDAY) { if (n > 0) { // Kerime kaesoleva kuu esimese paeva peale ... LocalDateTime newDate = currentDateTime.withDayOfMonth(1); // Leiame kuu esimese neljapaeva/laupaeva while (newDate.getDayOfWeek() != soughtValueOfSubField) { newDate = newDate.plusDays(1); } newDate = newDate.plusDays((n - 1) * 7); return newDate; } else if (n < 0) { // Negatiivsete vaartuste korral otsime lahendust lopust: // Kerime kuu viimase vaartuse peale LocalDateTime newDate = currentDateTime .withDayOfMonth(currentDateTime.dayOfMonth().getMaximumValue()); // Leiame viimase neljapaeva/laupaeva while (newDate.getDayOfWeek() != soughtValueOfSubField) { newDate = newDate.minusDays(1); } newDate = newDate.minusDays(((n * (-1)) - 1) * 7); return newDate; } } } return null; }
From source file:org.gnucash.android.model.Budget.java
License:Apache License
/** * Returns the timestamp of the start of current period of the budget * @return Start timestamp in milliseconds *//*from w w w . j a va 2 s . co m*/ public long getStartofCurrentPeriod() { LocalDateTime localDate = new LocalDateTime(); int interval = mRecurrence.getPeriodType().getMultiplier(); switch (mRecurrence.getPeriodType()) { case DAY: localDate = localDate.millisOfDay().withMinimumValue().plusDays(interval); break; case WEEK: localDate = localDate.dayOfWeek().withMinimumValue().minusDays(interval); break; case MONTH: localDate = localDate.dayOfMonth().withMinimumValue().minusMonths(interval); break; case YEAR: localDate = localDate.dayOfYear().withMinimumValue().minusYears(interval); break; } return localDate.toDate().getTime(); }
From source file:org.gnucash.android.model.Budget.java
License:Apache License
/** * Returns the end timestamp of the current period * @return End timestamp in milliseconds *///from w w w . j a v a 2 s .c o m public long getEndOfCurrentPeriod() { LocalDateTime localDate = new LocalDateTime(); int interval = mRecurrence.getPeriodType().getMultiplier(); switch (mRecurrence.getPeriodType()) { case DAY: localDate = localDate.millisOfDay().withMaximumValue().plusDays(interval); break; case WEEK: localDate = localDate.dayOfWeek().withMaximumValue().plusWeeks(interval); break; case MONTH: localDate = localDate.dayOfMonth().withMaximumValue().plusMonths(interval); break; case YEAR: localDate = localDate.dayOfYear().withMaximumValue().plusYears(interval); break; } return localDate.toDate().getTime(); }
From source file:org.gnucash.android.model.Budget.java
License:Apache License
public long getStartOfPeriod(int periodNum) { LocalDateTime localDate = new LocalDateTime(mRecurrence.getPeriodStart().getTime()); int interval = mRecurrence.getPeriodType().getMultiplier() * periodNum; switch (mRecurrence.getPeriodType()) { case DAY:/*from www. ja v a 2 s.c o m*/ localDate = localDate.millisOfDay().withMinimumValue().plusDays(interval); break; case WEEK: localDate = localDate.dayOfWeek().withMinimumValue().minusDays(interval); break; case MONTH: localDate = localDate.dayOfMonth().withMinimumValue().minusMonths(interval); break; case YEAR: localDate = localDate.dayOfYear().withMinimumValue().minusYears(interval); break; } return localDate.toDate().getTime(); }
From source file:org.gnucash.android.model.Budget.java
License:Apache License
/** * Returns the end timestamp of the period * @param periodNum Number of the period * @return End timestamp in milliseconds of the period *//*from w ww . j a v a 2s . co m*/ public long getEndOfPeriod(int periodNum) { LocalDateTime localDate = new LocalDateTime(); int interval = mRecurrence.getPeriodType().getMultiplier() * periodNum; switch (mRecurrence.getPeriodType()) { case DAY: localDate = localDate.millisOfDay().withMaximumValue().plusDays(interval); break; case WEEK: localDate = localDate.dayOfWeek().withMaximumValue().plusWeeks(interval); break; case MONTH: localDate = localDate.dayOfMonth().withMaximumValue().plusMonths(interval); break; case YEAR: localDate = localDate.dayOfYear().withMaximumValue().plusYears(interval); break; } return localDate.toDate().getTime(); }
From source file:org.gnucash.android.ui.chart.BarChartActivity.java
License:Apache License
/** * Returns a data object that represents a user data of the specified account types * @param accountType account's type which will be displayed * @return a {@code BarData} instance that represents a user data *///from w w w . ja va2 s. c o m private BarData getData(AccountType accountType) { List<BarEntry> values = new ArrayList<>(); List<String> labels = new ArrayList<>(); List<Integer> colors = new ArrayList<>(); Map<String, Integer> accountToColorMap = new LinkedHashMap<>(); List<String> xValues = new ArrayList<>(); LocalDateTime tmpDate = new LocalDateTime(getStartDate(accountType).toDate().getTime()); for (int i = 0; i <= Months.monthsBetween(getStartDate(accountType), getEndDate(accountType)) .getMonths(); i++) { long start = tmpDate.dayOfMonth().withMinimumValue().millisOfDay().withMinimumValue().toDate() .getTime(); long end = tmpDate.dayOfMonth().withMaximumValue().millisOfDay().withMaximumValue().toDate().getTime(); List<Float> stack = new ArrayList<>(); for (Account account : mAccountsDbAdapter.getSimpleAccountList()) { if (account.getAccountType() == accountType && !account.isPlaceholderAccount() && account.getCurrency() == mCurrency) { double balance = mAccountsDbAdapter .getAccountsBalance(Collections.singletonList(account.getUID()), start, end).asDouble(); if (balance != 0) { if (!accountToColorMap.containsKey(account.getUID())) { Integer color; if (mUseAccountColor) { color = (account.getColorHexCode() != null) ? Color.parseColor(account.getColorHexCode()) : COLORS[accountToColorMap.size() % COLORS.length]; } else { color = COLORS[accountToColorMap.size() % COLORS.length]; } accountToColorMap.put(account.getUID(), color); } stack.add((float) balance); labels.add(account.getName()); colors.add(accountToColorMap.get(account.getUID())); Log.d(TAG, accountType + tmpDate.toString(" MMMM yyyy ") + account.getName() + " = " + stack.get(stack.size() - 1)); } } } String stackLabels = labels.subList(labels.size() - stack.size(), labels.size()).toString(); values.add(new BarEntry(floatListToArray(stack), i, stackLabels)); xValues.add(tmpDate.toString(X_AXIS_PATTERN)); tmpDate = tmpDate.plusMonths(1); } BarDataSet set = new BarDataSet(values, ""); set.setStackLabels(labels.toArray(new String[labels.size()])); set.setColors(colors); if (set.getYValueSum() == 0) { mChartDataPresent = false; return getEmptyData(); } mChartDataPresent = true; return new BarData(xValues, set); }
From source file:org.gnucash.android.ui.chart.LineChartActivity.java
License:Apache License
/** * Returns entries which represent a user data of the specified account type * @param accountType account's type which user data will be processed * @return entries which represent a user data *//*from w ww. ja va2 s. co m*/ private List<Entry> getEntryList(AccountType accountType) { List<String> accountUIDList = new ArrayList<>(); for (Account account : mAccountsDbAdapter.getSimpleAccountList()) { if (account.getAccountType() == accountType && !account.isPlaceholderAccount() && account.getCurrency() == mCurrency) { accountUIDList.add(account.getUID()); } } LocalDateTime earliest = new LocalDateTime(mEarliestTimestampsMap.get(accountType)); LocalDateTime latest = new LocalDateTime(mLatestTimestampsMap.get(accountType)); Log.d(TAG, "Earliest " + accountType + " date " + earliest.toString("dd MM yyyy")); Log.d(TAG, "Latest " + accountType + " date " + latest.toString("dd MM yyyy")); int months = Months.monthsBetween(earliest.withDayOfMonth(1).withMillisOfDay(0), latest.withDayOfMonth(1).withMillisOfDay(0)).getMonths(); int offset = getXAxisOffset(accountType); List<Entry> values = new ArrayList<>(months + 1); for (int i = 0; i < months + 1; i++) { long start = earliest.dayOfMonth().withMinimumValue().millisOfDay().withMinimumValue().toDate() .getTime(); long end = earliest.dayOfMonth().withMaximumValue().millisOfDay().withMaximumValue().toDate().getTime(); float balance = (float) mAccountsDbAdapter.getAccountsBalance(accountUIDList, start, end).asDouble(); values.add(new Entry(balance, i + offset)); Log.d(TAG, accountType + earliest.toString(" MMM yyyy") + ", balance = " + balance); earliest = earliest.plusMonths(1); } return values; }
From source file:org.gnucash.android.ui.report.barchart.StackedBarChartFragment.java
License:Apache License
/** * Returns a data object that represents a user data of the specified account types * @return a {@code BarData} instance that represents a user data *//*from www. ja v a 2s.c o m*/ protected BarData getData() { List<BarEntry> values = new ArrayList<>(); List<String> labels = new ArrayList<>(); List<Integer> colors = new ArrayList<>(); Map<String, Integer> accountToColorMap = new LinkedHashMap<>(); List<String> xValues = new ArrayList<>(); LocalDateTime tmpDate = new LocalDateTime(getStartDate(mAccountType).toDate().getTime()); int count = getDateDiff(new LocalDateTime(getStartDate(mAccountType).toDate().getTime()), new LocalDateTime(getEndDate(mAccountType).toDate().getTime())); for (int i = 0; i <= count; i++) { long start = 0; long end = 0; switch (mGroupInterval) { case MONTH: start = tmpDate.dayOfMonth().withMinimumValue().millisOfDay().withMinimumValue().toDate().getTime(); end = tmpDate.dayOfMonth().withMaximumValue().millisOfDay().withMaximumValue().toDate().getTime(); xValues.add(tmpDate.toString(X_AXIS_MONTH_PATTERN)); tmpDate = tmpDate.plusMonths(1); break; case QUARTER: int quarter = getQuarter(tmpDate); start = tmpDate.withMonthOfYear(quarter * 3 - 2).dayOfMonth().withMinimumValue().millisOfDay() .withMinimumValue().toDate().getTime(); end = tmpDate.withMonthOfYear(quarter * 3).dayOfMonth().withMaximumValue().millisOfDay() .withMaximumValue().toDate().getTime(); xValues.add(String.format(X_AXIS_QUARTER_PATTERN, quarter, tmpDate.toString(" YY"))); tmpDate = tmpDate.plusMonths(3); break; case YEAR: start = tmpDate.dayOfYear().withMinimumValue().millisOfDay().withMinimumValue().toDate().getTime(); end = tmpDate.dayOfYear().withMaximumValue().millisOfDay().withMaximumValue().toDate().getTime(); xValues.add(tmpDate.toString(X_AXIS_YEAR_PATTERN)); tmpDate = tmpDate.plusYears(1); break; } List<Float> stack = new ArrayList<>(); for (Account account : mAccountsDbAdapter.getSimpleAccountList()) { if (account.getAccountType() == mAccountType && !account.isPlaceholderAccount() && account.getCommodity().equals(mCommodity)) { double balance = mAccountsDbAdapter .getAccountsBalance(Collections.singletonList(account.getUID()), start, end).asDouble(); if (balance != 0) { stack.add((float) balance); String accountName = account.getName(); while (labels.contains(accountName)) { if (!accountToColorMap.containsKey(account.getUID())) { for (String label : labels) { if (label.equals(accountName)) { accountName += " "; } } } else { break; } } labels.add(accountName); if (!accountToColorMap.containsKey(account.getUID())) { Integer color; if (mUseAccountColor) { color = (account.getColor() != Account.DEFAULT_COLOR) ? account.getColor() : COLORS[accountToColorMap.size() % COLORS.length]; } else { color = COLORS[accountToColorMap.size() % COLORS.length]; } accountToColorMap.put(account.getUID(), color); } colors.add(accountToColorMap.get(account.getUID())); Log.d(TAG, mAccountType + tmpDate.toString(" MMMM yyyy ") + account.getName() + " = " + stack.get(stack.size() - 1)); } } } String stackLabels = labels.subList(labels.size() - stack.size(), labels.size()).toString(); values.add(new BarEntry(floatListToArray(stack), i, stackLabels)); } BarDataSet set = new BarDataSet(values, ""); set.setDrawValues(false); set.setStackLabels(labels.toArray(new String[labels.size()])); set.setColors(colors); if (set.getYValueSum() == 0) { mChartDataPresent = false; return getEmptyData(); } mChartDataPresent = true; return new BarData(xValues, set); }
From source file:org.gnucash.android.ui.report.BarChartFragment.java
License:Apache License
/** * Returns a data object that represents a user data of the specified account types * @return a {@code BarData} instance that represents a user data *//*from w w w .j a v a 2 s . co m*/ private BarData getData() { List<BarEntry> values = new ArrayList<>(); List<String> labels = new ArrayList<>(); List<Integer> colors = new ArrayList<>(); Map<String, Integer> accountToColorMap = new LinkedHashMap<>(); List<String> xValues = new ArrayList<>(); LocalDateTime tmpDate = new LocalDateTime(getStartDate(mAccountType).toDate().getTime()); int count = getDateDiff(new LocalDateTime(getStartDate(mAccountType).toDate().getTime()), new LocalDateTime(getEndDate(mAccountType).toDate().getTime())); for (int i = 0; i <= count; i++) { long start = 0; long end = 0; switch (mGroupInterval) { case MONTH: start = tmpDate.dayOfMonth().withMinimumValue().millisOfDay().withMinimumValue().toDate().getTime(); end = tmpDate.dayOfMonth().withMaximumValue().millisOfDay().withMaximumValue().toDate().getTime(); xValues.add(tmpDate.toString(X_AXIS_MONTH_PATTERN)); tmpDate = tmpDate.plusMonths(1); break; case QUARTER: int quarter = getQuarter(tmpDate); start = tmpDate.withMonthOfYear(quarter * 3 - 2).dayOfMonth().withMinimumValue().millisOfDay() .withMinimumValue().toDate().getTime(); end = tmpDate.withMonthOfYear(quarter * 3).dayOfMonth().withMaximumValue().millisOfDay() .withMaximumValue().toDate().getTime(); xValues.add(String.format(X_AXIS_QUARTER_PATTERN, quarter, tmpDate.toString(" YY"))); tmpDate = tmpDate.plusMonths(3); break; case YEAR: start = tmpDate.dayOfYear().withMinimumValue().millisOfDay().withMinimumValue().toDate().getTime(); end = tmpDate.dayOfYear().withMaximumValue().millisOfDay().withMaximumValue().toDate().getTime(); xValues.add(tmpDate.toString(X_AXIS_YEAR_PATTERN)); tmpDate = tmpDate.plusYears(1); break; } List<Float> stack = new ArrayList<>(); for (Account account : mAccountsDbAdapter.getSimpleAccountList()) { if (account.getAccountType() == mAccountType && !account.isPlaceholderAccount() && account.getCurrency() == mCurrency) { double balance = mAccountsDbAdapter .getAccountsBalance(Collections.singletonList(account.getUID()), start, end).asDouble(); if (balance != 0) { if (!accountToColorMap.containsKey(account.getUID())) { Integer color; if (mUseAccountColor) { color = (account.getColorHexCode() != null) ? Color.parseColor(account.getColorHexCode()) : COLORS[accountToColorMap.size() % COLORS.length]; } else { color = COLORS[accountToColorMap.size() % COLORS.length]; } accountToColorMap.put(account.getUID(), color); } stack.add((float) balance); labels.add(account.getName()); colors.add(accountToColorMap.get(account.getUID())); Log.d(TAG, mAccountType + tmpDate.toString(" MMMM yyyy ") + account.getName() + " = " + stack.get(stack.size() - 1)); } } } String stackLabels = labels.subList(labels.size() - stack.size(), labels.size()).toString(); values.add(new BarEntry(floatListToArray(stack), i, stackLabels)); } BarDataSet set = new BarDataSet(values, ""); set.setDrawValues(false); set.setStackLabels(labels.toArray(new String[labels.size()])); set.setColors(colors); if (set.getYValueSum() == 0) { mChartDataPresent = false; return getEmptyData(); } mChartDataPresent = true; return new BarData(xValues, set); }
From source file:org.gnucash.android.ui.report.linechart.CashFlowLineChartFragment.java
License:Apache License
/** * Returns entries which represent a user data of the specified account type * @param accountType account's type which user data will be processed * @return entries which represent a user data *///from www. java 2s . c om private List<Entry> getEntryList(AccountType accountType) { List<String> accountUIDList = new ArrayList<>(); for (Account account : mAccountsDbAdapter.getSimpleAccountList()) { if (account.getAccountType() == accountType && !account.isPlaceholderAccount() && account.getCommodity().equals(mCommodity)) { accountUIDList.add(account.getUID()); } } LocalDateTime earliest; LocalDateTime latest; if (mReportPeriodStart == -1 && mReportPeriodEnd == -1) { earliest = new LocalDateTime(mEarliestTimestampsMap.get(accountType)); latest = new LocalDateTime(mLatestTimestampsMap.get(accountType)); } else { earliest = new LocalDateTime(mReportPeriodStart); latest = new LocalDateTime(mReportPeriodEnd); } Log.d(TAG, "Earliest " + accountType + " date " + earliest.toString("dd MM yyyy")); Log.d(TAG, "Latest " + accountType + " date " + latest.toString("dd MM yyyy")); int xAxisOffset = getDateDiff(new LocalDateTime(mEarliestTransactionTimestamp), earliest); int count = getDateDiff(earliest, latest); List<Entry> values = new ArrayList<>(count + 1); for (int i = 0; i <= count; i++) { long start = 0; long end = 0; switch (mGroupInterval) { case QUARTER: int quarter = getQuarter(earliest); start = earliest.withMonthOfYear(quarter * 3 - 2).dayOfMonth().withMinimumValue().millisOfDay() .withMinimumValue().toDate().getTime(); end = earliest.withMonthOfYear(quarter * 3).dayOfMonth().withMaximumValue().millisOfDay() .withMaximumValue().toDate().getTime(); earliest = earliest.plusMonths(3); break; case MONTH: start = earliest.dayOfMonth().withMinimumValue().millisOfDay().withMinimumValue().toDate() .getTime(); end = earliest.dayOfMonth().withMaximumValue().millisOfDay().withMaximumValue().toDate().getTime(); earliest = earliest.plusMonths(1); break; case YEAR: start = earliest.dayOfYear().withMinimumValue().millisOfDay().withMinimumValue().toDate().getTime(); end = earliest.dayOfYear().withMaximumValue().millisOfDay().withMaximumValue().toDate().getTime(); earliest = earliest.plusYears(1); break; } float balance = (float) mAccountsDbAdapter.getAccountsBalance(accountUIDList, start, end).asDouble(); values.add(new Entry(balance, i + xAxisOffset)); Log.d(TAG, accountType + earliest.toString(" MMM yyyy") + ", balance = " + balance); } return values; }