ulrich
2020-05-26 07913e9b8a89cfa59984ace69fe39ed54b41606c
commit | author | age
c387eb 1 /*
U 2  *  BaseLink - Generic object relational mapping
3  *  Copyright (C) 2011  Ulrich Hilger, http://uhilger.de
4  *
5  *  This program is free software: you can redistribute it and/or modify
6  *  it under the terms of the GNU General Public License as published by
7  *  the Free Software Foundation, either version 3 of the License, or
8  *  (at your option) any later version.
9  *
10  *  This program is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *  GNU General Public License for more details.
14  *
15  *  You should have received a copy of the GNU General Public License
16  *  along with this program.  If not, see http://www.gnu.org/licenses/
17  */
18
19 package de.uhilger.baselink;
20
21 import java.sql.Connection;
22 import java.sql.PreparedStatement;
23 import java.sql.ResultSet;
24
25 /**
26  * Abstract base class for objects that like to implement the <code>Record</code> interface. 
27  * This class is meant as a convenience so that not all methods need to be implmented. Simply 
28  * implement those needed by overriding the necessary ones. 
29  * 
30  * @author Copyright (c) Ulrich Hilger, http://uhilger.de
31  * @author Published under the terms and conditions of
32  * the <a href="http://www.gnu.org/licenses/" target="_blank">GNU General Public License</a>
33  */
34 public abstract class BaseRecord implements Record {
35
36   /**
37      * Get a statement suitable to delete a given object from the database
38      * 
39      * <p>Override this method in subclasses as required</p>
40      * 
41      * @param c  the database connection to use for the delete 
42      * @param record  the object to delete
43      * @return  the delete statement
44      * @throws Exception
45      */
46     public PreparedStatement getDeleteStatment(Connection c, Object record) throws Exception {
47         throw new Exception("not implemented");
48     }
49
50     /**
51      * Get a statement suitable to insert a given object to the database
52      * 
53      * <p>Override this method in subclasses as required</p>
54      * 
55      * @param c  the database connection to use for the insert 
56      * @param record  the object to insert
57      * @return  the insert statement
58      * @throws Exception
59      */
60     public PreparedStatement getInsertStatment(Connection c, Object record) throws Exception {
61         throw new Exception("not implemented");
62     }
63
64   /**
65    * Get a statement suitable to insert a given object to the database
66    * @param c  the database connection to use for the insert 
67      * @param record  the object to insert
68    * @param autoGeneratedKeys  a flag indicating whether auto-generated keys should be returned; 
69    *          one of Statement.RETURN_GENERATED_KEYS or Statement.NO_GENERATED_KEYS
70      * @return  the insert statement
71      * @throws Exception
72      */
73     public PreparedStatement getInsertStmt(Connection c, Object record, int autoGeneratedKeys)
74             throws Exception {
75       throw new Exception("not implemented");
76     }
77       
78     /**
79      * Get the name of the database table this record references
80      * 
81      * <p>Override this method in subclasses as required</p>
82      * 
83      * @return  the table name
84      */
85     public String getTableName() {
86         return null;
87     }
88
89     /**
90      * Get a statement suitable to update a given object in the database
91      * 
92      * <p>Override this method in subclasses as required</p>
93      * 
94      * @param c  the database connection to use for the update 
95      * @param record  the object to update
96      * @return  the update statement
97      * @throws Exception
98      */
99     public PreparedStatement getUpdateStatment(Connection c, Object record) throws Exception {
100         throw new Exception("not implemented");
101     }
102
103     /**
104      * Get contents of this record as an object
105      * 
106      * <p>Override this method in subclasses as required</p>
107      * 
108      * @param resultSet  a resultSet that points to the record to get as an object
109      * @param includeBlobs  indicator whether or not to include BLOBs 
110      * @return  an object having the data of this record 
111      * @throws Exception
112      */
113     public Object toObject(ResultSet resultSet, boolean includeBlobs) throws Exception {
114         throw new Exception("not implemented");
115     }
116
117 }