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

Quick Search    Search Deep

Source code: org/objectstyle/cayenne/dba/PkGenerator.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.dba;
58  
59  import java.util.List;
60  
61  import org.objectstyle.cayenne.access.DataNode;
62  import org.objectstyle.cayenne.map.DbEntity;
63  
64  /**
65   * Defines methods to support automatic primary key generation.
66   *
67   * @author Andrei Adamchik
68   */
69  public interface PkGenerator {
70  
71      /**
72       * Generates necessary database objects to provide automatic primary
73       * key support.
74       *
75       * @param node node that provides access to a DataSource.
76       * @param dbEntities a list of entities that require primary key autogeneration support
77       */
78      public void createAutoPk(DataNode node, List dbEntities) throws Exception;
79  
80      /**
81       * Returns a list of SQL strings needed to generates
82       * database objects to provide automatic primary support
83       * for the list of entities. No actual database operations
84       * are performed.
85       */
86      public List createAutoPkStatements(List dbEntities);
87  
88  
89      /**
90       * Drops any common database objects associated with automatic primary
91       * key generation process. This may be lookup tables, special stored
92       * procedures or sequences.
93       *
94       * @param node node that provides access to a DataSource.
95       * @param dbEntities a list of entities whose primary key autogeneration support
96       * should be dropped.
97       */
98      public void dropAutoPk(DataNode node, List dbEntities) throws Exception;
99  
100 
101     /**
102      * Returns SQL string needed to drop database objects associated
103      * with automatic primary key generation. No actual database
104      * operations are performed.
105      */
106     public List dropAutoPkStatements(List dbEntities);
107 
108 
109 
110     /**
111      * Generates new (unique and non-repeating) primary key for specified
112      * DbEntity.
113      *
114      *  @param ent DbEntity for which automatic PK is generated.
115      */
116     public Object generatePkForDbEntity(DataNode dataNode, DbEntity ent)
117         throws Exception;
118 
119 
120     /**
121      * Returns SQL string that can generate new (unique and non-repeating)
122      * primary key for specified DbEntity. No actual database operations
123      * are performed.
124      */
125     public String generatePkForDbEntityString(DbEntity ent);
126 
127     public void reset();
128 
129 }