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

Quick Search    Search Deep

Source code: org/objectstyle/cayenne/access/util/DataNodeCommitHelper.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  
57  package org.objectstyle.cayenne.access.util;
58  
59  import java.util.ArrayList;
60  import java.util.HashMap;
61  import java.util.Iterator;
62  import java.util.List;
63  import java.util.Map;
64  
65  import org.objectstyle.cayenne.access.DataNode;
66  import org.objectstyle.cayenne.map.ObjEntity;
67  import org.objectstyle.cayenne.query.Query;
68  
69  /**
70   * @author Andrei Adamchik
71   */
72  public class DataNodeCommitHelper {
73      public static final int INSERT = 1;
74      public static final int UPDATE = 2;
75      public static final int DELETE = 3;
76  
77      protected DataNode node;
78      protected List objEntitiesForInsert = new ArrayList();
79      protected List objEntitiesForDelete = new ArrayList();
80      protected List objEntitiesForUpdate = new ArrayList();
81      protected Map flattenedInsertQueries = new HashMap();
82      protected Map flattenedDeleteQueries = new HashMap();
83      protected List queries = new ArrayList();
84  
85      /**
86       * Finds an existing helper for DataNode, creates a new one if no matching
87       * helper is found.
88       */
89      public static DataNodeCommitHelper getHelperForNode(
90          List helpers,
91          DataNode node) {
92  
93          DataNodeCommitHelper helper = null;
94          Iterator it = helpers.iterator();
95          while (it.hasNext()) {
96              DataNodeCommitHelper itHelper = (DataNodeCommitHelper) it.next();
97              if (itHelper.getNode() == node) {
98                  helper = itHelper;
99                  break;
100             }
101         }
102 
103         if (helper == null) {
104             helper = new DataNodeCommitHelper(node);
105             helpers.add(helper);
106         }
107 
108         return helper;
109     }
110 
111     public DataNodeCommitHelper(DataNode node) {
112         this.node = node;
113     }
114     
115 
116     public void addToEntityList(ObjEntity ent, int listType) {
117         switch (listType) {
118             case 1 :
119                 objEntitiesForInsert.add(ent);
120                 break;
121             case 2 :
122                 objEntitiesForUpdate.add(ent);
123                 break;
124             case 3 :
125                 objEntitiesForDelete.add(ent);
126                 break;
127         }
128     }
129     
130     public void addToQueries(Query q) {
131       queries.add(q);
132     }
133 
134     /**
135      * Returns the node.
136      */
137     public DataNode getNode() {
138         return node;
139     }
140 
141     /**
142      * Returns the queries.
143      */
144     public List getQueries() {
145         return queries;
146     }
147     /**
148      * Returns the objEntitiesForDelete.
149      * @return List
150      */
151     public List getObjEntitiesForDelete() {
152         return objEntitiesForDelete;
153     }
154 
155     /**
156      * Returns the objEntitiesForInsert.
157      * @return List
158      */
159     public List getObjEntitiesForInsert() {
160         return objEntitiesForInsert;
161     }
162 
163     /**
164      * Returns the objEntitiesForUpdate.
165      * @return List
166      */
167     public List getObjEntitiesForUpdate() {
168         return objEntitiesForUpdate;
169     }
170     
171     public Map getFlattenedDeleteQueries() {
172         return flattenedDeleteQueries;
173     }
174 
175     public Map getFlattenedInsertQueries() {
176         return flattenedInsertQueries;
177     }
178 }