KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > bluecubs > xinco > service > XincoSoapBindingImpl


1 /**
2  * XincoSoapBindingImpl.java
3  *
4  * This file was auto-generated from WSDL
5  * by the Apache Axis WSDL2Java emitter.
6  */

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

43
44 package com.bluecubs.xinco.service;
45
46 import java.io.*;
47 import java.util.zip.*;
48 import org.apache.axis.attachments.AttachmentPart;
49 import org.apache.axis.*;
50
51 import com.bluecubs.xinco.core.*;
52 import com.bluecubs.xinco.add.*;
53 import com.bluecubs.xinco.core.server.*;
54 import com.bluecubs.xinco.index.*;
55
56 public class XincoSoapBindingImpl implements com.bluecubs.xinco.service.Xinco{
57     
58     public com.bluecubs.xinco.core.XincoVersion getXincoServerVersion() throws java.rmi.RemoteException JavaDoc {
59         //return current version of server
60
XincoVersion version = new XincoVersion();
61         version.setVersion_high(1);
62         version.setVersion_mid(11);
63         version.setVersion_low(0);
64         version.setVersion_postfix("");
65         return version;
66     }
67
68     public com.bluecubs.xinco.core.XincoCoreUser getCurrentXincoCoreUser(java.lang.String JavaDoc in0, java.lang.String JavaDoc in1) throws java.rmi.RemoteException JavaDoc {
69         //login
70
try {
71             XincoDBManager dbm = new XincoDBManager();
72             XincoCoreUserServer user = new XincoCoreUserServer(in0, in1, dbm);
73             dbm.con.close();
74             return (XincoCoreUser)user;
75         } catch (Exception JavaDoc e) {
76             return null;
77         }
78     }
79
80     public java.util.Vector JavaDoc getAllXincoCoreGroups(com.bluecubs.xinco.core.XincoCoreUser in0) throws java.rmi.RemoteException JavaDoc {
81         try {
82             XincoDBManager dbm = new XincoDBManager();
83             //check if user exists
84
XincoCoreUserServer user = new XincoCoreUserServer(in0.getUsername(), in0.getUserpassword(), dbm);
85             java.util.Vector JavaDoc v = XincoCoreGroupServer.getXincoCoreGroups(dbm);
86             dbm.con.close();
87             return v;
88         } catch (Exception JavaDoc e) {
89             return null;
90         }
91     }
92
93     public java.util.Vector JavaDoc getAllXincoCoreLanguages(com.bluecubs.xinco.core.XincoCoreUser in0) throws java.rmi.RemoteException JavaDoc {
94         try {
95             XincoDBManager dbm = new XincoDBManager();
96             //check if user exists
97
XincoCoreUserServer user = new XincoCoreUserServer(in0.getUsername(), in0.getUserpassword(), dbm);
98             java.util.Vector JavaDoc v = XincoCoreLanguageServer.getXincoCoreLanguages(dbm);
99             dbm.con.close();
100             return v;
101         } catch (Exception JavaDoc e) {
102             return null;
103         }
104     }
105
106     public java.util.Vector JavaDoc getAllXincoCoreDataTypes(com.bluecubs.xinco.core.XincoCoreUser in0) throws java.rmi.RemoteException JavaDoc {
107         try {
108             XincoDBManager dbm = new XincoDBManager();
109             //check if user exists
110
XincoCoreUserServer user = new XincoCoreUserServer(in0.getUsername(), in0.getUserpassword(), dbm);
111             java.util.Vector JavaDoc v = XincoCoreDataTypeServer.getXincoCoreDataTypes(dbm);
112             dbm.con.close();
113             return v;
114         } catch (Exception JavaDoc e) {
115             return null;
116         }
117     }
118
119     public com.bluecubs.xinco.core.XincoCoreNode getXincoCoreNode(com.bluecubs.xinco.core.XincoCoreNode in0, com.bluecubs.xinco.core.XincoCoreUser in1) throws java.rmi.RemoteException JavaDoc {
120         try {
121             int i = 0;
122             XincoDBManager dbm = new XincoDBManager();
123             XincoCoreUserServer user = new XincoCoreUserServer(in1.getUsername(), in1.getUserpassword(), dbm);
124             XincoCoreNodeServer node = new XincoCoreNodeServer(in0.getId(), dbm);
125             XincoCoreACE ace = XincoCoreACEServer.checkAccess(user, node.getXinco_core_acl());
126             if (ace.isRead_permission()) {
127                 boolean show_children = false;
128                 // show content of TRASH to admins ONLY!
129
if (node.getId() == 2) {
130                     for (i=0;i<user.getXinco_core_groups().size();i++) {
131                         if (((XincoCoreGroup)user.getXinco_core_groups().elementAt(i)).getId() == 1) {
132                             show_children = true;
133                             break;
134                         }
135                     }
136                 } else {
137                     show_children = true;
138                 }
139                 if (show_children) {
140                     node.fillXincoCoreNodes(dbm);
141                     node.fillXincoCoreData(dbm);
142                 }
143                 dbm.con.close();
144                 return (XincoCoreNode)node;
145             } else {
146                 dbm.con.close();
147                 return null;
148             }
149         } catch (Exception JavaDoc e) {
150             return null;
151         }
152     }
153
154     public com.bluecubs.xinco.core.XincoCoreData getXincoCoreData(com.bluecubs.xinco.core.XincoCoreData in0, com.bluecubs.xinco.core.XincoCoreUser in1) throws java.rmi.RemoteException JavaDoc {
155         try {
156             XincoDBManager dbm = new XincoDBManager();
157             XincoCoreUserServer user = new XincoCoreUserServer(in1.getUsername(), in1.getUserpassword(), dbm);
158             XincoCoreDataServer data = new XincoCoreDataServer(in0.getId(), dbm);
159             XincoCoreACE ace = XincoCoreACEServer.checkAccess(user, data.getXinco_core_acl());
160             if (ace.isRead_permission()) {
161                 dbm.con.close();
162                 return (XincoCoreData)data;
163             } else {
164                 dbm.con.close();
165                 return null;
166             }
167         } catch (Exception JavaDoc e) {
168             return null;
169         }
170     }
171
172     public com.bluecubs.xinco.core.XincoCoreData doXincoCoreDataCheckout(com.bluecubs.xinco.core.XincoCoreData in0, com.bluecubs.xinco.core.XincoCoreUser in1) throws java.rmi.RemoteException JavaDoc {
173         /*
174         try {
175             XincoDBManager dbm = new XincoDBManager();
176             XincoCoreDataServer data;
177             XincoCoreACE ace;
178             XincoCoreUserServer user = new XincoCoreUserServer(in1.getUsername(), in1.getUserpassword(), dbm);
179             //get existing data
180             data = new XincoCoreDataServer(in0.getId(), dbm);
181             ace = XincoCoreACEServer.checkAccess(user, data.getXinco_core_acl());
182             //check status
183             if (data.getStatus_number() != 1) {
184                 dbm.con.close();
185                 return null;
186             }
187             if (ace.isWrite_permission()) {
188                 //update information
189                 data.setStatus_number(4);
190                 data.write2DB(dbm);
191                 dbm.con.close();
192                 return (XincoCoreData)data;
193             } else {
194                 dbm.con.close();
195                 return null;
196             }
197         } catch (Exception e) {
198             return null;
199         }
200         */

201         in0.setStatus_number(4);
202         return setXincoCoreData(in0, in1);
203     }
204
205     public com.bluecubs.xinco.core.XincoCoreData undoXincoCoreDataCheckout(com.bluecubs.xinco.core.XincoCoreData in0, com.bluecubs.xinco.core.XincoCoreUser in1) throws java.rmi.RemoteException JavaDoc {
206         /*
207         try {
208             XincoDBManager dbm = new XincoDBManager();
209             XincoCoreDataServer data;
210             XincoCoreACE ace;
211             XincoCoreUserServer user = new XincoCoreUserServer(in1.getUsername(), in1.getUserpassword(), dbm);
212             //get existing data
213             data = new XincoCoreDataServer(in0.getId(), dbm);
214             ace = XincoCoreACEServer.checkAccess(user, data.getXinco_core_acl());
215             //check status
216             if (data.getStatus_number() != 4) {
217                 dbm.con.close();
218                 return null;
219             }
220             if (ace.isWrite_permission()) {
221                 //update information
222                 data.setStatus_number(1);
223                 data.write2DB(dbm);
224                 dbm.con.close();
225                 return (XincoCoreData)data;
226             } else {
227                 dbm.con.close();
228                 return null;
229             }
230         } catch (Exception e) {
231             return null;
232         }
233         */

234         in0.setStatus_number(1);
235         return setXincoCoreData(in0, in1);
236     }
237
238     public com.bluecubs.xinco.core.XincoCoreData doXincoCoreDataCheckin(com.bluecubs.xinco.core.XincoCoreData in0, com.bluecubs.xinco.core.XincoCoreUser in1) throws java.rmi.RemoteException JavaDoc {
239         /*
240         try {
241             XincoDBManager dbm = new XincoDBManager();
242             XincoCoreDataServer data;
243             XincoCoreACE ace;
244             XincoCoreUserServer user = new XincoCoreUserServer(in1.getUsername(), in1.getUserpassword(), dbm);
245             //get existing data
246             data = new XincoCoreDataServer(in0.getId(), dbm);
247             ace = XincoCoreACEServer.checkAccess(user, data.getXinco_core_acl());
248             //check status
249             if (data.getStatus_number() != 4) {
250                 dbm.con.close();
251                 return null;
252             }
253             if (ace.isWrite_permission()) {
254                 //update information
255                 data.setStatus_number(1);
256                 data.write2DB(dbm);
257                 dbm.con.close();
258                 return (XincoCoreData)data;
259             } else {
260                 dbm.con.close();
261                 return null;
262             }
263             
264         } catch (Exception e) {
265             return null;
266         }
267         */

268         in0.setStatus_number(1);
269         return setXincoCoreData(in0, in1);
270     }
271
272     public byte[] downloadXincoCoreData(com.bluecubs.xinco.core.XincoCoreData in0, com.bluecubs.xinco.core.XincoCoreUser in1) throws java.rmi.RemoteException JavaDoc {
273         try {
274             XincoDBManager dbm = new XincoDBManager();
275             XincoCoreDataServer data;
276             XincoCoreACE ace;
277             byte[] byte_array = null;
278             String JavaDoc revision = "";
279             long total_len = 0;
280             boolean useSAAJ = false;
281             MessageContext mc = null;
282             Message m = null;
283             AttachmentPart ap = null;
284             InputStream in = null;
285             ByteArrayOutputStream out = null;
286             XincoCoreUserServer user = new XincoCoreUserServer(in1.getUsername(), in1.getUserpassword(), dbm);
287             //load data
288
data = new XincoCoreDataServer(in0.getId(), dbm);
289             ace = XincoCoreACEServer.checkAccess(user, data.getXinco_core_acl());
290             if (ace.isRead_permission()) {
291                 //determine requested revision if data with only one specific log object is requested
292
if ((data.getXinco_core_logs().size() > 1) && (in0.getXinco_core_logs().size() == 1)) {
293                     //find id of log
294
int LogId = 0;
295                     if ((((XincoCoreLog)in0.getXinco_core_logs().elementAt(0)).getOp_code() == 1) || (((XincoCoreLog)in0.getXinco_core_logs().elementAt(0)).getOp_code() == 5)) {
296                         LogId = ((XincoCoreLog)in0.getXinco_core_logs().elementAt(0)).getId();
297                     }
298                     if (LogId > 0) {
299                         revision = "-" + LogId;
300                     }
301                 }
302
303                 // decide whether to read from SOAP attachments or byte array
304
mc = MessageContext.getCurrentContext();
305                 m = mc.getRequestMessage();
306                 if (m.getAttachments().hasNext()) {
307                     useSAAJ = true;
308                 } else {
309                     useSAAJ = false;
310                 }
311                 in = new CheckedInputStream(new FileInputStream(dbm.config.FileRepositoryPath + data.getId() + revision), new CRC32());
312                 if (useSAAJ) {
313                     //attach file to SOAP message
314
m = mc.getResponseMessage();
315                     ap = new AttachmentPart();
316                     ap.setContent(in, "unknown/unknown");
317                     m.addAttachmentPart(ap);
318                 } else {
319                     out = new ByteArrayOutputStream();
320                     byte[] buf = new byte[4096];
321                     int len = 0;
322                     total_len = 0;
323                     while ((len = in.read(buf)) > 0) {
324                         out.write(buf, 0, len);
325                         total_len = total_len + len;
326                     }
327                     in.close();
328                     byte_array = out.toByteArray();
329                     out.close();
330                 }
331                 //in.close();
332
//check correctness of data
333
/*
334                 //if ((((XincoAddAttribute)data.getXinco_add_attributes().elementAt(1)).getAttrib_unsignedint() != total_len) || (((XincoAddAttribute)data.getXinco_add_attributes().elementAt(2)).getAttrib_varchar().compareTo("" + in.getChecksum().getValue()) == 0)) {
335                 if (((XincoAddAttribute)data.getXinco_add_attributes().elementAt(1)).getAttrib_unsignedint() != total_len) {
336                     in.close();
337                     out.close();
338                     dbm.con.close();
339                     return null;
340                 }
341                 */

342                 //in.close();
343
dbm.con.close();
344                 return byte_array;
345             } else {
346                 dbm.con.close();
347                 return null;
348             }
349         } catch (Exception JavaDoc e) {
350             return null;
351         }
352     }
353
354     public int uploadXincoCoreData(com.bluecubs.xinco.core.XincoCoreData in0, byte[] in1, com.bluecubs.xinco.core.XincoCoreUser in2) throws java.rmi.RemoteException JavaDoc {
355         try {
356             XincoDBManager dbm = new XincoDBManager();
357             XincoCoreDataServer data;
358             XincoCoreACE ace;
359             int i = 0;
360             int len = 0;
361             long total_len = 0;
362             boolean useSAAJ = false;
363             MessageContext mc = null;
364             Message m = null;
365             AttachmentPart ap = null;
366             InputStream in = null;
367             XincoCoreUserServer user = new XincoCoreUserServer(in2.getUsername(), in2.getUserpassword(), dbm);
368             //load data
369
data = new XincoCoreDataServer(in0.getId(), dbm);
370             ace = XincoCoreACEServer.checkAccess(user, data.getXinco_core_acl());
371             if (ace.isWrite_permission()) {
372                 
373                 // decide whether to read from SOAP attachments or byte array
374
mc = MessageContext.getCurrentContext();
375                 m = mc.getCurrentMessage();
376                 if (m.getAttachments().hasNext()) {
377                     useSAAJ = true;
378                 } else {
379                     useSAAJ = false;
380                 }
381                 if (useSAAJ) {
382                     ap = (AttachmentPart)m.getAttachments().next();
383                     in = (InputStream)ap.getContent();
384                 } else {
385                     in = new ByteArrayInputStream(in1);
386                 }
387                 CheckedOutputStream out = new CheckedOutputStream(new FileOutputStream(dbm.config.FileRepositoryPath + data.getId()), new CRC32());
388                 byte[] buf = new byte[4096];
389                 len = 0;
390                 total_len = 0;
391                 while ((len = in.read(buf)) > 0) {
392                     out.write(buf, 0, len);
393                     total_len = total_len + len;
394                 }
395                 in.close();
396                 //check correctness of data
397
/*
398                 //if ((((XincoAddAttribute)data.getXinco_add_attributes().elementAt(1)).getAttrib_unsignedint() != total_len) || (((XincoAddAttribute)data.getXinco_add_attributes().elementAt(2)).getAttrib_varchar().compareTo("" + out.getChecksum().getValue()) == 0)) {
399                 if (((XincoAddAttribute)data.getXinco_add_attributes().elementAt(1)).getAttrib_unsignedint() != total_len) {
400                     out.close();
401                     dbm.con.close();
402                     return 0;
403                 }
404                 */

405                 out.close();
406                 
407                 //dupicate file to preserve current revision
408
if (((XincoAddAttribute)data.getXinco_add_attributes().elementAt(3)).getAttrib_unsignedint() == 1) {
409                     //find id of latest log
410
int MaxLogId = 0;
411                     for (i=0;i<data.getXinco_core_logs().size();i++) {
412                         if ((((XincoCoreLog)data.getXinco_core_logs().elementAt(i)).getId() > MaxLogId) && ((((XincoCoreLog)data.getXinco_core_logs().elementAt(i)).getOp_code() == 1) || (((XincoCoreLog)data.getXinco_core_logs().elementAt(i)).getOp_code() == 5))) {
413                             MaxLogId = ((XincoCoreLog)data.getXinco_core_logs().elementAt(i)).getId();
414                         }
415                     }
416                     if (MaxLogId > 0) {
417                         //copy file
418
FileInputStream fcis = new FileInputStream(new File(dbm.config.FileRepositoryPath + data.getId()));
419                         FileOutputStream fcos = new FileOutputStream(new File(dbm.config.FileRepositoryPath + data.getId() + "-" + MaxLogId));
420                         byte[] fcbuf = new byte[4096];
421                         len = 0;
422                         while((len=fcis.read(fcbuf))!=-1) {
423                             fcos.write(fcbuf, 0, len);
424                          }
425                         fcis.close();
426                         fcos.close();
427                     }
428                 }
429
430                 //index data and file content
431
boolean index_success = false;
432                 //index_success = XincoIndexer.indexXincoCoreData(data, true, dbm);
433
try {
434                     XincoIndexThread xit = new XincoIndexThread(data, true, dbm);
435                     xit.start();
436                     index_success = true;
437                 } catch (Exception JavaDoc xite) {
438                     index_success = false;
439                 }
440
441                 //close connection if indexing thread failed
442
if (!index_success) {
443                     dbm.con.close();
444                 }
445                 return (int)total_len;
446             } else {
447                 dbm.con.close();
448                 return 0;
449             }
450         } catch (Exception JavaDoc e) {
451             return 0;
452         }
453     }
454
455     public java.util.Vector JavaDoc findXincoCoreNodes(java.lang.String JavaDoc in0, com.bluecubs.xinco.core.XincoCoreLanguage in1, com.bluecubs.xinco.core.XincoCoreUser in2) throws java.rmi.RemoteException JavaDoc {
456         /*
457         try {
458             XincoDBManager dbm = new XincoDBManager();
459             XincoCoreUserServer user = new XincoCoreUserServer(in2.getUsername(), in2.getUserpassword(), dbm);
460             java.util.Vector v = XincoCoreNodeServer.findXincoCoreNodes(in0, in1.getId(), dbm);
461             return v;
462             } catch (Exception e) {
463                 return null;
464         }
465         */

466         return null;
467     }
468
469     public java.util.Vector JavaDoc findXincoCoreData(java.lang.String JavaDoc in0, com.bluecubs.xinco.core.XincoCoreLanguage in1, com.bluecubs.xinco.core.XincoCoreUser in2) throws java.rmi.RemoteException JavaDoc {
470         XincoDBManager dbm;
471         boolean rp = false;
472         java.util.Vector JavaDoc v = new java.util.Vector JavaDoc();
473         java.util.Vector JavaDoc v2 = new java.util.Vector JavaDoc();
474         
475         //check size of keyword string
476
if (in0.length() < 1) {
477             return null;
478         }
479         
480         //truncate % from start and end of search query
481
if (in0.startsWith("%") && in0.endsWith("%")) {
482             in0 = in0.substring(1, in0.length()-1);
483         }
484         
485         try {
486             dbm = new XincoDBManager();
487             XincoCoreUserServer user = new XincoCoreUserServer(in2.getUsername(), in2.getUserpassword(), dbm);
488             //search on database
489
//java.util.Vector tv = XincoCoreDataServer.findXincoCoreData(in0, in1.getId(), true, true, dbm);
490
//search on index
491
java.util.Vector JavaDoc tv = XincoIndexer.findXincoCoreData(in0, in1.getId(), dbm);
492             java.util.Vector JavaDoc tv2 = new java.util.Vector JavaDoc();
493             //check immediate permissions
494
for (int i=0; i<tv.size();i++) {
495                 XincoCoreACE ace = XincoCoreACEServer.checkAccess(user, ((XincoCoreData)tv.elementAt(i)).getXinco_core_acl());
496                 if (ace.isRead_permission()) {
497                     tv2.add(tv.elementAt(i));
498                 }
499             }
500             //check permissions on parents
501
java.util.Vector JavaDoc tvp;
502             for (int i=0; i<tv2.size();i++) {
503                 tvp = XincoCoreNodeServer.getXincoCoreNodeParents(((XincoCoreData)tv2.elementAt(i)).getXinco_core_node_id(), dbm);
504                 rp = true;
505                 for (int j=0; j<tvp.size();j++) {
506                     XincoCoreACE ace = XincoCoreACEServer.checkAccess(user, ((XincoCoreNode)tvp.elementAt(j)).getXinco_core_acl());
507                     if (!ace.isRead_permission()) {
508                         rp = false;
509                         break;
510                     }
511                 }
512                 //for complete read permission, add Data + Parent Nodes to result!
513
if (rp) {
514                     v2 = new java.util.Vector JavaDoc();
515                     v2.add(tv2.elementAt(i));
516                     for (int j=tvp.size()-1; j>=0;j--) {
517                         v2.add(tvp.elementAt(j));
518                     }
519                     v.add(v2);
520                 }
521             }
522
523             dbm.con.close();
524         } catch (Exception JavaDoc e) {
525             return null;
526         }
527         return v;
528     }
529
530     public com.bluecubs.xinco.core.XincoCoreNode setXincoCoreNode(com.bluecubs.xinco.core.XincoCoreNode in0, com.bluecubs.xinco.core.XincoCoreUser in1) throws java.rmi.RemoteException JavaDoc {
531         try {
532             int i = 0;
533             boolean insertnewnode = false;
534             XincoDBManager dbm = new XincoDBManager();
535             XincoCoreNodeServer node;
536             XincoCoreNodeServer parent_node = new XincoCoreNodeServer(0, 0, 1, "", 1, dbm);
537             XincoCoreACE ace;
538             XincoCoreACE parent_ace = new XincoCoreACE();
539             parent_ace.setWrite_permission(true);
540             XincoCoreUserServer user = new XincoCoreUserServer(in1.getUsername(), in1.getUserpassword(), dbm);
541             if (in0.getId() <= 0) {
542                 //insert new node
543
insertnewnode = true;
544                 parent_node = new XincoCoreNodeServer(in0.getXinco_core_node_id(), dbm);
545                 ace = XincoCoreACEServer.checkAccess(user, parent_node.getXinco_core_acl());
546                 node = new XincoCoreNodeServer(0, 0, 1, "", 1, dbm);
547             } else {
548                 //update existing node
549
node = new XincoCoreNodeServer(in0.getId(), dbm);
550                 //moving node requires write permission to target node
551
if (in0.getXinco_core_node_id() != node.getXinco_core_node_id()) {
552                     parent_node = new XincoCoreNodeServer(in0.getXinco_core_node_id(), dbm);
553                     parent_ace = XincoCoreACEServer.checkAccess(user, parent_node.getXinco_core_acl());
554                 }
555                 ace = XincoCoreACEServer.checkAccess(user, node.getXinco_core_acl());
556             }
557             if ((ace.isWrite_permission()) && (parent_ace.isWrite_permission())) {
558                 //update information
559
node.setXinco_core_node_id(in0.getXinco_core_node_id());
560                 node.setDesignation(in0.getDesignation());
561                 node.setXinco_core_language(in0.getXinco_core_language());
562                 node.setStatus_number(in0.getStatus_number());
563                 node.write2DB(dbm);
564                 //insert default ACL when inserting new node
565
if (insertnewnode) {
566                     XincoCoreACEServer newace;
567                     //owner
568
newace = new XincoCoreACEServer(0, user.getId(), 0, node.getId(), 0, true, true, true, true);
569                     newace.write2DB(dbm);
570                     /*
571                     //admins
572                     newace = new XincoCoreACEServer(0, 0, 1, node.getId(), 0, true, true, true, true);
573                     newace.write2DB(dbm);
574                     //all users
575                     newace = new XincoCoreACEServer(0, 0, 2, node.getId(), 0, true, false, false, false);
576                     newace.write2DB(dbm);
577                     */

578                     //inherit all group ACEs
579
for (i=0;i<parent_node.getXinco_core_acl().size();i++) {
580                         newace = (XincoCoreACEServer)parent_node.getXinco_core_acl().elementAt(i);
581                         if (newace.getXinco_core_group_id() > 0){
582                             newace.setId(0);
583                             newace.setXinco_core_node_id(node.getId());
584                             newace.write2DB(dbm);
585                         }
586                     }
587                     //load new ACL
588
node.setXinco_core_acl(XincoCoreACEServer.getXincoCoreACL(node.getId(), "xinco_core_node_id", dbm));
589                 }
590                 dbm.con.close();
591                 return (XincoCoreNode)node;
592             } else {
593                 dbm.con.close();
594                 return null;
595             }
596         } catch (Exception JavaDoc e) {
597             return null;
598         }
599     }
600
601     public com.bluecubs.xinco.core.XincoCoreData setXincoCoreData(com.bluecubs.xinco.core.XincoCoreData in0, com.bluecubs.xinco.core.XincoCoreUser in1) throws java.rmi.RemoteException JavaDoc {
602         try {
603             int i = 0;
604             boolean insertnewdata = false;
605             XincoDBManager dbm = new XincoDBManager();
606             XincoCoreDataServer data;
607             XincoCoreNodeServer parent_node = new XincoCoreNodeServer(0, 0, 1, "", 1, dbm);;
608             XincoCoreACE ace;
609             XincoCoreACE parent_ace = new XincoCoreACE();
610             parent_ace.setWrite_permission(true);
611             XincoCoreUserServer user = new XincoCoreUserServer(in1.getUsername(), in1.getUserpassword(), dbm);
612             if (in0.getId() <= 0) {
613                 //insert new node
614
insertnewdata = true;
615                 parent_node = new XincoCoreNodeServer(in0.getXinco_core_node_id(), dbm);
616                 ace = XincoCoreACEServer.checkAccess(user, parent_node.getXinco_core_acl());
617                 data = new XincoCoreDataServer(0, 0, 1, 1, "", 1, dbm);
618             } else {
619                 //update existing data
620
data = new XincoCoreDataServer(in0.getId(), dbm);
621                 //moving node requires write permission to target node
622
if (in0.getXinco_core_node_id() != data.getXinco_core_node_id()) {
623                     parent_node = new XincoCoreNodeServer(in0.getXinco_core_node_id(), dbm);
624                     parent_ace = XincoCoreACEServer.checkAccess(user, parent_node.getXinco_core_acl());
625                 }
626                 ace = XincoCoreACEServer.checkAccess(user, data.getXinco_core_acl());
627             }
628             if ((ace.isWrite_permission()) && (parent_ace.isWrite_permission())) {
629                 //update information
630
data.setXinco_core_node_id(in0.getXinco_core_node_id());
631                 data.setDesignation(in0.getDesignation());
632                 data.setXinco_core_language(in0.getXinco_core_language());
633                 data.setXinco_core_data_type(in0.getXinco_core_data_type());
634                 data.setXinco_add_attributes(in0.getXinco_add_attributes());
635                 data.setStatus_number(in0.getStatus_number());
636                 data.write2DB(dbm);
637                 
638                 //index data (not on checkout, only when status = open = 1)
639
if (data.getStatus_number() == 1) {
640                     boolean index_success = XincoIndexer.indexXincoCoreData(data, false, dbm);
641                 }
642                 
643                 //insert default ACL when inserting new node
644
if (insertnewdata) {
645                     XincoCoreACEServer newace;
646                     //owner
647
newace = new XincoCoreACEServer(0, user.getId(), 0, 0, data.getId(), true, true, true, true);
648                     newace.write2DB(dbm);
649                     /*
650                     //admins
651                     newace = new XincoCoreACEServer(0, 0, 1, 0, data.getId(), true, true, true, true);
652                     newace.write2DB(dbm);
653                     //all users
654                     newace = new XincoCoreACEServer(0, 0, 2, 0, data.getId(), true, true, true, true);
655                     newace.write2DB(dbm);
656                     */

657                     //inherit all group ACEs
658
for (i=0;i<parent_node.getXinco_core_acl().size();i++) {
659                         newace = (XincoCoreACEServer)parent_node.getXinco_core_acl().elementAt(i);
660                         if (newace.getXinco_core_group_id() > 0){
661                             newace.setId(0);
662                             newace.setXinco_core_node_id(0);
663                             newace.setXinco_core_data_id(data.getId());
664                             newace.write2DB(dbm);
665                         }
666                     }
667                     //load new ACL
668
data.setXinco_core_acl(XincoCoreACEServer.getXincoCoreACL(data.getId(), "xinco_core_data_id", dbm));
669                 }
670                 dbm.con.close();
671                 return (XincoCoreData)data;
672             } else {
673                 dbm.con.close();
674                 return null;
675             }
676         } catch (Exception JavaDoc e) {
677             return null;
678         }
679     }
680
681     public com.bluecubs.xinco.core.XincoCoreACE setXincoCoreACE(com.bluecubs.xinco.core.XincoCoreACE in0, com.bluecubs.xinco.core.XincoCoreUser in1) throws java.rmi.RemoteException JavaDoc {
682         try {
683             XincoDBManager dbm = new XincoDBManager();
684             XincoCoreNodeServer node;
685             XincoCoreDataServer data;
686             XincoCoreACE ace = new XincoCoreACE();
687             XincoCoreACEServer newace;
688             XincoCoreUserServer user = new XincoCoreUserServer(in1.getUsername(), in1.getUserpassword(), dbm);
689             if (in0.getXinco_core_node_id() > 0) {
690                 node = new XincoCoreNodeServer(in0.getXinco_core_node_id(), dbm);
691                 ace = XincoCoreACEServer.checkAccess(user, node.getXinco_core_acl());
692             }
693             if (in0.getXinco_core_data_id() > 0) {
694                 data = new XincoCoreDataServer(in0.getXinco_core_data_id(), dbm);
695                 ace = XincoCoreACEServer.checkAccess(user, data.getXinco_core_acl());
696             }
697             if (ace.isAdmin_permission()) {
698                 //load ACE or create new one
699
if (in0.getId() > 0) {
700                     newace = new XincoCoreACEServer(in0.getId(), dbm);
701                 } else {
702                     newace = new XincoCoreACEServer(0, 0, 0, 0, 0, false, false, false, false);
703                 }
704                 //update ACE
705
newace.setXinco_core_node_id(in0.getXinco_core_node_id());
706                 newace.setXinco_core_data_id(in0.getXinco_core_data_id());
707                 newace.setXinco_core_user_id(in0.getXinco_core_user_id());
708                 newace.setXinco_core_group_id(in0.getXinco_core_group_id());
709                 newace.setRead_permission(in0.isRead_permission());
710                 newace.setWrite_permission(in0.isWrite_permission());
711                 newace.setExecute_permission(in0.isExecute_permission());
712                 newace.setAdmin_permission(in0.isAdmin_permission());
713                 newace.write2DB(dbm);
714                 dbm.con.close();
715                 return (XincoCoreACE)newace;
716             } else {
717                 dbm.con.close();
718                 return null;
719             }
720         } catch (Exception JavaDoc e) {
721             return null;
722         }
723     }
724
725     public boolean removeXincoCoreACE(com.bluecubs.xinco.core.XincoCoreACE in0, com.bluecubs.xinco.core.XincoCoreUser in1) throws java.rmi.RemoteException JavaDoc {
726         try {
727             XincoDBManager dbm = new XincoDBManager();
728             XincoCoreNodeServer node;
729             XincoCoreDataServer data;
730             XincoCoreACE ace = new XincoCoreACE();
731             XincoCoreUserServer user = new XincoCoreUserServer(in1.getUsername(), in1.getUserpassword(), dbm);
732             if (in0.getXinco_core_node_id() > 0) {
733                 node = new XincoCoreNodeServer(in0.getXinco_core_node_id(), dbm);
734                 ace = XincoCoreACEServer.checkAccess(user, node.getXinco_core_acl());
735             }
736             if (in0.getXinco_core_data_id() > 0) {
737                 data = new XincoCoreDataServer(in0.getXinco_core_data_id(), dbm);
738                 ace = XincoCoreACEServer.checkAccess(user, data.getXinco_core_acl());
739             }
740             if (ace.isAdmin_permission()) {
741                 XincoCoreACEServer.removeFromDB(in0, dbm);
742                 dbm.con.close();
743                 return true;
744             } else {
745                 dbm.con.close();
746                 return false;
747             }
748         } catch (Exception JavaDoc e) {
749             return false;
750         }
751     }
752
753     public com.bluecubs.xinco.core.XincoCoreLog setXincoCoreLog(com.bluecubs.xinco.core.XincoCoreLog in0, com.bluecubs.xinco.core.XincoCoreUser in1) throws java.rmi.RemoteException JavaDoc {
754         try {
755             XincoDBManager dbm = new XincoDBManager();
756             XincoCoreLogServer log;
757             XincoCoreUserServer user = new XincoCoreUserServer(in1.getUsername(), in1.getUserpassword(), dbm);
758             //load log or create new one
759
if (in0.getId() > 0) {
760                 log = new XincoCoreLogServer(in0.getId(), dbm);
761             } else {
762                 log = new XincoCoreLogServer(0, 0, 0, 0, null, "", 0, 0, 0, "");
763             }
764             //update log
765
log.setXinco_core_data_id(in0.getXinco_core_data_id());
766             log.setXinco_core_user_id(in0.getXinco_core_user_id());
767             log.setOp_code(in0.getOp_code());
768             log.setOp_description(in0.getOp_description());
769             log.setOp_datetime(in0.getOp_datetime());
770             log.setVersion(in0.getVersion());
771             log.write2DB(dbm);
772             dbm.con.close();
773             return (XincoCoreLog)log;
774         } catch (Exception JavaDoc e) {
775             return null;
776         }
777     }
778
779     public com.bluecubs.xinco.core.XincoCoreUser setXincoCoreUser(com.bluecubs.xinco.core.XincoCoreUser in0, com.bluecubs.xinco.core.XincoCoreUser in1) throws java.rmi.RemoteException JavaDoc {
780         try {
781             XincoDBManager dbm = new XincoDBManager();
782             XincoCoreUserServer user = new XincoCoreUserServer(in1.getUsername(), in1.getUserpassword(), dbm);
783             //update user
784
user.setUsername(in0.getUsername());
785             user.setUserpassword(in0.getUserpassword());
786             user.setFirstname(in0.getFirstname());
787             user.setName(in0.getName());
788             user.setEmail(in0.getEmail());
789             user.write2DB(dbm);
790             dbm.con.close();
791             return (XincoCoreUser)user;
792         } catch (Exception JavaDoc e) {
793             return null;
794         }
795     }
796
797     public com.bluecubs.xinco.core.XincoCoreGroup setXincoCoreGroup(com.bluecubs.xinco.core.XincoCoreGroup in0, com.bluecubs.xinco.core.XincoCoreUser in1) throws java.rmi.RemoteException JavaDoc {
798         //not to be implemented yet: advanced administration feature!
799
return null;
800     }
801
802     public com.bluecubs.xinco.core.XincoCoreLanguage setXincoCoreLanguage(com.bluecubs.xinco.core.XincoCoreLanguage in0, com.bluecubs.xinco.core.XincoCoreUser in1) throws java.rmi.RemoteException JavaDoc {
803         //not to be implemented yet: advanced administration feature!
804
return null;
805     }
806
807     public com.bluecubs.xinco.core.XincoCoreDataTypeAttribute getXincoCoreDataTypeAttribute(com.bluecubs.xinco.core.XincoCoreDataTypeAttribute in0, com.bluecubs.xinco.core.XincoCoreUser in1) throws java.rmi.RemoteException JavaDoc {
808         //dummy: not to be implemented!
809
return null;
810     }
811
812     public com.bluecubs.xinco.add.XincoAddAttribute getXincoAddAttribute(com.bluecubs.xinco.add.XincoAddAttribute in0, com.bluecubs.xinco.core.XincoCoreUser in1) throws java.rmi.RemoteException JavaDoc {
813         //dummy: not to be implemented!
814
return null;
815     }
816
817 }
818
Popular Tags