modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/DurationItem.java
| 14 -
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/EnhancedDynamicForm.java
| 3
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/trigger/JobTriggerEditor.java
| 123 ++++------
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDetailsView.java
| 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/operation/schedule/GroupOperationScheduleDetailsView.java
| 22 +
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/TypeConversionUtility.java
| 25 +-
6 files changed, 103 insertions(+), 88 deletions(-)
New commits:
commit eed0996e3794c0d81cc549b5d976b69293cfb7bb
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Mon Feb 7 13:31:35 2011 -0500
converted JobTriggerEditor over to using DurationItems for durations; a few bug fixes
and improvements to operation schedule views
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/DurationItem.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/DurationItem.java
index e882254..cfa4682 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/DurationItem.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/DurationItem.java
@@ -173,15 +173,15 @@ public class DurationItem extends CanvasItem {
}
private void updateValue() {
- Integer value = calculateValue();
+ Long value = calculateValue();
setValue(value);
}
- private Integer calculateValue() {
+ private Long calculateValue() {
IntegerItem valueItem = (IntegerItem) this.form.getItem(FIELD_VALUE);
Object value = valueItem.getValue();
- Integer integerValue = TypeConversionUtility.toInteger(value);
- Integer convertedValue = null;
+ Long integerValue = TypeConversionUtility.toLong(value);
+ Long convertedValue = null;
if (integerValue != null) {
TimeUnit unit = getInputTimeUnit();
if (unit == null) {
@@ -357,7 +357,11 @@ public class DurationItem extends CanvasItem {
}
public Integer getValueAsInteger() {
- return (Integer) getValue();
+ return TypeConversionUtility.toInteger(getValue());
+ }
+
+ public Long getValueAsLong() {
+ return TypeConversionUtility.toLong(getValue());
}
@Override
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/EnhancedDynamicForm.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/EnhancedDynamicForm.java
index 7f01d38..76ec2e0 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/EnhancedDynamicForm.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/EnhancedDynamicForm.java
@@ -29,6 +29,7 @@ import java.util.List;
import com.smartgwt.client.types.DSOperationType;
import com.smartgwt.client.widgets.form.fields.BooleanItem;
import com.smartgwt.client.widgets.form.fields.CanvasItem;
+import com.smartgwt.client.widgets.form.fields.CheckboxItem;
import com.smartgwt.client.widgets.form.fields.FormItem;
import com.smartgwt.client.widgets.form.fields.HiddenItem;
import com.smartgwt.client.widgets.form.fields.StaticTextItem;
@@ -114,7 +115,7 @@ public class EnhancedDynamicForm extends LocatableDynamicForm {
staticItem.setColSpan(item.getAttribute("colSpan"));
// TODO: Any other fields we should copy? icons?
- if (item instanceof BooleanItem) {
+ if ((item instanceof BooleanItem) || (item instanceof CheckboxItem))
{
LinkedHashMap<String, String> valueMap = new
LinkedHashMap<String, String>();
valueMap.put("true", MSG.common_val_yes());
valueMap.put("false", MSG.common_val_no());
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/trigger/JobTriggerEditor.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/trigger/JobTriggerEditor.java
index d2089a8..87d287d 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/trigger/JobTriggerEditor.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/trigger/JobTriggerEditor.java
@@ -24,6 +24,7 @@ import java.util.EnumSet;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
+import java.util.TreeSet;
import com.smartgwt.client.types.Visibility;
import com.smartgwt.client.widgets.HTMLFlow;
@@ -47,7 +48,10 @@ import com.smartgwt.client.widgets.tab.Tab;
import com.smartgwt.client.widgets.tab.TabSet;
import org.rhq.core.domain.common.JobTrigger;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
+import org.rhq.enterprise.gui.coregui.client.components.form.DurationItem;
import org.rhq.enterprise.gui.coregui.client.components.form.EnhancedDynamicForm;
+import org.rhq.enterprise.gui.coregui.client.components.form.TimeUnit;
+import org.rhq.enterprise.gui.coregui.client.components.form.UnitType;
import org.rhq.enterprise.gui.coregui.client.util.FormUtility;
import org.rhq.enterprise.gui.coregui.client.util.message.Message;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm;
@@ -539,20 +543,22 @@ public class JobTriggerEditor extends LocatableVLayout {
}
private DynamicForm createRepeatForm() {
- final DynamicForm repeatForm = new DynamicForm();
+ final EnhancedDynamicForm repeatForm = new
EnhancedDynamicForm(extendLocatorId("RepeatForm"));
repeatForm.setNumCols(6);
repeatForm.setColWidths(140, 130, 130, 130, 130);
- TextItem repeatIntervalItem = new TextItem(FIELD_REPEAT_INTERVAL, "Run now
and every");
+ TreeSet<TimeUnit> supportedUnits = new TreeSet<TimeUnit>();
+ supportedUnits.add(TimeUnit.SECONDS);
+ supportedUnits.add(TimeUnit.MINUTES);
+ supportedUnits.add(TimeUnit.HOURS);
+ supportedUnits.add(TimeUnit.DAYS);
+ supportedUnits.add(TimeUnit.WEEKS);
+ supportedUnits.add(TimeUnit.MONTHS);
+ supportedUnits.add(TimeUnit.YEARS);
+ DurationItem repeatIntervalItem = new DurationItem(FIELD_REPEAT_INTERVAL,
"Run now and every",
+ supportedUnits, false, isReadOnly(), repeatForm);
repeatIntervalItem.setRequired(true);
-
- FormUtility.addContextualHelp(repeatIntervalItem,
- "N UNITS (where N is a positive integer and UNITS is
\"seconds\", \"minutes\", \"hours\", \"days\",
\"weeks\", \"months\", \"quarters\", or \"years\",
e.g. \"30 seconds\" or \"6 weeks\")");
-
- // Configure validation.
- RegExpValidator repeatIntervalValidator = new RegExpValidator("[1-9][0-9]*[
]*(seconds|s|minutes|m|hours|h|days|d|weeks|w|months|M|quarters|q|years|y)");
- repeatIntervalItem.setValidators(repeatIntervalValidator);
- repeatIntervalItem.setValidateOnExit(true);
+ repeatIntervalItem.setContextualHelp("how often the operation should be
executed");
RadioGroupItem recurrenceTypeItem = new RadioGroupItem(FIELD_RECURRENCE_TYPE);
recurrenceTypeItem.setRequired(true);
@@ -563,17 +569,19 @@ public class JobTriggerEditor extends LocatableVLayout {
recurrenceTypeValueMap.put("indefinitely", "Indefinitely");
recurrenceTypeItem.setValueMap(recurrenceTypeValueMap);
- final TextItem repeatDurationItem = new TextItem(FIELD_REPEAT_DURATION);
+ supportedUnits = new TreeSet<TimeUnit>();
+ supportedUnits.add(TimeUnit.SECONDS);
+ supportedUnits.add(TimeUnit.MINUTES);
+ supportedUnits.add(TimeUnit.HOURS);
+ supportedUnits.add(TimeUnit.DAYS);
+ supportedUnits.add(TimeUnit.WEEKS);
+ supportedUnits.add(TimeUnit.MONTHS);
+ supportedUnits.add(TimeUnit.YEARS);
+ final DurationItem repeatDurationItem = new DurationItem(FIELD_REPEAT_DURATION,
null,
+ supportedUnits, true, isReadOnly(), repeatForm);
repeatDurationItem.setShowTitle(false);
repeatDurationItem.setVisible(false);
-
- FormUtility.addContextualHelp(repeatDurationItem,
- "N UNITS (where N is a positive integer and UNITS is
\"times\", \"seconds\", \"minutes\", \"hours\",
\"days\", \"weeks\", \"months\", \"quarters\", or
\"years\", e.g. \"30 seconds\" or \"5
repetitions\")");
-
- // Configure validation.
- RegExpValidator repeatDurationValidator = new RegExpValidator("[1-9][0-9]*[
]*(times|repetitions|seconds|s|minutes|m|hours|h|days|d|weeks|w|months|M|quarters|q|years|y)");
- repeatDurationItem.setValidators(repeatDurationValidator);
- repeatDurationItem.setValidateOnExit(true);
+ repeatDurationItem.setContextualHelp("keep running this operation this many
times or until this amount of time has elapsed");
final DateTimeItem endTimeItem = createDateTimeItem(FIELD_END_TIME);
endTimeItem.setShowTitle(false);
@@ -618,7 +626,7 @@ public class JobTriggerEditor extends LocatableVLayout {
}
private DynamicForm createLaterForm() {
- final DynamicForm laterForm = new DynamicForm();
+ final EnhancedDynamicForm laterForm = new
EnhancedDynamicForm(extendLocatorId("LaterForm"));
laterForm.setNumCols(4);
laterForm.setColWidths(140, 130, 130);
@@ -630,17 +638,19 @@ public class JobTriggerEditor extends LocatableVLayout {
final DateTimeItem startTimeItem = createDateTimeItem(FIELD_START_TIME);
- final TextItem startDelayItem = new TextItem(FIELD_START_DELAY);
+ TreeSet<TimeUnit> supportedUnits = new TreeSet<TimeUnit>();
+ supportedUnits.add(TimeUnit.SECONDS);
+ supportedUnits.add(TimeUnit.MINUTES);
+ supportedUnits.add(TimeUnit.HOURS);
+ supportedUnits.add(TimeUnit.DAYS);
+ supportedUnits.add(TimeUnit.WEEKS);
+ supportedUnits.add(TimeUnit.MONTHS);
+ supportedUnits.add(TimeUnit.YEARS);
+ final DurationItem startDelayItem = new DurationItem(FIELD_START_DELAY, null,
+ supportedUnits, false, isReadOnly(), laterForm);
startDelayItem.setShowTitle(false);
startDelayItem.setVisible(false);
-
- FormUtility.addContextualHelp(startDelayItem,
- "N UNITS (where N is a positive integer and UNITS is
\"seconds\", \"minutes\", \"hours\", \"days\",
\"weeks\", \"months\", \"quarters\", or \"years\",
e.g. \"30 seconds\" or \"6 weeks\")");
-
- // Configure validation.
- RegExpValidator startDelayValidator = new RegExpValidator("[1-9][0-9]*([
]+(seconds|minutes|hours|days|weeks|months|quarters|years)|(s|m|h|d|w|M|q|y))");
- startDelayItem.setValidators(startDelayValidator);
- startDelayItem.setValidateOnExit(true);
+ startDelayItem.setContextualHelp("start executing the operation after this
amount of time has elapsed");
SpacerItem spacerItem = new SpacerItem();
@@ -679,10 +689,9 @@ public class JobTriggerEditor extends LocatableVLayout {
public Date getStartTime() {
Date startTime;
if (this.isStartDelay) {
- // start delay - computer start time
- String startDelay = this.laterForm.getValueAsString(FIELD_START_DELAY);
- Duration startDelayDuration = parseDurationString(startDelay);
- long delay = startDelayDuration.count * startDelayDuration.multiplier;
+ // start delay - compute start time
+ DurationItem startDelayItem = (DurationItem)
this.laterForm.getItem(FIELD_START_DELAY);
+ long delay = startDelayItem.getValueAsLong();
long startTimestamp = System.currentTimeMillis() + delay;
startTime = new Date(startTimestamp);
} else {
@@ -696,9 +705,8 @@ public class JobTriggerEditor extends LocatableVLayout {
public Long getRepeatInterval() {
Long intervalMillis;
if (this.isRecurring) {
- String repeatInterval =
this.repeatForm.getValueAsString(FIELD_REPEAT_INTERVAL);
- Duration intervalDuration = parseDurationString(repeatInterval);
- intervalMillis = intervalDuration.count * intervalDuration.multiplier;
+ DurationItem repeatInterval = (DurationItem)
this.repeatForm.getItem(FIELD_REPEAT_INTERVAL);
+ intervalMillis = repeatInterval.getValueAsLong();
} else {
intervalMillis = null;
}
@@ -709,11 +717,10 @@ public class JobTriggerEditor extends LocatableVLayout {
Integer repetitions;
if (this.isRecurring) {
if (this.isRepeatDuration) {
- String repeatDurationString =
this.repeatForm.getValueAsString(FIELD_REPEAT_DURATION);
- Duration repeatDuration = parseDurationString(repeatDurationString);
- if (repeatDuration.multiplier == null) {
+ DurationItem repeatDurationItem = (DurationItem)
this.repeatForm.getItem(FIELD_REPEAT_DURATION);
+ if (repeatDurationItem.getUnitType() == UnitType.ITERATIONS) {
// n repetitions
- repetitions = repeatDuration.count;
+ repetitions = repeatDurationItem.getValueAsInteger();
} else {
// n units of time - compute end time
repetitions = null;
@@ -731,14 +738,13 @@ public class JobTriggerEditor extends LocatableVLayout {
Date endTime;
if (this.isRecurring) {
if (this.isRepeatDuration) {
- String repeatDurationString =
this.repeatForm.getValueAsString(FIELD_REPEAT_DURATION);
- Duration repeatDuration = parseDurationString(repeatDurationString);
- if (repeatDuration.multiplier == null) {
+ DurationItem repeatDurationItem = (DurationItem)
this.repeatForm.getItem(FIELD_REPEAT_DURATION);
+ if (repeatDurationItem.getUnitType() == UnitType.ITERATIONS) {
// n repetitions
endTime = null;
} else {
// n units of time - compute end time
- long delay = repeatDuration.count * repeatDuration.multiplier;
+ long delay = repeatDurationItem.getValueAsLong();
long endTimestamp = System.currentTimeMillis() + delay;
endTime = new Date(endTimestamp);
}
@@ -799,35 +805,6 @@ public class JobTriggerEditor extends LocatableVLayout {
return isValid;
}
- private static Duration parseDurationString(String durationString) {
- String countString = "";
- int index;
- for (index = 0; index < durationString.length(); index++) {
- char c = durationString.charAt(index);
- if (Character.isDigit(c)) {
- countString += c;
- } else {
- break;
- }
- }
- int count = Integer.valueOf(countString);
-
- // Skip optional whitespace.
- while (index < durationString.length()) {
- char c = durationString.charAt(index);
- if (c != ' ') {
- break;
- }
- index++;
- }
-
- String units = durationString.substring(index);
- Long multiplier = UNITS_TO_MILLIS_MULTIPLIER_MAP.get(units.toLowerCase());
-
- return new Duration(count, multiplier);
- }
-
-
private static DateTimeItem createDateTimeItem(String name) {
final DateTimeItem dateTimeItem = new DateTimeItem(name);
dateTimeItem.setEnforceDate(true);
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDetailsView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDetailsView.java
index 2801c7a..e044a9b 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDetailsView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDetailsView.java
@@ -268,7 +268,7 @@ public abstract class AbstractOperationScheduleDetailsView extends
AbstractRecor
form.setValue("jobTrigger", jobTriggerRecord);
DurationItem timeoutItem =
(DurationItem)this.notesForm.getItem(AbstractOperationScheduleDataSource.Field.TIMEOUT);
- form.setValue(AbstractOperationScheduleDataSource.Field.TIMEOUT,
timeoutItem.getValueAsInteger());
+ form.setValue(AbstractOperationScheduleDataSource.Field.TIMEOUT,
timeoutItem.getValueAsLong());
FormItem notesItem =
this.notesForm.getField(AbstractOperationScheduleDataSource.Field.DESCRIPTION);
form.setValue(AbstractOperationScheduleDataSource.Field.DESCRIPTION,
(String)notesItem.getValue());
@@ -327,7 +327,7 @@ public abstract class AbstractOperationScheduleDetailsView extends
AbstractRecor
}
private String getSelectedOperationName() {
- FormItem operationNameItem =
getForm().getField(ResourceOperationScheduleDataSource.Field.OPERATION_NAME);
+ FormItem operationNameItem =
getForm().getField(AbstractOperationScheduleDataSource.Field.OPERATION_NAME);
return (String)operationNameItem.getValue();
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/operation/schedule/GroupOperationScheduleDetailsView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/operation/schedule/GroupOperationScheduleDetailsView.java
index 23db066..11e802f 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/operation/schedule/GroupOperationScheduleDetailsView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/operation/schedule/GroupOperationScheduleDetailsView.java
@@ -8,6 +8,7 @@ import com.smartgwt.client.data.Record;
import com.smartgwt.client.widgets.HTMLFlow;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.fields.CheckboxItem;
+import com.smartgwt.client.widgets.form.fields.FormItem;
import com.smartgwt.client.widgets.form.fields.RadioGroupItem;
import com.smartgwt.client.widgets.form.fields.events.ChangedEvent;
import com.smartgwt.client.widgets.form.fields.events.ChangedHandler;
@@ -17,9 +18,11 @@ import com.smartgwt.client.widgets.layout.VLayout;
import org.rhq.core.domain.resource.ResourceCategory;
import org.rhq.core.domain.resource.group.composite.ResourceGroupComposite;
import org.rhq.enterprise.gui.coregui.client.ImageManager;
+import org.rhq.enterprise.gui.coregui.client.components.form.EnhancedDynamicForm;
import org.rhq.enterprise.gui.coregui.client.components.sorter.ReorderableList;
import
org.rhq.enterprise.gui.coregui.client.inventory.common.detail.operation.schedule.AbstractOperationScheduleDetailsView;
import org.rhq.enterprise.gui.coregui.client.inventory.resource.ResourceDatasource;
+import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.operation.schedule.ResourceOperationScheduleDataSource;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
import java.util.LinkedHashMap;
@@ -31,7 +34,7 @@ public class GroupOperationScheduleDetailsView extends
AbstractOperationSchedule
private ResourceGroupComposite groupComposite;
private ListGridRecord[] memberResourceRecords;
- private DynamicForm executionModeForm;
+ private EnhancedDynamicForm executionModeForm;
public GroupOperationScheduleDetailsView(String locatorId, ResourceGroupComposite
groupComposite, int scheduleId) {
super(locatorId, new GroupOperationScheduleDataSource(groupComposite),
@@ -65,6 +68,8 @@ public class GroupOperationScheduleDetailsView extends
AbstractOperationSchedule
GroupOperationScheduleDetailsView.super.init(isReadOnly);
}
});
+ } else {
+ super.init(isReadOnly);
}
}
@@ -75,7 +80,7 @@ public class GroupOperationScheduleDetailsView extends
AbstractOperationSchedule
HTMLFlow hr = new HTMLFlow("<p/><hr/><p/>");
contentPane.addMember(hr);
- this.executionModeForm = new DynamicForm();
+ this.executionModeForm = new
EnhancedDynamicForm(extendLocatorId("ExecutionModeForm"), isReadOnly());
this.executionModeForm.setNumCols(2);
this.executionModeForm.setColWidths("140", "*");
@@ -124,10 +129,23 @@ public class GroupOperationScheduleDetailsView extends
AbstractOperationSchedule
}
@Override
+ protected void editExistingRecord(Record record) {
+ // TODO: execution order
+
+ FormItem haltOnFailureItem =
this.executionModeForm.getField(GroupOperationScheduleDataSource.Field.HALT_ON_FAILURE);
+
haltOnFailureItem.setValue(getForm().getValue(GroupOperationScheduleDataSource.Field.HALT_ON_FAILURE));
+
+ super.editExistingRecord(record);
+ }
+
+ @Override
protected void save(DSRequest requestProperties) {
+ // TODO: execution order
+
Boolean haltOnFailure = (Boolean)
this.executionModeForm.getValue(GroupOperationScheduleDataSource.Field.HALT_ON_FAILURE);
getForm().setValue(GroupOperationScheduleDataSource.Field.HALT_ON_FAILURE,
haltOnFailure);
super.save(requestProperties);
}
+
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/TypeConversionUtility.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/TypeConversionUtility.java
index ac6d6ae..17e33ec 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/TypeConversionUtility.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/TypeConversionUtility.java
@@ -9,18 +9,33 @@ public class TypeConversionUtility {
}
public static Integer toInteger(Object object) {
- Integer integer;
+ Integer integerValue;
if (object instanceof String) {
- integer = Integer.valueOf((String)object);
+ integerValue = Integer.valueOf((String)object);
} else if (object instanceof Number) {
- integer = ((Number) object).intValue();
+ integerValue = ((Number) object).intValue();
} else if (object == null) {
- integer = null;
+ integerValue = null;
} else {
throw new IllegalArgumentException("Failed to convert " +
object.getClass().getName() + " [" + object
+ "] to an Integer.");
}
- return integer;
+ return integerValue;
+ }
+
+ public static Long toLong(Object object) {
+ Long longValue;
+ if (object instanceof String) {
+ longValue = Long.valueOf((String)object);
+ } else if (object instanceof Number) {
+ longValue = ((Number) object).longValue();
+ } else if (object == null) {
+ longValue = null;
+ } else {
+ throw new IllegalArgumentException("Failed to convert " +
object.getClass().getName() + " [" + object
+ + "] to a Long.");
+ }
+ return longValue;
}
}