From 0dcaf8d199519f312e1bc74b5e61992f47ef3141 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 27 Nov 2014 13:55:11 +0000
Subject: [PATCH] Code cleanup
---
opendj3-server-dev/src/server/org/opends/server/backends/task/RecurringTask.java | 157 +++++++++++++++++++++-------------------------------
1 files changed, 64 insertions(+), 93 deletions(-)
diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/task/RecurringTask.java b/opendj3-server-dev/src/server/org/opends/server/backends/task/RecurringTask.java
index de0431b..5a33f6e 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/task/RecurringTask.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/task/RecurringTask.java
@@ -27,39 +27,34 @@
package org.opends.server.backends.task;
import java.text.SimpleDateFormat;
-import java.util.Arrays;
import java.util.Date;
import java.util.GregorianCalendar;
-import org.forgerock.i18n.LocalizableMessage;
-
-
-
import java.util.Iterator;
import java.util.List;
-
import java.util.StringTokenizer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+
+import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.ldap.ByteString;
+import org.forgerock.opendj.ldap.ResultCode;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeType;
-import org.forgerock.opendj.ldap.ByteString;
-import org.opends.server.types.DirectoryException;
+import org.opends.server.types.Attributes;
import org.opends.server.types.DN;
+import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
import org.opends.server.types.InitializationException;
-import org.forgerock.opendj.ldap.ResultCode;
-
-import static org.opends.server.config.ConfigConstants.*;
-import org.forgerock.i18n.slf4j.LocalizedLogger;
-import org.opends.server.types.Attributes;
import org.opends.server.types.RDN;
+import static java.util.Calendar.*;
+
import static org.opends.messages.BackendMessages.*;
-import static org.opends.server.util.StaticUtils.*;
+import static org.opends.server.config.ConfigConstants.*;
import static org.opends.server.util.ServerConstants.*;
-
-
+import static org.opends.server.util.StaticUtils.*;
/**
* This class defines a information about a recurring task, which will be used
@@ -72,42 +67,39 @@
{
private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
-
-
-
- // The DN of the entry that actually defines this task.
+ /** The DN of the entry that actually defines this task. */
private final DN recurringTaskEntryDN;
- // The entry that actually defines this task.
+ /** The entry that actually defines this task. */
private final Entry recurringTaskEntry;
- // The unique ID for this recurring task.
+ /** The unique ID for this recurring task. */
private final String recurringTaskID;
- // The fully-qualified name of the class that will be used to implement the
- // class.
+ /**
+ * The fully-qualified name of the class that will be used to implement the
+ * class.
+ */
private final String taskClassName;
- // Task instance.
+ /** Task instance. */
private Task task;
- // Task scheduler for this task.
+ /** Task scheduler for this task. */
private final TaskScheduler taskScheduler;
- // Number of tokens in the task schedule tab.
+ /** Number of tokens in the task schedule tab. */
private static final int TASKTAB_NUM_TOKENS = 5;
- // Maximum year month days.
+ /** Maximum year month days. */
static final int MONTH_LENGTH[]
= {31,28,31,30,31,30,31,31,30,31,30,31};
- // Maximum leap year month days.
+ /** Maximum leap year month days. */
static final int LEAP_MONTH_LENGTH[]
= {31,29,31,30,31,30,31,31,30,31,30,31};
- /**
- * Task tab fields.
- */
+ /** Task tab fields. */
private static enum TaskTab {MINUTE, HOUR, DAY, MONTH, WEEKDAY};
private static final int MINUTE_INDEX = 0;
@@ -116,16 +108,16 @@
private static final int MONTH_INDEX = 3;
private static final int WEEKDAY_INDEX = 4;
- // Wildcard match pattern.
+ /** Wildcard match pattern. */
private static final Pattern wildcardPattern = Pattern.compile("^\\*(?:/(\\d+))?");
- // Exact match pattern.
+ /** Exact match pattern. */
private static final Pattern exactPattern = Pattern.compile("(\\d+)");
- // Range match pattern.
+ /** Range match pattern. */
private static final Pattern rangePattern = Pattern.compile("(\\d+)-(\\d+)(?:/(\\d+))?");
- // Boolean arrays holding task tab slots.
+ /** Boolean arrays holding task tab slots. */
private final boolean[] minutesArray;
private final boolean[] hoursArray;
private final boolean[] daysArray;
@@ -156,12 +148,11 @@
ATTR_RECURRING_TASK_ID.toLowerCase());
if (attrType == null)
{
- attrType = DirectoryServer.getDefaultAttributeType(
- ATTR_RECURRING_TASK_ID);
+ attrType = DirectoryServer.getDefaultAttributeType(ATTR_RECURRING_TASK_ID);
}
List<Attribute> attrList = recurringTaskEntry.getAttribute(attrType);
- if ((attrList == null) || attrList.isEmpty())
+ if (attrList == null || attrList.isEmpty())
{
LocalizableMessage message =
ERR_RECURRINGTASK_NO_ID_ATTRIBUTE.get(ATTR_RECURRING_TASK_ID);
@@ -195,16 +186,14 @@
// Get the schedule for this task.
- attrType = DirectoryServer.getAttributeType(
- ATTR_RECURRING_TASK_SCHEDULE.toLowerCase());
+ attrType = DirectoryServer.getAttributeType(ATTR_RECURRING_TASK_SCHEDULE.toLowerCase());
if (attrType == null)
{
- attrType = DirectoryServer.getDefaultAttributeType(
- ATTR_RECURRING_TASK_SCHEDULE);
+ attrType = DirectoryServer.getDefaultAttributeType(ATTR_RECURRING_TASK_SCHEDULE);
}
attrList = recurringTaskEntry.getAttribute(attrType);
- if ((attrList == null) || attrList.isEmpty())
+ if (attrList == null || attrList.isEmpty())
{
LocalizableMessage message = ERR_RECURRINGTASK_NO_SCHEDULE_ATTRIBUTE.get(
ATTR_RECURRING_TASK_SCHEDULE);
@@ -230,8 +219,7 @@
value = iterator.next();
if (iterator.hasNext())
{
- LocalizableMessage message = ERR_RECURRINGTASK_MULTIPLE_SCHEDULE_VALUES.get(
- ATTR_RECURRING_TASK_SCHEDULE);
+ LocalizableMessage message = ERR_RECURRINGTASK_MULTIPLE_SCHEDULE_VALUES.get(ATTR_RECURRING_TASK_SCHEDULE);
throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message);
}
@@ -248,33 +236,29 @@
weekdayArray = taskArrays[WEEKDAY_INDEX];
// Get the class name from the entry. If there isn't one, then fail.
- attrType = DirectoryServer.getAttributeType(
- ATTR_TASK_CLASS.toLowerCase());
+ attrType = DirectoryServer.getAttributeType(ATTR_TASK_CLASS.toLowerCase());
if (attrType == null)
{
attrType = DirectoryServer.getDefaultAttributeType(ATTR_TASK_CLASS);
}
attrList = recurringTaskEntry.getAttribute(attrType);
- if ((attrList == null) || attrList.isEmpty())
+ if (attrList == null || attrList.isEmpty())
{
- LocalizableMessage message = ERR_TASKSCHED_NO_CLASS_ATTRIBUTE.get(
- ATTR_TASK_CLASS);
+ LocalizableMessage message = ERR_TASKSCHED_NO_CLASS_ATTRIBUTE.get(ATTR_TASK_CLASS);
throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message);
}
if (attrList.size() > 1)
{
- LocalizableMessage message = ERR_TASKSCHED_MULTIPLE_CLASS_TYPES.get(
- ATTR_TASK_CLASS);
+ LocalizableMessage message = ERR_TASKSCHED_MULTIPLE_CLASS_TYPES.get(ATTR_TASK_CLASS);
throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message);
}
attr = attrList.get(0);
if (attr.isEmpty())
{
- LocalizableMessage message =
- ERR_TASKSCHED_NO_CLASS_VALUES.get(ATTR_TASK_CLASS);
+ LocalizableMessage message = ERR_TASKSCHED_NO_CLASS_VALUES.get(ATTR_TASK_CLASS);
throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message);
}
@@ -282,8 +266,7 @@
value = iterator.next();
if (iterator.hasNext())
{
- LocalizableMessage message = ERR_TASKSCHED_MULTIPLE_CLASS_VALUES.get(
- ATTR_TASK_CLASS);
+ LocalizableMessage message = ERR_TASKSCHED_MULTIPLE_CLASS_VALUES.get(ATTR_TASK_CLASS);
throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message);
}
@@ -423,10 +406,8 @@
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmssSSS");
String nextTaskID = task.getTaskID() + "-" + df.format(nextTaskDate);
String nextTaskIDName = NAME_PREFIX_TASK + "id";
- AttributeType taskIDAttrType =
- DirectoryServer.getAttributeType(nextTaskIDName);
- Attribute nextTaskIDAttr = Attributes.create(
- taskIDAttrType, nextTaskID);
+ AttributeType taskIDAttrType = DirectoryServer.getAttributeType(nextTaskIDName);
+ Attribute nextTaskIDAttr = Attributes.create(taskIDAttrType, nextTaskID);
nextTaskEntry.replaceAttribute(nextTaskIDAttr);
RDN nextTaskRDN = RDN.decode(nextTaskIDName + "=" + nextTaskID);
DN nextTaskDN = new DN(nextTaskRDN,
@@ -465,7 +446,7 @@
/**
* Parse and validate recurring task schedule.
* @param taskSchedule recurring task schedule tab in crontab(5) format.
- * @param arrays, an array of 5 boolean arrays. The array has the following
+ * @param arrays an array of 5 boolean arrays. The array has the following
* structure: {minutesArray, hoursArray, daysArray, monthArray, weekdayArray}.
* @param referToTaskEntryAttribute whether the error messages must refer
* to the task entry attribute or not. This is used to have meaningful
@@ -473,8 +454,7 @@
* a crontab formatted string.
* @throws DirectoryException to indicate an error.
*/
- private static void parseTaskTab(String taskSchedule,
- boolean[][] arrays,
+ private static void parseTaskTab(String taskSchedule, boolean[][] arrays,
boolean referToTaskEntryAttribute) throws DirectoryException
{
StringTokenizer st = new StringTokenizer(taskSchedule);
@@ -591,15 +571,13 @@
* @param tabField recurring task schedule field in crontab(5) format.
* @param minValue minimum value allowed for this field.
* @param maxValue maximum value allowed for this field.
- * @return boolean schedule slots range set according to
- * the schedule field.
+ * @return boolean schedule slots range set according to the schedule field.
* @throws IllegalArgumentException if tab field is invalid.
*/
public static boolean[] parseTaskTabField(String tabField,
int minValue, int maxValue) throws IllegalArgumentException
{
boolean[] valueList = new boolean[maxValue + 1];
- Arrays.fill(valueList, false);
// Wildcard with optional increment.
Matcher m = wildcardPattern.matcher(tabField);
@@ -675,7 +653,7 @@
*/
private static boolean isValueAbsent(String s)
{
- return (s == null || s.length() == 0) ? true : false;
+ return s == null || s.length() == 0;
}
/**
* Get next recurring slot from the range.
@@ -719,8 +697,7 @@
for (;;) {
// Minute
for (;;) {
- minute = getNextTimeSlice(minutesArray,
- calendar.get(GregorianCalendar.MINUTE));
+ minute = getNextTimeSlice(minutesArray, calendar.get(MINUTE));
if (minute == -1) {
calendar.set(GregorianCalendar.MINUTE, 0);
calendar.add(GregorianCalendar.HOUR_OF_DAY, 1);
@@ -741,8 +718,7 @@
}
day = getNextTimeSlice(daysArray,
calendar.get(GregorianCalendar.DAY_OF_MONTH));
- if ((day == -1) || (day > calendar.getActualMaximum(
- GregorianCalendar.DAY_OF_MONTH)))
+ if (day == -1 || day > calendar.getActualMaximum(DAY_OF_MONTH))
{
calendar.set(GregorianCalendar.DAY_OF_MONTH, 1);
calendar.add(GregorianCalendar.MONTH, 1);
@@ -751,33 +727,28 @@
break;
}
}
- month = getNextTimeSlice(monthArray,
- (calendar.get(GregorianCalendar.MONTH) + 1));
+ month = getNextTimeSlice(monthArray, calendar.get(MONTH) + 1);
if (month == -1) {
calendar.set(GregorianCalendar.MONTH, 0);
calendar.add(GregorianCalendar.YEAR, 1);
+ }
+ else if (day > LEAP_MONTH_LENGTH[month - 1]
+ && (getNextTimeSlice(daysArray, 1) != day
+ || getNextTimeSlice(monthArray, 1) != month))
+ {
+ calendar.set(DAY_OF_MONTH, 1);
+ calendar.add(MONTH, 1);
+ } else if (day > MONTH_LENGTH[month - 1]
+ && !calendar.isLeapYear(calendar.get(YEAR))) {
+ calendar.add(YEAR, 1);
} else {
- if ((day > LEAP_MONTH_LENGTH[month - 1]) &&
- ((getNextTimeSlice(daysArray, 1) != day) ||
- (getNextTimeSlice(monthArray, 1) != month)))
- {
- calendar.set(GregorianCalendar.DAY_OF_MONTH, 1);
- calendar.add(GregorianCalendar.MONTH, 1);
- } else if ((day > MONTH_LENGTH[month - 1]) &&
- (!calendar.isLeapYear(calendar.get(
- GregorianCalendar.YEAR)))) {
- calendar.add(GregorianCalendar.YEAR, 1);
- } else {
- calendar.set(GregorianCalendar.MONTH, (month - 1));
- break;
- }
+ calendar.set(MONTH, month - 1);
+ break;
}
}
- weekday = getNextTimeSlice(weekdayArray,
- (calendar.get(GregorianCalendar.DAY_OF_WEEK) - 1));
- if ((weekday == -1) ||
- (weekday != (calendar.get(
- GregorianCalendar.DAY_OF_WEEK) - 1)))
+ weekday = getNextTimeSlice(weekdayArray, calendar.get(DAY_OF_WEEK) - 1);
+ if (weekday == -1
+ || weekday != calendar.get(DAY_OF_WEEK) - 1)
{
calendar.add(GregorianCalendar.DAY_OF_MONTH, 1);
} else {
--
Gitblit v1.10.0