Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: org/objectstyle/cayenne/PersistenceState.java


1   /* ====================================================================
2    * 
3    * The ObjectStyle Group Software License, Version 1.0 
4    *
5    * Copyright (c) 2002-2003 The ObjectStyle Group 
6    * and individual authors of the software.  All rights reserved.
7    *
8    * Redistribution and use in source and binary forms, with or without
9    * modification, are permitted provided that the following conditions
10   * are met:
11   *
12   * 1. Redistributions of source code must retain the above copyright
13   *    notice, this list of conditions and the following disclaimer. 
14   *
15   * 2. Redistributions in binary form must reproduce the above copyright
16   *    notice, this list of conditions and the following disclaimer in
17   *    the documentation and/or other materials provided with the
18   *    distribution.
19   *
20   * 3. The end-user documentation included with the redistribution, if
21   *    any, must include the following acknowlegement:  
22   *       "This product includes software developed by the 
23   *        ObjectStyle Group (http://objectstyle.org/)."
24   *    Alternately, this acknowlegement may appear in the software itself,
25   *    if and wherever such third-party acknowlegements normally appear.
26   *
27   * 4. The names "ObjectStyle Group" and "Cayenne" 
28   *    must not be used to endorse or promote products derived
29   *    from this software without prior written permission. For written 
30   *    permission, please contact andrus@objectstyle.org.
31   *
32   * 5. Products derived from this software may not be called "ObjectStyle"
33   *    nor may "ObjectStyle" appear in their names without prior written
34   *    permission of the ObjectStyle Group.
35   *
36   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
37   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
38   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
39   * DISCLAIMED.  IN NO EVENT SHALL THE OBJECTSTYLE GROUP OR
40   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
42   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
43   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
44   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
45   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
46   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
47   * SUCH DAMAGE.
48   * ====================================================================
49   *
50   * This software consists of voluntary contributions made by many
51   * individuals on behalf of the ObjectStyle Group.  For more
52   * information on the ObjectStyle Group, please see
53   * <http://objectstyle.org/>.
54   *
55   */ 
56  package org.objectstyle.cayenne;
57  
58  /** 
59   * Defines a set of persistence states for DataObjects. PersistenceState describes
60   * the state of data stored in a DataObject relative to the external persistence store. If an object's
61   * state matches the state of the persistence store, the object is COMMITTED. If object is not 
62   * intended to be persistent or is not explicitly made persistent, the state is TRANSIENT, and so on.
63   * 
64   * <p>DataObject persistence states should not be modified directly. Rather it is a responsibility
65   * of a DataContext to maintain correct state of the objects that it manages.
66   * 
67   * @author Andrei Adamchik 
68   */
69  public class PersistenceState {
70  
71      /** 
72       * Returns String label for persistence state. 
73       * Used for debugging. 
74       */
75      public static String persistenceStateName(int persistenceState) {
76          switch (persistenceState) {
77              case PersistenceState.TRANSIENT :
78                  return "transient";
79              case PersistenceState.NEW :
80                  return "new";
81              case PersistenceState.MODIFIED :
82                  return "modified";
83              case PersistenceState.COMMITTED :
84                  return "committed";
85              case PersistenceState.HOLLOW :
86                  return "hollow";
87              case PersistenceState.DELETED :
88                  return "deleted";
89              default :
90                  return "unknown";
91          }
92      }
93  
94      /** Describes a state of an object not registered with DataContext,
95       *  and therefore having no persistence features.
96       */
97      public static final int TRANSIENT = 1;
98      
99      /** Describes a state of an object freshly registered with DataContext,
100      *  but not committed to the database yet. So there is no corresponding
101      *  database record for this object just yet. */
102     public static final int NEW = 2;
103     
104     /** Describes a state of an object registered with DataContext,
105      *  whose fields exactly match the state of a corresponding database row.
106      *  This state is not fully "clean", since database record
107      *  may have been externally modified. */
108     public static final int COMMITTED = 3;
109     
110     
111     /** Describes a state of an object registered with DataContext,
112      *  and having a corresponding database row. This object state
113      *  is known to be locally modified and different from the database
114      *  state. */
115     public static final int MODIFIED = 4;
116     
117     /** Describes a state of an object registered with DataContext,
118      *  and having a corresponding database row. This object does not
119      *  store any fields except for its id (it is "hollow"), so next 
120      *  time it is accessed, it will be populated from the database 
121      *  by the context. In this respect this is a real "clean"
122      *  object. */
123     public static final int HOLLOW = 5;
124     
125     /** Describes a state of an object registered with DataContext,
126      *  that will be deleted from the database on the next commit. */
127     public static final int DELETED = 6;
128 }
129