001: /**********************************************************************
002: Copyright (c) 2004 Erik Bengtson and others. All rights reserved.
003: Licensed under the Apache License, Version 2.0 (the "License");
004: you may not use this file except in compliance with the License.
005: You may obtain a copy of the License at
006:
007: http://www.apache.org/licenses/LICENSE-2.0
008:
009: Unless required by applicable law or agreed to in writing, software
010: distributed under the License is distributed on an "AS IS" BASIS,
011: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012: See the License for the specific language governing permissions and
013: limitations under the License.
014:
015: Contributors:
016: 2007 Andy Jefferson - added deleting state
017: ...
018: **********************************************************************/package org.jpox.state;
019:
020: /**
021: * Definition of the activity states of a StateManager.
022: * Each activity is mutually exclusive so, for example, a StateManager cannot be inserting
023: * and then start deleting (without finishing the insert process first).
024: *
025: * @since 1.1
026: * @version $Revision: 1.5 $
027: */
028: public class ActivityState {
029: /** No current activity. **/
030: public static final ActivityState NONE = new ActivityState(0);
031:
032: /** Inserting the object. **/
033: public static final ActivityState INSERTING = new ActivityState(1);
034:
035: /** Running callbacks after the insert of the object. **/
036: public static final ActivityState INSERTING_CALLBACKS = new ActivityState(
037: 2);
038:
039: /** Deleting the object. **/
040: public static final ActivityState DELETING = new ActivityState(3);
041:
042: /** The type id */
043: private final int typeId;
044:
045: /**
046: * Constructor.
047: * @param i type id
048: */
049: private ActivityState(int i) {
050: this .typeId = i;
051: }
052:
053: /**
054: * Indicates whether some other object is "equal to" this one.
055: * @param o the reference object with which to compare.
056: * @return true if this object is the same as the obj argument; false otherwise.
057: */
058: public boolean equals(Object o) {
059: if (o instanceof ActivityState) {
060: return ((ActivityState) o).typeId == typeId;
061: }
062: return false;
063: }
064:
065: /**
066: * Returns a string representation of the object.
067: * @return a string representation of the object.
068: */
069: public String toString() {
070: switch (typeId) {
071: case 0:
072: return "none";
073: case 1:
074: return "inserting";
075: case 2:
076: return "inserting-callback";
077: case 3:
078: return "deleting";
079: }
080: return "";
081: }
082:
083: /**
084: * Accessor for the type.
085: * @return Type
086: **/
087: public int getType() {
088: return typeId;
089: }
090:
091: /**
092: * Obtain the ActivityState for the given name by <code>value</code>
093: * @param value the search name
094: * @return the ActivityState for the value or ActivityState.NONE if not found
095: */
096: public static ActivityState getActivityState(final String value) {
097: if (value == null) {
098: return ActivityState.NONE;
099: } else if (ActivityState.NONE.toString().equals(value)) {
100: return ActivityState.NONE;
101: } else if (ActivityState.INSERTING.toString().equals(value)) {
102: return ActivityState.INSERTING;
103: } else if (ActivityState.INSERTING_CALLBACKS.toString().equals(
104: value)) {
105: return ActivityState.INSERTING_CALLBACKS;
106: } else if (ActivityState.DELETING.toString().equals(value)) {
107: return ActivityState.DELETING;
108: }
109: return ActivityState.NONE;
110: }
111: }
|