Source code: jmmv/progs/DiskCat/RegisterDisk.java
1 /*
2 * DiskCat - Disk Cataloguer
3 * Copyright (C) 2002 Julio Merino <slink@unixbsd.org>
4 *
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License as
7 * published by the Free Software Foundation; either version 2 of the
8 * License, or (at your option) any later version.
9
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * 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, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
18 * USA
19 */
20
21 package jmmv.progs.DiskCat;
22
23 import jmmv.Global;
24 import jmmv.db.Database;
25 import jmmv.db.InvalidDataException;
26 import jmmv.db.Register;
27
28 import java.sql.Date;
29 import java.sql.ResultSet;
30 import java.sql.SQLException;
31 import java.sql.Statement;
32
33 final class RegisterDisk extends Register {
34 public long mIDDisk;
35 public long mIDArchiver;
36 public String mType;
37 public String mContent;
38 public String mName;
39 public String mOrigin;
40 public Date mDate;
41 public String mNotes;
42
43 private final static int NAME_MAXLENGTH = 50;
44 private final static int TYPE_MAXLENGTH = 10;
45 private final static int CONTENT_MAXLENGTH = 20;
46 private final static int ORIGIN_MAXLENGTH = 30;
47
48 public void setNewValues() {
49 mIDDisk = 0;
50 mIDArchiver = 0;
51 mType = "CD";
52 mContent = "Various";
53 mName = "";
54 mOrigin = "";
55 mDate = null;
56 mNotes = "";
57 }
58
59 public long getIDDisk() { return mIDDisk; }
60 public long getIDArchiver() { return mIDArchiver; }
61 public String getType() { return mType; }
62 public String getContent() { return mContent; }
63 public String getName() { return mName; }
64 public String getOrigin() { return mOrigin; }
65 public Date getDate() { return mDate; }
66 public String getNotes() { return mNotes; }
67
68 public void setIDDisk(long l) {
69 mIDDisk = l;
70 }
71
72 public void setIDArchiver(long l) throws InvalidDataException, SQLException {
73 Statement st = Database.getInstance().getConnection().createStatement();
74 ResultSet rs = st.executeQuery("SELECT idarchiver FROM archivers WHERE idarchiver='" + l + "'");
75
76 rs.last();
77 if (rs.getRow() != 1)
78 throw new InvalidDataException(Global.getResources().getString("DISK_INVALIDDATA_IDARCH_MISSING"));
79
80 mIDArchiver = l;
81 }
82
83 public void setType(String s) throws InvalidDataException {
84 if (s.length() == 0 || s.length() > TYPE_MAXLENGTH)
85 throw new InvalidDataException(Global.getResources().getString("DISK_INVALIDDATA_TYPE"));
86 mType = s;
87 }
88
89 public void setContent(String s) throws InvalidDataException {
90 if (s.length() == 0 || s.length() > CONTENT_MAXLENGTH)
91 throw new InvalidDataException(Global.getResources().getString("DISK_INVALIDDATA_CONTENT"));
92 mContent = s;
93 }
94
95 public void setName(String s) throws InvalidDataException {
96 if (s.length() == 0 || s.length() > NAME_MAXLENGTH)
97 throw new InvalidDataException(Global.getResources().getString("DISK_INVALIDDATA_NAME"));
98 mName = s;
99 }
100
101 public void setOrigin(String s) { mOrigin = s; }
102 public void setDate(Date d) { mDate = d; }
103 public void setNotes(String s) { mNotes = s; }
104
105 public void parseResultSet(ResultSet rs) throws SQLException {
106 mIDDisk = rs.getLong("iddisk");
107 mIDArchiver = rs.getLong("idarchiver");
108 mType = rs.getString("type");
109 mContent = rs.getString("content");
110 mName = rs.getString("name");
111 mOrigin = rs.getString("origin");
112 mDate = rs.getDate("date");
113 mNotes = rs.getString("notes");
114 }
115
116 public final String whereSentence() {
117 String s;
118 s = "iddisk='" + mIDDisk + "' AND ";
119 s += "idarchiver='" + mIDArchiver + "' AND ";
120 s += "type='" + mType + "' AND ";
121 s += "content='" + mContent + "' AND ";
122 s += "name='" + mName + "' AND ";
123 s += "origin='" + mOrigin + "' AND ";
124 if (mDate != null) s += "date='" + mDate + "' AND ";
125 s += "notes='" + mNotes + "'";
126 return s;
127 }
128
129 public final void insert() throws InvalidDataException, SQLException {
130 // Check if there is already another register with the same ID
131 Statement st = Database.getInstance().getConnection().createStatement();
132 ResultSet rs = st.executeQuery("SELECT iddisk FROM disks WHERE iddisk='" + mIDDisk + "'");
133
134 rs.last();
135 if (rs.getRow() != 0)
136 throw new InvalidDataException(Global.getResources().getString("DISK_INVALIDDATA_IDDISK_EXISTS"));
137 st.close();
138
139 // Insert it
140 st = Database.getInstance().getConnection().createStatement();
141 if (mDate == null)
142 st.executeUpdate("INSERT INTO disks (iddisk,idarchiver,type,content,name,origin,notes)" +
143 " VALUES (" +
144 mIDDisk + ", " + mIDArchiver + ", '" + mType + "', '" + mContent + "', '" +
145 mName + "', '" + mOrigin + "', '" + mNotes + "')");
146 else
147 st.executeUpdate("INSERT INTO disks (iddisk,idarchiver,type,content,name,origin,date,notes)" +
148 " VALUES (" +
149 mIDDisk + ", " + mIDArchiver + ", '" + mType + "', '" + mContent + "', '" +
150 mName + "', '" + mOrigin + "', '" + mDate + "', '" + mNotes + "')");
151 st.close();
152 }
153
154 public final void delete() throws SQLException {
155 Statement st = Database.getInstance().getConnection().createStatement();
156 st.executeUpdate("DELETE FROM disks WHERE " + whereSentence());
157 st.close();
158 }
159
160 public final void update(Register old) throws SQLException {
161 Statement st = Database.getInstance().getConnection().createStatement();
162 if (mDate == null) {
163 st.executeUpdate("UPDATE disks SET " +
164 "iddisk='" + mIDDisk + "', idarchiver='" + mIDArchiver + "', type='" + mType +
165 "', content='" + mContent + "', name='" + mName + "', origin='" + mOrigin +
166 "', date=null, notes='" + mNotes + "' WHERE " + old.whereSentence());
167 } else {
168 st.executeUpdate("UPDATE disks SET " +
169 "iddisk='" + mIDDisk + "', idarchiver='" + mIDArchiver + "', type='" + mType +
170 "', content='" + mContent + "', name='" + mName + "', origin='" + mOrigin +
171 "', date='" + mDate + "', notes='" + mNotes +
172 "' WHERE " + old.whereSentence());
173 }
174 st.close();
175 }
176 }