| 1 36 37 package com.bluecubs.xinco.core.server; 38 39 import java.sql.*; 40 import java.util.Vector ; 41 42 import com.bluecubs.xinco.core.*; 43 import com.bluecubs.xinco.index.*; 44 45 public class XincoCoreNodeServer extends XincoCoreNode { 46 47 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 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 ()); 65 setXinco_core_data(new Vector ()); 66 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 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 public XincoCoreNodeServer(int attrID, int attrCNID, int attrLID, String 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 ()); 95 setXinco_core_data(new Vector ()); 96 setXinco_core_acl(XincoCoreACEServer.getXincoCoreACL(getId(), "xinco_core_node_id", DBM)); 98 } 99 catch (Exception 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 public int write2DB(XincoDBManager DBM) throws XincoException { 111 112 try { 113 114 Statement stmt; 115 String xcnid = ""; 116 117 if (getId() > 0) { 118 stmt = DBM.con.createStatement(); 119 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 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 e) { 143 try { 144 DBM.con.rollback(); 145 } catch (Exception erollback) { 146 } 147 throw new XincoException(); 148 } 149 150 return getId(); 151 152 } 153 154 public void deleteFromDB(boolean delete_this, XincoDBManager DBM) throws XincoException { 156 157 int i=0; 158 159 try { 160 161 Statement stmt; 162 163 fillXincoCoreNodes(DBM); 165 fillXincoCoreData(DBM); 166 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 e) { 184 try { 185 DBM.con.rollback(); 186 } catch (Exception 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 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 e) { 226 getXinco_core_data().removeAllElements(); 227 } 228 229 } 230 231 public static Vector findXincoCoreNodes(String attrS, int attrLID, XincoDBManager DBM) { 232 233 Vector 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 e) { 252 nodes.removeAllElements(); 253 } 254 255 return nodes; 256 257 } 258 259 public static Vector getXincoCoreNodeParents(int attrID, XincoDBManager DBM) { 260 261 Vector nodes = new Vector (); 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 e) { 286 nodes.removeAllElements(); 287 } 288 289 return nodes; 290 291 } 292 293 } 294 | Popular Tags |