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