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

Quick Search    Search Deep

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 }