Author: mbrohl
Date: Sun Dec 17 11:48:06 2017 New Revision: 1818481 URL: http://svn.apache.org/viewvc?rev=1818481&view=rev Log: Improved: General refactoring and code improvements, package org.apache.ofbiz.service.calendar. (OFBIZ-9946) Thanks Dennis Balkir for reporting and providing the patches. Modified: ofbiz/ofbiz-framework/trunk/framework/service/src/main/java/org/apache/ofbiz/service/calendar/RecurrenceInfo.java ofbiz/ofbiz-framework/trunk/framework/service/src/main/java/org/apache/ofbiz/service/calendar/RecurrenceRule.java ofbiz/ofbiz-framework/trunk/framework/service/src/main/java/org/apache/ofbiz/service/calendar/RecurrenceUtil.java ofbiz/ofbiz-framework/trunk/framework/service/src/main/java/org/apache/ofbiz/service/calendar/TemporalExpression.java ofbiz/ofbiz-framework/trunk/framework/service/src/main/java/org/apache/ofbiz/service/calendar/TemporalExpressionPrinter.java Modified: ofbiz/ofbiz-framework/trunk/framework/service/src/main/java/org/apache/ofbiz/service/calendar/RecurrenceInfo.java URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/service/src/main/java/org/apache/ofbiz/service/calendar/RecurrenceInfo.java?rev=1818481&r1=1818480&r2=1818481&view=diff ============================================================================== --- ofbiz/ofbiz-framework/trunk/framework/service/src/main/java/org/apache/ofbiz/service/calendar/RecurrenceInfo.java (original) +++ ofbiz/ofbiz-framework/trunk/framework/service/src/main/java/org/apache/ofbiz/service/calendar/RecurrenceInfo.java Sun Dec 17 11:48:06 2017 @@ -50,16 +50,18 @@ public class RecurrenceInfo { /** Creates new RecurrenceInfo */ public RecurrenceInfo(GenericValue info) throws RecurrenceInfoException { this.info = info; - if (!"RecurrenceInfo".equals(info.getEntityName())) + if (!"RecurrenceInfo".equals(info.getEntityName())) { throw new RecurrenceInfoException("Invalid RecurrenceInfo Value object."); + } init(); } /** Initializes the rules for this RecurrenceInfo object. */ public void init() throws RecurrenceInfoException { - if (info.get("startDateTime") == null) + if (info.get("startDateTime") == null) { throw new RecurrenceInfoException("Recurrence startDateTime cannot be null."); + } // Get start date long startTime = info.getTimestamp("startDateTime").getTime(); @@ -144,8 +146,9 @@ public class RecurrenceInfo { /** Returns the current count of this recurrence. */ public long getCurrentCount() { - if (info.get("recurrenceCount") != null) + if (info.get("recurrenceCount") != null) { return info.getLong("recurrenceCount").longValue(); + } return 0; } @@ -170,13 +173,12 @@ public class RecurrenceInfo { rulesList.addAll(eRulesList); try { - for (RecurrenceRule rule: rulesList) + for (RecurrenceRule rule: rulesList) { rule.remove(); + } info.remove(); - } catch (RecurrenceRuleException rre) { - throw new RecurrenceInfoException(rre.getMessage(), rre); - } catch (GenericEntityException gee) { - throw new RecurrenceInfoException(gee.getMessage(), gee); + } catch (RecurrenceRuleException | GenericEntityException e) { + throw new RecurrenceInfoException(e.getMessage(), e); } } @@ -262,7 +264,9 @@ public class RecurrenceInfo { private long getNextTime(RecurrenceRule rule, long fromTime) { long nextTime = rule.next(getStartTime(), fromTime, getCurrentCount()); - if (Debug.verboseOn()) Debug.logVerbose("Next Time Before Date Check: " + nextTime, module); + if (Debug.verboseOn()) { + Debug.logVerbose("Next Time Before Date Check: " + nextTime, module); + } return checkDateList(rDateList, nextTime, fromTime); } @@ -271,10 +275,11 @@ public class RecurrenceInfo { if (UtilValidate.isNotEmpty(dateList)) { for (Date thisDate: dateList) { - if (nextTime > 0 && thisDate.getTime() < nextTime && thisDate.getTime() > fromTime) + if (nextTime > 0 && thisDate.getTime() < nextTime && thisDate.getTime() > fromTime) { nextTime = thisDate.getTime(); - else if (nextTime == 0 && thisDate.getTime() > fromTime) + } else if (nextTime == 0 && thisDate.getTime() > fromTime) { nextTime = thisDate.getTime(); + } } } return nextTime; @@ -286,8 +291,9 @@ public class RecurrenceInfo { while (exceptRulesIterator.hasNext()) { RecurrenceRule except = exceptRulesIterator.next(); - if (except.isValid(getStartTime(), time) || eDateList.contains(new Date(time))) + if (except.isValid(getStartTime(), time) || eDateList.contains(new Date(time))) { return false; + } } return true; } @@ -319,10 +325,8 @@ public class RecurrenceInfo { RecurrenceInfo newInfo = new RecurrenceInfo(value); return newInfo; - } catch (RecurrenceRuleException re) { - throw new RecurrenceInfoException(re.getMessage(), re); - } catch (GenericEntityException ee) { - throw new RecurrenceInfoException(ee.getMessage(), ee); + } catch (RecurrenceRuleException | GenericEntityException e) { + throw new RecurrenceInfoException(e.getMessage(), e); } catch (RecurrenceInfoException rie) { throw rie; } Modified: ofbiz/ofbiz-framework/trunk/framework/service/src/main/java/org/apache/ofbiz/service/calendar/RecurrenceRule.java URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/service/src/main/java/org/apache/ofbiz/service/calendar/RecurrenceRule.java?rev=1818481&r1=1818480&r2=1818481&view=diff ============================================================================== --- ofbiz/ofbiz-framework/trunk/framework/service/src/main/java/org/apache/ofbiz/service/calendar/RecurrenceRule.java (original) +++ ofbiz/ofbiz-framework/trunk/framework/service/src/main/java/org/apache/ofbiz/service/calendar/RecurrenceRule.java Sun Dec 17 11:48:06 2017 @@ -106,8 +106,9 @@ public class RecurrenceRule { */ public RecurrenceRule(GenericValue rule) throws RecurrenceRuleException { this.rule = rule; - if (!"RecurrenceRule".equals(rule.getEntityName())) + if (!"RecurrenceRule".equals(rule.getEntityName())) { throw new RecurrenceRuleException("Invalid RecurrenceRule Value object."); + } init(); } @@ -119,10 +120,12 @@ public class RecurrenceRule { // Check the validity of the rule String freq = rule.getString("frequency"); - if (!checkFreq(freq)) + if (!checkFreq(freq)) { throw new RecurrenceRuleException("Recurrence FREQUENCY is a required parameter."); - if (rule.getLong("intervalNumber").longValue() < 1) + } + if (rule.getLong("intervalNumber").longValue() < 1) { throw new RecurrenceRuleException("Recurrence INTERVAL must be a positive integer."); + } // Initialize the byXXX lists bySecondList = StringUtil.split(rule.getString("bySecondList"), ","); @@ -138,22 +141,30 @@ public class RecurrenceRule { // Checks for a valid frequency property. private boolean checkFreq(String freq) { - if (freq == null) + if (freq == null) { return false; - if ("SECONDLY".equalsIgnoreCase(freq)) + } + if ("SECONDLY".equalsIgnoreCase(freq)) { return true; - if ("MINUTELY".equalsIgnoreCase(freq)) + } + if ("MINUTELY".equalsIgnoreCase(freq)) { return true; - if ("HOURLY".equalsIgnoreCase(freq)) + } + if ("HOURLY".equalsIgnoreCase(freq)) { return true; - if ("DAILY".equalsIgnoreCase(freq)) + } + if ("DAILY".equalsIgnoreCase(freq)) { return true; - if ("WEEKLY".equalsIgnoreCase(freq)) + } + if ("WEEKLY".equalsIgnoreCase(freq)) { return true; - if ("MONTHLY".equalsIgnoreCase(freq)) + } + if ("MONTHLY".equalsIgnoreCase(freq)) { return true; - if ("YEARLY".equalsIgnoreCase(freq)) + } + if ("YEARLY".equalsIgnoreCase(freq)) { return true; + } return false; } @@ -186,8 +197,9 @@ public class RecurrenceRule { *@return long The number of time this recurrence will run. */ public long getCount() { - if (rule.get("countNumber") != null) + if (rule.get("countNumber") != null) { return rule.getLong("countNumber").longValue(); + } return 0; } @@ -206,22 +218,30 @@ public class RecurrenceRule { public int getFrequency() { String freq = rule.getString("frequency"); - if (freq == null) + if (freq == null) { return 0; - if ("SECONDLY".equalsIgnoreCase(freq)) + } + if ("SECONDLY".equalsIgnoreCase(freq)) { return SECONDLY; - if ("MINUTELY".equalsIgnoreCase(freq)) + } + if ("MINUTELY".equalsIgnoreCase(freq)) { return MINUTELY; - if ("HOURLY".equalsIgnoreCase(freq)) + } + if ("HOURLY".equalsIgnoreCase(freq)) { return HOURLY; - if ("DAILY".equalsIgnoreCase(freq)) + } + if ("DAILY".equalsIgnoreCase(freq)) { return DAILY; - if ("WEEKLY".equalsIgnoreCase(freq)) + } + if ("WEEKLY".equalsIgnoreCase(freq)) { return WEEKLY; - if ("MONTHLY".equalsIgnoreCase(freq)) + } + if ("MONTHLY".equalsIgnoreCase(freq)) { return MONTHLY; - if ("YEARLY".equalsIgnoreCase(freq)) + } + if ("YEARLY".equalsIgnoreCase(freq)) { return YEARLY; + } return 0; } @@ -230,8 +250,9 @@ public class RecurrenceRule { *@return long Interval value */ public long getInterval() { - if (rule.get("intervalNumber") == null) + if (rule.get("intervalNumber") == null) { return 1; + } return rule.getLong("intervalNumber").longValue(); } @@ -240,7 +261,6 @@ public class RecurrenceRule { *@return The interval of this frequency as an integer. */ public int getIntervalInt() { - // if (Debug.verboseOn()) Debug.logVerbose("[RecurrenceInfo.getInterval] : " + getInterval(), module); return (int) getInterval(); } @@ -253,20 +273,28 @@ public class RecurrenceRule { */ public long next(long startTime, long fromTime, long currentCount) { // Set up the values - if (startTime == 0) + if (startTime == 0) { startTime = RecurrenceUtil.now(); - if (fromTime == 0) + } + if (fromTime == 0) { fromTime = startTime; + } // Test the end time of the recurrence. - if (getEndTime() != 0 && getEndTime() <= RecurrenceUtil.now()) + if (getEndTime() != 0 && getEndTime() <= RecurrenceUtil.now()) { return 0; - if (Debug.verboseOn()) Debug.logVerbose("Rule NOT expired by end time.", module); + } + if (Debug.verboseOn()) { + Debug.logVerbose("Rule NOT expired by end time.", module); + } // Test the recurrence limit. - if (getCount() != -1 && currentCount >= getCount()) + if (getCount() != -1 && currentCount >= getCount()) { return 0; - if (Debug.verboseOn()) Debug.logVerbose("Rule NOT expired by max count.", module); + } + if (Debug.verboseOn()) { + Debug.logVerbose("Rule NOT expired by max count.", module); + } boolean isSeeking = true; long nextRuntime = 0; @@ -413,12 +441,14 @@ public class RecurrenceRule { public boolean isValid(long startTime, long dateTime) { long testTime = startTime; - if (testTime == dateTime) + if (testTime == dateTime) { return true; + } while (testTime < dateTime) { testTime = next(startTime, testTime, 1); - if (testTime == dateTime) + if (testTime == dateTime) { return true; + } } return false; } @@ -445,7 +475,6 @@ public class RecurrenceRule { long nextStartTime = startTime; while (nextStartTime < fromTime) { - // if (Debug.verboseOn()) Debug.logVerbose("[RecurrenceInfo.getNextFreq] : Updating time - " + getFrequency(), module); switch (getFrequency()) { case SECONDLY: cal.add(Calendar.SECOND, getIntervalInt()); @@ -492,16 +521,19 @@ public class RecurrenceRule { // Test each byXXX rule. if (UtilValidate.isNotEmpty(bySecondList)) { - if (!bySecondList.contains(String.valueOf(cal.get(Calendar.SECOND)))) + if (!bySecondList.contains(String.valueOf(cal.get(Calendar.SECOND)))) { return false; + } } if (UtilValidate.isNotEmpty(byMinuteList)) { - if (!byMinuteList.contains(String.valueOf(cal.get(Calendar.MINUTE)))) + if (!byMinuteList.contains(String.valueOf(cal.get(Calendar.MINUTE)))) { return false; + } } if (UtilValidate.isNotEmpty(byHourList)) { - if (!byHourList.contains(String.valueOf(cal.get(Calendar.HOUR_OF_DAY)))) + if (!byHourList.contains(String.valueOf(cal.get(Calendar.HOUR_OF_DAY)))) { return false; + } } if (UtilValidate.isNotEmpty(byDayList)) { Iterator<String> iter = byDayList.iterator(); @@ -515,16 +547,18 @@ public class RecurrenceRule { if ((hasNumber(dayRule)) && (getFrequency() == MONTHLY || getFrequency() == YEARLY)) { int modifier = getDailyNumber(dayRule); - if (modifier == 0) + if (modifier == 0) { foundDay = true; + } if (getFrequency() == MONTHLY) { // figure if we are the nth xDAY if this month int currentPos = cal.get(Calendar.WEEK_OF_MONTH); int dayPosCalc = cal.get(Calendar.DAY_OF_MONTH) - ((currentPos - 1) * 7); - if (dayPosCalc < 1) + if (dayPosCalc < 1) { currentPos--; + } if (modifier > 0) { if (currentPos == modifier) { foundDay = true; @@ -615,13 +649,16 @@ public class RecurrenceRule { int maxDay = cal.getActualMaximum(Calendar.DAY_OF_YEAR); int currentDay = cal.get(Calendar.DAY_OF_YEAR); - if (day > 0 && day == currentDay) + if (day > 0 && day == currentDay) { foundDay = true; - if (day < 0 && day == ((currentDay - maxDay) - 1)) + } + if (day < 0 && day == ((currentDay - maxDay) - 1)) { foundDay = true; + } } - if (!foundDay) + if (!foundDay) { return false; + } } if (UtilValidate.isNotEmpty(byWeekNoList)) { Iterator<String> iter = byWeekNoList.iterator(); @@ -639,13 +676,16 @@ public class RecurrenceRule { int maxWeek = cal.getActualMaximum(Calendar.WEEK_OF_YEAR); int currentWeek = cal.get(Calendar.WEEK_OF_YEAR); - if (week > 0 && week == currentWeek) + if (week > 0 && week == currentWeek) { foundWeek = true; - if (week < 0 && week == ((currentWeek - maxWeek) - 1)) + } + if (week < 0 && week == ((currentWeek - maxWeek) - 1)) { foundWeek = true; + } } - if (!foundWeek) + if (!foundWeek) { return false; + } } if (UtilValidate.isNotEmpty(byMonthList)) { Iterator<String> iter = byMonthList.iterator(); @@ -664,8 +704,9 @@ public class RecurrenceRule { foundMonth = true; } } - if (!foundMonth) + if (!foundMonth) { return false; + } } return true; @@ -677,8 +718,9 @@ public class RecurrenceRule { List<String> numberList = Arrays.asList(list); String firstChar = str.substring(0, 1); - if (numberList.contains(firstChar)) + if (numberList.contains(firstChar)) { return true; + } return false; } @@ -690,8 +732,9 @@ public class RecurrenceRule { for (int i = 0; i < str.length(); i++) { String thisChar = str.substring(i, i); - if (hasNumber(thisChar)) + if (hasNumber(thisChar)) { numberBuf.append(thisChar); + } } String numberStr = numberBuf.toString(); @@ -724,20 +767,27 @@ public class RecurrenceRule { private int getCalendarDay(String day) { if (day != null) { day = day.trim(); - if ("MO".equalsIgnoreCase(day)) + if ("MO".equalsIgnoreCase(day)) { return Calendar.MONDAY; - if ("TU".equalsIgnoreCase(day)) + } + if ("TU".equalsIgnoreCase(day)) { return Calendar.TUESDAY; - if ("WE".equalsIgnoreCase(day)) + } + if ("WE".equalsIgnoreCase(day)) { return Calendar.WEDNESDAY; - if ("TH".equalsIgnoreCase(day)) + } + if ("TH".equalsIgnoreCase(day)) { return Calendar.THURSDAY; - if ("FR".equalsIgnoreCase(day)) + } + if ("FR".equalsIgnoreCase(day)) { return Calendar.FRIDAY; - if ("SA".equalsIgnoreCase(day)) + } + if ("SA".equalsIgnoreCase(day)) { return Calendar.SATURDAY; - if ("SU".equalsIgnoreCase(day)) + } + if ("SU".equalsIgnoreCase(day)) { return Calendar.SUNDAY; + } } return 0; } @@ -760,10 +810,12 @@ public class RecurrenceRule { throws RecurrenceRuleException { String freq[] = {"", "SECONDLY", "MINUTELY", "HOURLY", "DAILY", "WEEKLY", "MONTHLY", "YEARLY"}; - if (frequency < 1 || frequency > 7) + if (frequency < 1 || frequency > 7) { throw new RecurrenceRuleException("Invalid frequency"); - if (interval < 0) + } + if (interval < 0) { throw new RecurrenceRuleException("Invalid interval"); + } String freqStr = freq[frequency]; Modified: ofbiz/ofbiz-framework/trunk/framework/service/src/main/java/org/apache/ofbiz/service/calendar/RecurrenceUtil.java URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/service/src/main/java/org/apache/ofbiz/service/calendar/RecurrenceUtil.java?rev=1818481&r1=1818480&r2=1818481&view=diff ============================================================================== --- ofbiz/ofbiz-framework/trunk/framework/service/src/main/java/org/apache/ofbiz/service/calendar/RecurrenceUtil.java (original) +++ ofbiz/ofbiz-framework/trunk/framework/service/src/main/java/org/apache/ofbiz/service/calendar/RecurrenceUtil.java Sun Dec 17 11:48:06 2017 @@ -37,12 +37,15 @@ public final class RecurrenceUtil { public static Date parseDate(String dateStr) { String formatString = ""; - if (dateStr.length() == 16) + if (dateStr.length() == 16) { dateStr = dateStr.substring(0, 14); - if (dateStr.length() == 15) + } + if (dateStr.length() == 15) { formatString = "yyyyMMdd'T'hhmmss"; - if (dateStr.length() == 8) + } + if (dateStr.length() == 8) { formatString = "yyyyMMdd"; + } SimpleDateFormat formatter = new SimpleDateFormat(formatString); ParsePosition pos = new ParsePosition(0); @@ -52,12 +55,14 @@ public final class RecurrenceUtil { /** Returns a List of parsed date strings. */ public static List<Date> parseDateList(List<String> dateList) { - List<Date> newList = new ArrayList<Date>(); + List<Date> newList = new ArrayList<>(); - if (dateList == null) + if (dateList == null) { return newList; - for (String value: dateList) + } + for (String value: dateList) { newList.add(parseDate(value)); + } return newList; } @@ -67,10 +72,11 @@ public final class RecurrenceUtil { Calendar cal = Calendar.getInstance(); cal.setTime(date); - if (cal.isSet(Calendar.MINUTE)) + if (cal.isSet(Calendar.MINUTE)) { formatString = "yyyyMMdd'T'hhmmss"; - else + } else { formatString = "yyyyMMdd"; + } SimpleDateFormat formatter = new SimpleDateFormat(formatString); return formatter.format(date); @@ -78,9 +84,10 @@ public final class RecurrenceUtil { /** Returns a Llist of date strings from a List of Date objects */ public static List<String> formatDateList(List<Date> dateList) { - List<String> newList = new ArrayList<String>(); - for (Date date: dateList) + List<String> newList = new ArrayList<>(); + for (Date date: dateList) { newList.add(formatDate(date)); + } return newList; } Modified: ofbiz/ofbiz-framework/trunk/framework/service/src/main/java/org/apache/ofbiz/service/calendar/TemporalExpression.java URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/service/src/main/java/org/apache/ofbiz/service/calendar/TemporalExpression.java?rev=1818481&r1=1818480&r2=1818481&view=diff ============================================================================== --- ofbiz/ofbiz-framework/trunk/framework/service/src/main/java/org/apache/ofbiz/service/calendar/TemporalExpression.java (original) +++ ofbiz/ofbiz-framework/trunk/framework/service/src/main/java/org/apache/ofbiz/service/calendar/TemporalExpression.java Sun Dec 17 11:48:06 2017 @@ -53,20 +53,26 @@ public abstract class TemporalExpression @Override public boolean equals(Object obj) { - if (this == obj) + if (this == obj) { return true; - if (obj == null) + } + if (obj == null) { return false; - if (getClass() != obj.getClass()) + } + if (getClass() != obj.getClass()) { return false; + } TemporalExpression other = (TemporalExpression) obj; if (id == null) { - if (other.id != null) + if (other.id != null) { return false; - } else if (!id.equals(other.id)) + } + } else if (!id.equals(other.id)) { return false; - if (sequence != other.sequence) + } + if (sequence != other.sequence) { return false; + } return true; } Modified: ofbiz/ofbiz-framework/trunk/framework/service/src/main/java/org/apache/ofbiz/service/calendar/TemporalExpressionPrinter.java URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/service/src/main/java/org/apache/ofbiz/service/calendar/TemporalExpressionPrinter.java?rev=1818481&r1=1818480&r2=1818481&view=diff ============================================================================== --- ofbiz/ofbiz-framework/trunk/framework/service/src/main/java/org/apache/ofbiz/service/calendar/TemporalExpressionPrinter.java (original) +++ ofbiz/ofbiz-framework/trunk/framework/service/src/main/java/org/apache/ofbiz/service/calendar/TemporalExpressionPrinter.java Sun Dec 17 11:48:06 2017 @@ -24,7 +24,7 @@ public class TemporalExpressionPrinter i protected final StringBuilder sb = new StringBuilder(); protected int indentSize = 2; protected int currentIndent = 0; - + public TemporalExpressionPrinter(TemporalExpression expression) { this.expression = expression; } |
Free forum by Nabble | Edit this page |