KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > bluecubs > xinco > core > server > XincoCoreNodeServer


1 /**
2  *Copyright 2004 blueCubs.com
3  *
4  *Licensed under the Apache License, Version 2.0 (the "License");
5  *you may not use this file except in compliance with the License.
6  *You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *Unless required by applicable law or agreed to in writing, software
11  *distributed under the License is distributed on an "AS IS" BASIS,
12  *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *See the License for the specific language governing permissions and
14  *limitations under the License.
15  *
16  *************************************************************
17  * This project supports the blueCubs vision of giving back
18  * to the community in exchange for free software!
19  * More information on: http://www.bluecubs.org
20  *************************************************************
21  *
22  * Name: XincoCoreNodeServer
23  *
24  * Description: node object
25  *
26  * Original Author: Alexander Manes
27  * Date: 2004
28  *
29  * Modifications:
30  *
31  * Who? When? What?
32  * - - -
33  *
34  *************************************************************
35  */

36
37 package com.bluecubs.xinco.core.server;
38
39 import java.sql.*;
40 import java.util.Vector JavaDoc;
41
42 import com.bluecubs.xinco.core.*;
43 import com.bluecubs.xinco.index.*;
44
45 public class XincoCoreNodeServer extends XincoCoreNode {
46     
47     //create node object for data structures
48
public XincoCoreNodeServer(int attrID, XincoDBManager DBM) throws XincoException {
49
50         try {
51             
52             Statement stmt = DBM.con.createStatement();
53             ResultSet rs = stmt.executeQuery("SELECT * FROM xinco_core_node WHERE id=" + attrID);
54
55             //throw exception if no result found
56
int RowCount = 0;
57             while (rs.next()) {
58                 RowCount++;
59                 setId(rs.getInt("id"));
60                 setXinco_core_node_id(rs.getInt("xinco_core_node_id"));
61                 setXinco_core_language(new XincoCoreLanguageServer(rs.getInt("xinco_core_language_id"), DBM));
62                 setDesignation(rs.getString("designation"));
63                 setStatus_number(rs.getInt("status_number"));
64                 setXinco_core_nodes(new Vector JavaDoc());
65                 setXinco_core_data(new Vector JavaDoc());
66                 //load acl for this object
67
setXinco_core_acl(XincoCoreACEServer.getXincoCoreACL(rs.getInt("id"), "xinco_core_node_id", DBM));
68             }
69             if (RowCount < 1) {
70                 throw new XincoException();
71             }
72
73             stmt.close();
74             
75         } catch (Exception JavaDoc e) {
76             setXinco_core_language(null);
77             getXinco_core_acl().removeAllElements();
78             getXinco_core_nodes().removeAllElements();
79             getXinco_core_data().removeAllElements();
80             throw new XincoException();
81         }
82         
83     }
84     
85     //create node object for data structures
86
public XincoCoreNodeServer(int attrID, int attrCNID, int attrLID, String JavaDoc attrD, int attrSN, XincoDBManager DBM) throws XincoException {
87
88         try {
89             setId(attrID);
90             setXinco_core_node_id(attrCNID);
91             setXinco_core_language(new XincoCoreLanguageServer(attrLID, DBM));
92             setDesignation(attrD);
93             setStatus_number(attrSN);
94             setXinco_core_nodes(new Vector JavaDoc());
95             setXinco_core_data(new Vector JavaDoc());
96             //load acl for this object
97
setXinco_core_acl(XincoCoreACEServer.getXincoCoreACL(getId(), "xinco_core_node_id", DBM));
98         }
99         catch (Exception JavaDoc e) {
100             setXinco_core_language(null);
101             getXinco_core_acl().removeAllElements();
102             getXinco_core_nodes().removeAllElements();
103             getXinco_core_data().removeAllElements();
104             throw new XincoException();
105         }
106
107     }
108
109     //write to db
110
public int write2DB(XincoDBManager DBM) throws XincoException {
111
112         try {
113             
114             Statement stmt;
115             String JavaDoc xcnid = "";
116             
117             if (getId() > 0) {
118                 stmt = DBM.con.createStatement();
119                 //set values of nullable attributes
120
if (getXinco_core_node_id() == 0) {
121                     xcnid = "NULL";
122                 } else {
123                     xcnid = "" + getXinco_core_node_id();
124                 }
125                 stmt.executeUpdate("UPDATE xinco_core_node SET xinco_core_node_id=" + xcnid + ", xinco_core_language_id=" + getXinco_core_language().getId() + ", designation='" + getDesignation().replaceAll("'","\\\\'") + "', status_number=" + getStatus_number() + " WHERE id=" + getId());
126                 stmt.close();
127             } else {
128                 setId(DBM.getNewID("xinco_core_node"));
129
130                 stmt = DBM.con.createStatement();
131                 //set values of nullable attributes
132
if (getXinco_core_node_id() == 0) {
133                     xcnid = "NULL";
134                 } else {
135                     xcnid = "" + getXinco_core_node_id();
136                 }
137                 stmt.executeUpdate("INSERT INTO xinco_core_node VALUES (" + getId() + ", " + getXinco_core_node_id() + ", " + getXinco_core_language().getId() + ", '" + getDesignation().replaceAll("'","\\\\'") + "', " + getStatus_number() + ")");
138                 stmt.close();
139             }
140             
141             DBM.con.commit();
142         } catch (Exception JavaDoc e) {
143             try {
144                 DBM.con.rollback();
145             } catch (Exception JavaDoc erollback) {
146             }
147             throw new XincoException();
148         }
149         
150         return getId();
151         
152     }
153
154     //delete from db
155
public void deleteFromDB(boolean delete_this, XincoDBManager DBM) throws XincoException {
156
157         int i=0;
158         
159         try {
160             
161             Statement stmt;
162             
163             //fill nodes and data
164
fillXincoCoreNodes(DBM);
165             fillXincoCoreData(DBM);
166             //start recursive deletion
167
for (i=0;i<getXinco_core_nodes().size();i++) {
168                 ((XincoCoreNodeServer)getXinco_core_nodes().elementAt(i)).deleteFromDB(true, DBM);
169             }
170             for (i=0;i<getXinco_core_data().size();i++) {
171                 XincoIndexer.removeXincoCoreData((XincoCoreDataServer)getXinco_core_data().elementAt(i), DBM);
172                 ((XincoCoreDataServer)getXinco_core_data().elementAt(i)).deleteFromDB(DBM);
173             }
174             if (delete_this) {
175                 stmt = DBM.con.createStatement();
176                 stmt.executeUpdate("DELETE FROM xinco_core_ace WHERE xinco_core_node_id=" + getId());
177                 stmt.close();
178                 stmt = DBM.con.createStatement();
179                 stmt.executeUpdate("DELETE FROM xinco_core_node WHERE id=" + getId());
180                 stmt.close();
181             }
182             DBM.con.commit();
183         } catch (Exception JavaDoc e) {
184             try {
185                 DBM.con.rollback();
186             } catch (Exception JavaDoc erollback) {
187             }
188             throw new XincoException();
189         }
190         
191     }
192     
193     public void fillXincoCoreNodes(XincoDBManager DBM) {
194         
195         try {
196             
197             Statement stmt = DBM.con.createStatement();
198             ResultSet rs = stmt.executeQuery("SELECT * FROM xinco_core_node WHERE xinco_core_node_id = " + getId() + " ORDER BY designation");
199
200             while (rs.next()) {
201                 getXinco_core_nodes().addElement(new XincoCoreNodeServer(rs.getInt("id"), rs.getInt("xinco_core_node_id"), rs.getInt("xinco_core_language_id"), rs.getString("designation"), rs.getInt("status_number"), DBM));
202             }
203
204             stmt.close();
205             
206         } catch (Exception JavaDoc e) {
207             getXinco_core_nodes().removeAllElements();
208         }
209
210     }
211     
212     public void fillXincoCoreData(XincoDBManager DBM) {
213         
214         try {
215             
216             Statement stmt = DBM.con.createStatement();
217             ResultSet rs = stmt.executeQuery("SELECT * FROM xinco_core_data WHERE xinco_core_node_id = " + getId() + " ORDER BY designation");
218
219             while (rs.next()) {
220                 getXinco_core_data().addElement(new XincoCoreDataServer(rs.getInt("id"), rs.getInt("xinco_core_node_id"), rs.getInt("xinco_core_language_id"), rs.getInt("xinco_core_data_type_id"), rs.getString("designation"), rs.getInt("status_number"), DBM));
221             }
222
223             stmt.close();
224             
225         } catch (Exception JavaDoc e) {
226             getXinco_core_data().removeAllElements();
227         }
228
229     }
230     
231     public static Vector JavaDoc findXincoCoreNodes(String JavaDoc attrS, int attrLID, XincoDBManager DBM) {
232
233         Vector JavaDoc nodes = null;
234
235         try {
236             
237             Statement stmt = DBM.con.createStatement();
238             ResultSet rs = stmt.executeQuery("SELECT * FROM xinco_core_node WHERE xinco_core_language_id = " + attrLID + " AND designation LIKE '" + attrS + "%' ORDER BY designation, xinco_core_language_id");
239
240             int i = 0;
241             while (rs.next()) {
242                 nodes.addElement(new XincoCoreNodeServer(rs.getInt("id"), rs.getInt("xinco_core_node_id"), rs.getInt("xinco_core_language_id"), rs.getString("designation"), rs.getInt("status_number"), DBM));
243                 i++;
244                 if (i >= DBM.config.MaxSearchResult) {
245                     break;
246                 }
247             }
248
249             stmt.close();
250             
251         } catch (Exception JavaDoc e) {
252             nodes.removeAllElements();
253         }
254
255         return nodes;
256
257     }
258     
259     public static Vector JavaDoc getXincoCoreNodeParents(int attrID, XincoDBManager DBM) {
260
261         Vector JavaDoc nodes = new Vector JavaDoc();
262         int id;
263
264         try {
265             
266             id = attrID;
267             
268             Statement stmt;
269             ResultSet rs;
270             
271             while (id > 0) {
272                 stmt = DBM.con.createStatement();
273                 rs = stmt.executeQuery("SELECT * FROM xinco_core_node WHERE id = " + id);
274                 while (rs.next()) {
275                     nodes.addElement(new XincoCoreNodeServer(rs.getInt("id"), DBM));
276                     if (id > 1) {
277                         id = rs.getInt("xinco_core_node_id");
278                     } else {
279                         id = 0;
280                     }
281                 }
282                 stmt.close();
283             }
284             
285         } catch (Exception JavaDoc e) {
286             nodes.removeAllElements();
287         }
288
289         return nodes;
290         
291     }
292     
293 }
294
Popular Tags