1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.juddi.datastore.jdbc;
17
18 import java.sql.Connection;
19 import java.sql.SQLException;
20 import java.util.Vector;
21
22 import org.apache.commons.logging.Log;
23 import org.apache.commons.logging.LogFactory;
24 import org.apache.juddi.datastore.DataStore;
25 import org.apache.juddi.datatype.Address;
26 import org.apache.juddi.datatype.CategoryBag;
27 import org.apache.juddi.datatype.DiscoveryURLs;
28 import org.apache.juddi.datatype.IdentifierBag;
29 import org.apache.juddi.datatype.KeyedReference;
30 import org.apache.juddi.datatype.OverviewDoc;
31 import org.apache.juddi.datatype.SharedRelationships;
32 import org.apache.juddi.datatype.TModelBag;
33 import org.apache.juddi.datatype.assertion.PublisherAssertion;
34 import org.apache.juddi.datatype.binding.BindingTemplate;
35 import org.apache.juddi.datatype.binding.BindingTemplates;
36 import org.apache.juddi.datatype.binding.InstanceDetails;
37 import org.apache.juddi.datatype.binding.TModelInstanceDetails;
38 import org.apache.juddi.datatype.binding.TModelInstanceInfo;
39 import org.apache.juddi.datatype.business.BusinessEntity;
40 import org.apache.juddi.datatype.business.Contact;
41 import org.apache.juddi.datatype.business.Contacts;
42 import org.apache.juddi.datatype.publisher.Publisher;
43 import org.apache.juddi.datatype.request.FindQualifiers;
44 import org.apache.juddi.datatype.response.AssertionStatusItem;
45 import org.apache.juddi.datatype.response.BusinessInfo;
46 import org.apache.juddi.datatype.response.CompletionStatus;
47 import org.apache.juddi.datatype.response.PublisherInfo;
48 import org.apache.juddi.datatype.response.RelatedBusinessInfo;
49 import org.apache.juddi.datatype.response.ServiceInfo;
50 import org.apache.juddi.datatype.response.ServiceInfos;
51 import org.apache.juddi.datatype.response.TModelInfo;
52 import org.apache.juddi.datatype.service.BusinessService;
53 import org.apache.juddi.datatype.service.BusinessServices;
54 import org.apache.juddi.datatype.tmodel.TModel;
55 import org.apache.juddi.error.RegistryException;
56 import org.apache.juddi.error.UnknownUserException;
57 import org.apache.juddi.util.Config;
58 import org.apache.juddi.util.jdbc.ConnectionManager;
59 import org.apache.juddi.util.jdbc.Transaction;
60 import org.apache.juddi.uuidgen.UUIDGen;
61 import org.apache.juddi.uuidgen.UUIDGenFactory;
62
63 /***
64 * @author Steve Viens (sviens@apache.org)
65 * @author Anil Saldhana (anil@apache.org)
66 */
67 public class JDBCDataStore implements DataStore
68 {
69
70 private static Log log = LogFactory.getLog(JDBCDataStore.class);
71
72
73 private Connection connection = null;
74
75
76 private Transaction transaction = null;
77
78 /***
79 * Create a new JDBCDataStore and aquire a JDBC
80 * connection from the connection pool.
81 */
82 public JDBCDataStore()
83 {
84 try {
85 this.connection = ConnectionManager.acquireConnection();
86 }
87 catch(SQLException sqlex) {
88 log.error("Exception occured while attempting to " +
89 "aquire a JDBC connection: "+sqlex.getMessage(),sqlex);
90 }
91 }
92
93 /***
94 * Release all JDBC connections used by this
95 * JDBCDataStore back into the connection pool.
96 */
97 public void release()
98 {
99 try {
100 if (connection != null)
101 {
102 this.connection.close();
103 this.connection = null;
104 }
105 }
106 catch(SQLException sqlex) {
107 log.error("Exception occured while attempting to " +
108 "close a JDBC connection: "+sqlex.getMessage());
109 }
110 }
111
112 /***
113 *
114 */
115 public Connection getConnection()
116 {
117 return this.connection;
118 }
119
120 /***
121 * begin a new transaction
122 */
123 public void beginTrans()
124 throws org.apache.juddi.error.RegistryException
125 {
126 try {
127 this.transaction = new Transaction();
128 this.transaction.begin(connection);
129 }
130 catch(SQLException sqlex) {
131 throw new RegistryException(sqlex);
132 }
133 }
134
135 /***
136 * commit on all connections.
137 */
138 public void commit()
139 throws org.apache.juddi.error.RegistryException
140 {
141 try {
142 this.transaction.commit();
143 }
144 catch(SQLException sqlex) {
145 throw new RegistryException(sqlex);
146 }
147 }
148
149 /***
150 * rollback on all connections.
151 */
152 public void rollback()
153 throws org.apache.juddi.error.RegistryException
154 {
155 try {
156 this.transaction.rollback();
157 }
158 catch(SQLException sqlex) {
159 throw new RegistryException(sqlex);
160 }
161 }
162
163 /***
164 * verify that the individual or system identified by
165 * the 'publisherID' is a valid jUDDI user (aka publisher).
166 *
167 * @param publisherID
168 * @return publisher
169 * @throws RegistryException
170 */
171 public Publisher getPublisher(String publisherID)
172 throws RegistryException
173 {
174
175 if (publisherID == null)
176 return null;
177
178 Publisher publisher = null;
179
180 try {
181 publisher = PublisherTable.select(publisherID,connection);
182 }
183 catch(java.sql.SQLException sqlex) {
184 throw new RegistryException(sqlex);
185 }
186
187 return publisher;
188 }
189
190 /***
191 * Will return true if the publisherID parameter specified has been tagged
192 * with registry administrator priviledges otherwise returns false. An
193 * Unknown user exception is thrown if the publisherID specified is null,
194 * blank or does not exist (can't be found in the PUBLISHER table).
195 *
196 * @param publisherID
197 * @return Returns true if publisherID parameter specified has jUDDI
198 * administrator priv's otherwise returns false.
199 * @throws RegistryException
200 */
201 public boolean isAdministrator(String publisherID)
202 throws org.apache.juddi.error.RegistryException
203 {
204 if ((publisherID == null) || (publisherID.length() == 0))
205 throw new UnknownUserException("publisherID = "+publisherID);
206
207 try
208 {
209 Publisher publisher = PublisherTable.select(publisherID,connection);
210 if (publisher == null)
211 throw new UnknownUserException("publisherID = "+publisherID);
212 else
213 return publisher.isAdmin();
214 }
215 catch(java.sql.SQLException sqlex)
216 {
217 log.error(sqlex.getMessage());
218 throw new RegistryException(sqlex);
219 }
220 }
221
222 /***
223 * Will return true if the publisherID parameter specified is
224 * currently enabled otherwise returns false. An UnknownUserException
225 * is thrown if the publisherID specified is null, blank or does not
226 * exist (can't be found in the PUBLISHER table).
227 *
228 * @param publisherID
229 * @return Returns true if publisherID parameter specified has jUDDI
230 * administrator priv's otherwise returns false.
231 * @throws RegistryException
232 */
233 public boolean isEnabled(String publisherID)
234 throws org.apache.juddi.error.RegistryException
235 {
236 if ((publisherID == null) || (publisherID.length() == 0))
237 throw new UnknownUserException("publisherID = "+publisherID);
238
239 try
240 {
241 Publisher publisher = PublisherTable.select(publisherID,connection);
242 if (publisher == null)
243 throw new UnknownUserException("publisherID = "+publisherID);
244 else
245 return publisher.isEnabled();
246 }
247 catch(java.sql.SQLException sqlex)
248 {
249 log.error(sqlex.getMessage());
250 throw new RegistryException(sqlex);
251 }
252 }
253
254 /***
255 *
256 * @param publisher
257 * @return String
258 * @throws RegistryException
259 */
260 public String generateToken(Publisher publisher)
261 throws RegistryException
262 {
263 UUIDGen uuidgen = UUIDGenFactory.getUUIDGen();
264
265 String token = "authToken:"+uuidgen.uuidgen();
266
267 log.info("Generated token '"+token+"' for user: '" +
268 publisher.getPublisherID()+"/"+publisher.getName()+"'");
269
270 return token;
271 }
272
273 /***
274 *
275 */
276 public void storeAuthToken(String token,Publisher publisher)
277 throws org.apache.juddi.error.RegistryException
278 {
279 if ((token != null) && (publisher != null))
280 {
281 try {
282 AuthTokenTable.insert(token,publisher,connection);
283 }
284 catch(java.sql.SQLException sqlex) {
285 throw new RegistryException(sqlex);
286 }
287 }
288 }
289
290 /***
291 *
292 */
293 public void retireAuthToken(String token)
294 throws org.apache.juddi.error.RegistryException
295 {
296 if (token != null)
297 {
298 try {
299 AuthTokenTable.invalidate(token,connection);
300 AuthTokenTable.touch(token,connection);
301 }
302 catch(java.sql.SQLException sqlex) {
303 throw new RegistryException(sqlex);
304 }
305 }
306 }
307
308 /***
309 *
310 */
311 public Publisher getAuthTokenPublisher(String token)
312 throws org.apache.juddi.error.RegistryException
313 {
314 Publisher publisher = null;
315
316 if (token != null)
317 {
318 try {
319 publisher = AuthTokenTable.selectPublisher(token,connection);
320 }
321 catch(java.sql.SQLException sqlex) {
322 throw new RegistryException(sqlex);
323 }
324 }
325
326 return publisher;
327 }
328
329 /***
330 *
331 */
332 public boolean isAuthTokenExpired(String token)
333 throws org.apache.juddi.error.RegistryException
334 {
335 boolean expired = false;
336
337 if (token != null)
338 {
339 try
340 {
341 long tokenState = AuthTokenTable.selectTokenState(token, connection);
342 if (tokenState <= 0) {
343 return expired = true;
344 }
345
346 long lastUsed = AuthTokenTable.selectLastUsed(token,connection);
347 if (lastUsed > 0)
348 {
349 long timeOut = Config.getLongProperty("juddi.authTokenTimeout",3600) * 1000L;
350 long currTime = System.currentTimeMillis();
351 if ((currTime-lastUsed) >= timeOut)
352 expired = true;
353 }
354 }
355 catch(java.sql.SQLException sqlex) {
356 throw new RegistryException(sqlex);
357 }
358 }
359
360 return expired;
361 }
362
363 /***
364 *
365 */
366 public void touchAuthToken(String token)
367 throws org.apache.juddi.error.RegistryException
368 {
369 if (token != null)
370 {
371 try {
372 AuthTokenTable.touch(token,connection);
373 }
374 catch(java.sql.SQLException sqlex) {
375 throw new RegistryException(sqlex);
376 }
377 }
378 }
379
380 /***
381 *
382 */
383 public void saveBusiness(BusinessEntity business,String publisherID)
384 throws org.apache.juddi.error.RegistryException
385 {
386 try
387 {
388 if ((business != null) && (connection != null))
389 {
390 String businessKey = business.getBusinessKey();
391
392
393 BusinessEntityTable.insert(business,publisherID,connection);
394
395
396 if (business.getNameVector() != null)
397 BusinessNameTable.insert(businessKey,business.getNameVector(),connection);
398
399
400 if (business.getDescriptionVector() != null)
401 BusinessDescTable.insert(businessKey,business.getDescriptionVector(),connection);
402
403
404 IdentifierBag idBag = business.getIdentifierBag();
405 if ((idBag != null) && (idBag.getKeyedReferenceVector() != null))
406 BusinessIdentifierTable.insert(businessKey,idBag.getKeyedReferenceVector(),connection);
407
408
409 CategoryBag catBag = business.getCategoryBag();
410 if ((catBag != null) && (catBag.getKeyedReferenceVector() != null))
411 BusinessCategoryTable.insert(businessKey,catBag.getKeyedReferenceVector(),connection);
412
413
414 DiscoveryURLs discURLs = business.getDiscoveryURLs();
415 if ((discURLs != null) && (discURLs.getDiscoveryURLVector() != null))
416 DiscoveryURLTable.insert(businessKey,discURLs.getDiscoveryURLVector(),connection);
417
418
419 Contacts contacts = business.getContacts();
420 if (contacts != null)
421 {
422 Vector contactVector = contacts.getContactVector();
423 if ((contactVector != null) && (contactVector.size() > 0))
424 {
425
426 ContactTable.insert(businessKey,contacts.getContactVector(),connection);
427
428
429 int listSize = contactVector.size();
430 for (int contactID=0; contactID<listSize; contactID++)
431 {
432 Contact contact = (Contact)contactVector.elementAt(contactID);
433 ContactDescTable.insert(businessKey,contactID,contact.getDescriptionVector(),connection);
434 EmailTable.insert(businessKey,contactID,contact.getEmailVector(),connection);
435 PhoneTable.insert(businessKey,contactID,contact.getPhoneVector(),connection);
436
437
438 Vector addrList = contact.getAddressVector();
439 if ((addrList != null) && (addrList.size() > 0))
440 {
441 AddressTable.insert(businessKey,contactID,addrList,connection);
442 for (int addrID=0; addrID<addrList.size(); addrID++)
443 {
444 Address address = (Address)addrList.elementAt(addrID);
445 AddressLineTable.insert(businessKey,contactID,addrID,address.getAddressLineVector(),connection);
446 }
447 }
448 }
449 }
450 }
451
452
453 BusinessServices services = business.getBusinessServices();
454 if ((services != null) && (services.getBusinessServiceVector() != null))
455 {
456 UUIDGen uuidgen = UUIDGenFactory.getUUIDGen();
457 Vector serviceVector = services.getBusinessServiceVector();
458 int serviceListSize = serviceVector.size();
459 for (int j=0; j<serviceListSize; j++)
460 {
461 BusinessService service = (BusinessService)serviceVector.elementAt(j);
462 service.setBusinessKey(businessKey);
463
464
465 String serviceKey = service.getServiceKey();
466 if ((serviceKey == null) || (serviceKey.length() == 0)) {
467 service.setServiceKey(uuidgen.uuidgen());
468 }
469
470 saveService(service);
471 }
472 }
473 }
474 }
475 catch(java.sql.SQLException sqlex)
476 {
477 throw new RegistryException(sqlex);
478 }
479 }
480
481 /***
482 *
483 */
484 public BusinessEntity fetchBusiness(String businessKey)
485 throws org.apache.juddi.error.RegistryException
486 {
487 BusinessEntity business = null;
488
489 try
490 {
491 if ((businessKey != null) && (connection != null))
492 {
493 business = BusinessEntityTable.select(businessKey,connection);
494 business.setNameVector(BusinessNameTable.select(businessKey,connection));
495 business.setDescriptionVector(BusinessDescTable.select(businessKey,connection));
496
497 Vector idVector = BusinessIdentifierTable.select(businessKey,connection);
498 if (idVector.size() > 0)
499 {
500 IdentifierBag identifierBag = new IdentifierBag();
501 identifierBag.setKeyedReferenceVector(idVector);
502 business.setIdentifierBag(identifierBag);
503 }
504
505 Vector catVector = BusinessCategoryTable.select(businessKey,connection);
506 if (catVector.size() > 0)
507 {
508 CategoryBag categoryBag = new CategoryBag();
509 categoryBag.setKeyedReferenceVector(catVector);
510 business.setCategoryBag(categoryBag);
511 }
512
513 DiscoveryURLs discoveryURLs = new DiscoveryURLs();
514 discoveryURLs.setDiscoveryURLVector(DiscoveryURLTable.select(businessKey,connection));
515 business.setDiscoveryURLs(discoveryURLs);
516
517
518 Vector contactList = ContactTable.select(businessKey,connection);
519 for (int contactID=0; contactID<contactList.size(); contactID++)
520 {
521 Contact contact = (Contact)contactList.elementAt(contactID);
522 contact.setPhoneVector(PhoneTable.select(businessKey,contactID,connection));
523 contact.setEmailVector(EmailTable.select(businessKey,contactID,connection));
524
525 Vector addressList = AddressTable.select(businessKey,contactID,connection);
526 for (int addressID=0; addressID<addressList.size(); addressID++)
527 {
528 Address address = (Address)addressList.elementAt(addressID);
529 address.setAddressLineVector(AddressLineTable.select(businessKey,contactID,addressID,connection));
530 }
531 contact.setAddressVector(addressList);
532 }
533
534 Contacts contacts = new Contacts();
535 contacts.setContactVector(contactList);
536 business.setContacts(contacts);
537
538
539 Vector serviceVector = fetchServiceByBusinessKey(businessKey);
540 BusinessServices services = new BusinessServices();
541 services.setBusinessServiceVector(serviceVector);
542 business.setBusinessServices(services);
543 }
544 }
545 catch(java.sql.SQLException sqlex)
546 {
547 throw new RegistryException(sqlex);
548 }
549
550 return business;
551 }
552
553 /***
554 *
555 */
556 public void deleteBusiness(String businessKey)
557 throws org.apache.juddi.error.RegistryException
558 {
559 try
560 {
561 if ((businessKey != null) && (connection != null))
562 {
563
564 deleteServiceByBusinessKey(businessKey);
565
566
567 AddressLineTable.delete(businessKey,connection);
568 AddressTable.delete(businessKey,connection);
569 EmailTable.delete(businessKey,connection);
570 PhoneTable.delete(businessKey,connection);
571 ContactDescTable.delete(businessKey,connection);
572 ContactTable.delete(businessKey,connection);
573 DiscoveryURLTable.delete(businessKey,connection);
574 BusinessIdentifierTable.delete(businessKey,connection);
575 BusinessCategoryTable.delete(businessKey,connection);
576 BusinessDescTable.delete(businessKey,connection);
577 BusinessNameTable.delete(businessKey,connection);
578
579
580 BusinessEntityTable.delete(businessKey,connection);
581 }
582 }
583 catch(java.sql.SQLException sqlex)
584 {
585 log.error(sqlex.getMessage(),sqlex);
586 throw new RegistryException(sqlex);
587 }
588 }
589
590 /***
591 *
592 */
593 public boolean isBusinessPublisher(String businessKey,String publisherID)
594 throws org.apache.juddi.error.RegistryException
595 {
596 try
597 {
598 if ((publisherID != null) && (businessKey != null) && (connection != null))
599 return BusinessEntityTable.verifyOwnership(businessKey,publisherID,connection);
600 }
601 catch(java.sql.SQLException sqlex)
602 {
603 throw new RegistryException(sqlex);
604 }
605
606
607 return false;
608 }
609
610 /***
611 *
612 */
613 public boolean isValidBusinessKey(String businessKey)
614 throws org.apache.juddi.error.RegistryException
615 {
616 try
617 {
618 if ((businessKey != null) && (connection != null) &&
619 (BusinessEntityTable.select(businessKey,connection) != null))
620 return true;
621 }
622 catch(java.sql.SQLException sqlex)
623 {
624 throw new RegistryException(sqlex);
625 }
626
627
628 return false;
629 }
630
631 /***
632 *
633 */
634 public void saveService(BusinessService service)
635 throws org.apache.juddi.error.RegistryException
636 {
637 try
638 {
639 if ((service != null) && (connection != null))
640 {
641 String serviceKey = service.getServiceKey();
642
643
644 BusinessServiceTable.insert(service,connection);
645
646
647 if (service.getNameVector() != null)
648 ServiceNameTable.insert(serviceKey,service.getNameVector(),connection);
649
650
651 if (service.getDescriptionVector() != null)
652 ServiceDescTable.insert(serviceKey,service.getDescriptionVector(),connection);
653
654
655 CategoryBag catBag = service.getCategoryBag();
656 if ((catBag != null) && (catBag.getKeyedReferenceVector() != null))
657 ServiceCategoryTable.insert(serviceKey,catBag.getKeyedReferenceVector(),connection);
658
659
660 BindingTemplates bindings = service.getBindingTemplates();
661 if (bindings == null)
662 return;
663
664
665 Vector bindingList = bindings.getBindingTemplateVector();
666 if (bindingList == null)
667 return;
668
669
670 UUIDGen uuidgen = UUIDGenFactory.getUUIDGen();
671
672
673 int listSize = bindingList.size();
674 for (int i=0; i<listSize; i++)
675 {
676 BindingTemplate binding = (BindingTemplate)bindingList.elementAt(i);
677 binding.setServiceKey(serviceKey);
678
679
680 String bindingKey = binding.getBindingKey();
681 if ((bindingKey == null) || (bindingKey.length() == 0)) {
682 binding.setBindingKey(uuidgen.uuidgen());
683 }
684
685 saveBinding(binding);
686 }
687 }
688 }
689 catch(java.sql.SQLException sqlex)
690 {
691 throw new RegistryException(sqlex);
692 }
693 }
694
695 /***
696 *
697 */
698 public BusinessService fetchService(String serviceKey)
699 throws org.apache.juddi.error.RegistryException
700 {
701 BusinessService service = null;
702
703 try
704 {
705 if ((serviceKey != null) && (connection != null))
706 {
707 service = BusinessServiceTable.select(serviceKey,connection);
708 service.setNameVector(ServiceNameTable.select(serviceKey,connection));
709 service.setDescriptionVector(ServiceDescTable.select(serviceKey,connection));
710
711 Vector catVector = ServiceCategoryTable.select(serviceKey,connection);
712 if (catVector.size() > 0)
713 {
714 CategoryBag bag = new CategoryBag();
715 bag.setKeyedReferenceVector(catVector);
716 service.setCategoryBag(bag);
717 }
718
719
720 Vector bindingVector = fetchBindingByServiceKey(serviceKey);
721 BindingTemplates bindings = new BindingTemplates();
722 bindings.setBindingTemplateVector(bindingVector);
723 service.setBindingTemplates(bindings);
724 }
725 }
726 catch(java.sql.SQLException sqlex)
727 {
728 throw new RegistryException(sqlex);
729 }
730
731 return service;
732 }
733
734 /***
735 *
736 */
737 public void deleteService(String serviceKey)
738 throws org.apache.juddi.error.RegistryException
739 {
740 try
741 {
742 if ((serviceKey != null) && (connection != null))
743 {
744
745 deleteBindingByServiceKey(serviceKey);
746
747
748 ServiceNameTable.delete(serviceKey,connection);
749 ServiceDescTable.delete(serviceKey,connection);
750 ServiceCategoryTable.delete(serviceKey,connection);
751
752
753 BusinessServiceTable.delete(serviceKey,connection);
754 }
755 }
756 catch(java.sql.SQLException sqlex)
757 {
758 throw new RegistryException(sqlex);
759 }
760 }
761
762 /***
763 *
764 */
765 private Vector fetchServiceByBusinessKey(String businessKey)
766 throws org.apache.juddi.error.RegistryException
767 {
768 Vector serviceList = new Vector();
769
770 try
771 {
772 if ((businessKey != null) && (connection != null))
773 {
774 Vector tempList = BusinessServiceTable.selectByBusinessKey(businessKey,connection);
775 for (int i=0; i<tempList.size(); i++)
776 {
777 BusinessService service = (BusinessService)tempList.elementAt(i);
778 serviceList.add(fetchService(service.getServiceKey()));
779 }
780 }
781 }
782 catch(java.sql.SQLException sqlex)
783 {
784 throw new RegistryException(sqlex);
785 }
786
787 return serviceList;
788 }
789
790 /***
791 *
792 */
793 private void deleteServiceByBusinessKey(String businessKey)
794 throws org.apache.juddi.error.RegistryException
795 {
796 try
797 {
798 if ((businessKey != null) && (connection != null))
799 {
800
801 Vector services = BusinessServiceTable.selectByBusinessKey(businessKey,connection);
802
803
804 int listSize = services.size();
805 for (int i=0; i<listSize; i++)
806 {
807 BusinessService service = (BusinessService)services.elementAt(i);
808 deleteService(service.getServiceKey());
809 }
810 }
811 }
812 catch(java.sql.SQLException sqlex)
813 {
814 throw new RegistryException(sqlex);
815 }
816
817 }
818
819 /***
820 *
821 */
822 public boolean isValidServiceKey(String serviceKey)
823 throws org.apache.juddi.error.RegistryException
824 {
825 try
826 {
827 if ((serviceKey != null) && (connection != null) &&
828 (BusinessServiceTable.select(serviceKey,connection) != null))
829 return true;
830 }
831 catch(java.sql.SQLException sqlex)
832 {
833 throw new RegistryException(sqlex);
834 }
835
836
837 return false;
838 }
839
840 /***
841 *
842 */
843 public boolean isServicePublisher(String serviceKey,String publisherID)
844 throws org.apache.juddi.error.RegistryException
845 {
846 try
847 {
848 if ((publisherID != null) && (serviceKey != null) && (connection != null))
849 return BusinessServiceTable.verifyOwnership(serviceKey,publisherID,connection);
850 }
851 catch(java.sql.SQLException sqlex)
852 {
853 throw new RegistryException(sqlex);
854 }
855
856
857 return false;
858 }
859
860 /***
861 *
862 */
863 public void saveBinding(BindingTemplate binding)
864 throws org.apache.juddi.error.RegistryException
865 {
866 try
867 {
868 if ((binding != null) && (connection != null))
869 {
870 String bindingKey = binding.getBindingKey();
871
872
873 BindingTemplateTable.insert(binding,connection);
874
875
876 CategoryBag catBag = binding.getCategoryBag();
877 if ((catBag != null) && (catBag.getKeyedReferenceVector() != null))
878 BindingCategoryTable.insert(bindingKey,catBag.getKeyedReferenceVector(),connection);
879
880
881 if (binding.getDescriptionVector() != null)
882 BindingDescTable.insert(bindingKey,binding.getDescriptionVector(),connection);
883
884 TModelInstanceDetails details = binding.getTModelInstanceDetails();
885 if (details == null)
886 return;
887
888 Vector detailsVector = details.getTModelInstanceInfoVector();
889 if (detailsVector == null)
890 return;
891
892 TModelInstanceInfoTable.insert(bindingKey,detailsVector,connection);
893
894
895 Vector infoList = details.getTModelInstanceInfoVector();
896
897 int listSize = infoList.size();
898 for (int infoID=0; infoID<listSize; infoID++)
899 {
900 TModelInstanceInfo info = (TModelInstanceInfo)infoList.elementAt(infoID);
901 TModelInstanceInfoDescTable.insert(binding.getBindingKey(),infoID,info.getDescriptionVector(),connection);
902
903 InstanceDetails instDetails = info.getInstanceDetails();
904 if (instDetails != null)
905 {
906 InstanceDetailsDescTable.insert(binding.getBindingKey(),infoID,instDetails.getDescriptionVector(),connection);
907
908 OverviewDoc overDoc = instDetails.getOverviewDoc();
909 if (overDoc != null)
910 InstanceDetailsDocDescTable.insert(binding.getBindingKey(),infoID,overDoc.getDescriptionVector(),connection);
911 }
912 }
913 }
914 }
915 catch(java.sql.SQLException sqlex)
916 {
917 throw new RegistryException(sqlex);
918 }
919 }
920
921 /***
922 *
923 */
924 public BindingTemplate fetchBinding(String bindingKey)
925 throws org.apache.juddi.error.RegistryException
926 {
927 BindingTemplate binding = null;
928
929 try
930 {
931 if ((bindingKey != null) && (connection != null))
932 {
933
934 binding = BindingTemplateTable.select(bindingKey,connection);
935 binding.setDescriptionVector(BindingDescTable.select(bindingKey,connection));
936
937
938 CategoryBag bag = new CategoryBag();
939 bag.setKeyedReferenceVector(BindingCategoryTable.select(bindingKey,connection));
940 binding.setCategoryBag(bag);
941
942
943 Vector infoVector = TModelInstanceInfoTable.select(bindingKey,connection);
944 if (infoVector != null)
945 {
946 int vectorSize = infoVector.size();
947 for (int infoID=0; infoID<vectorSize; infoID++)
948 {
949 TModelInstanceInfo info = (TModelInstanceInfo)infoVector.elementAt(infoID);
950
951
952 info.setDescriptionVector(TModelInstanceInfoDescTable.select(bindingKey,infoID,connection));
953
954 InstanceDetails instDetails = info.getInstanceDetails();
955 if (instDetails != null)
956 {
957
958 instDetails.setDescriptionVector(InstanceDetailsDescTable.select(bindingKey,infoID,connection));
959
960
961 OverviewDoc overDoc = instDetails.getOverviewDoc();
962 if (overDoc != null)
963 {
964 overDoc.setDescriptionVector(InstanceDetailsDocDescTable.select(bindingKey,infoID,connection));
965 instDetails.setOverviewDoc(overDoc);
966 }
967 }
968 }
969
970 TModelInstanceDetails details = new TModelInstanceDetails();
971 details.setTModelInstanceInfoVector(infoVector);
972 binding.setTModelInstanceDetails(details);
973 }
974 }
975 }
976 catch(java.sql.SQLException sqlex)
977 {
978 throw new RegistryException(sqlex);
979 }
980
981 return binding;
982 }
983
984 /***
985 *
986 */
987 public void deleteBinding(String bindingKey)
988 throws org.apache.juddi.error.RegistryException
989 {
990 try
991 {
992 if ((bindingKey != null) && (connection != null))
993 {
994
995 BindingDescTable.delete(bindingKey,connection);
996 BindingCategoryTable.delete(bindingKey,connection);
997 TModelInstanceInfoDescTable.delete(bindingKey,connection);
998 InstanceDetailsDocDescTable.delete(bindingKey,connection);
999 InstanceDetailsDescTable.delete(bindingKey,connection);
1000 TModelInstanceInfoTable.delete(bindingKey,connection);
1001
1002
1003 BindingTemplateTable.delete(bindingKey,connection);
1004 }
1005 }
1006 catch(java.sql.SQLException sqlex)
1007 {
1008 throw new RegistryException(sqlex);
1009 }
1010 }
1011
1012 /***
1013 *
1014 */
1015 private Vector fetchBindingByServiceKey(String serviceKey)
1016 throws org.apache.juddi.error.RegistryException
1017 {
1018 Vector bindingList = new Vector();
1019
1020 try
1021 {
1022 if ((serviceKey != null) && (connection != null))
1023 {
1024 Vector tempList = BindingTemplateTable.selectByServiceKey(serviceKey,connection);
1025 for (int i=0; i<tempList.size(); i++)
1026 {
1027 BindingTemplate binding = (BindingTemplate)tempList.elementAt(i);
1028 bindingList.add(fetchBinding(binding.getBindingKey()));
1029 }
1030 }
1031 }
1032 catch(java.sql.SQLException sqlex)
1033 {
1034 throw new RegistryException(sqlex);
1035 }
1036
1037 return bindingList;
1038 }
1039
1040 /***
1041 *
1042 */
1043 private void deleteBindingByServiceKey(String serviceKey)
1044 throws org.apache.juddi.error.RegistryException
1045 {
1046 try
1047 {
1048 if ((serviceKey != null) && (connection != null))
1049 {
1050
1051 Vector bindings = BindingTemplateTable.selectByServiceKey(serviceKey,connection);
1052
1053
1054 int listSize = bindings.size();
1055 for (int i=0; i<listSize; i++)
1056 {
1057 BindingTemplate binding = (BindingTemplate)bindings.elementAt(i);
1058 deleteBinding(binding.getBindingKey());
1059 }
1060 }
1061 }
1062 catch(java.sql.SQLException sqlex)
1063 {
1064 throw new RegistryException(sqlex);
1065 }
1066 }
1067
1068 /***
1069 *
1070 */
1071 public boolean isValidBindingKey(String bindingKey)
1072 throws org.apache.juddi.error.RegistryException
1073 {
1074 try
1075 {
1076 if ((bindingKey != null) && (connection != null) &&
1077 (BindingTemplateTable.select(bindingKey,connection) != null))
1078 return true;
1079 }
1080 catch(java.sql.SQLException sqlex)
1081 {
1082 throw new RegistryException(sqlex);
1083 }
1084
1085 return false;
1086 }
1087
1088 /***
1089 *
1090 */
1091 public boolean isBindingPublisher(String bindingKey,String publisherID)
1092 throws org.apache.juddi.error.RegistryException
1093 {
1094 try
1095 {
1096 if ((publisherID != null) && (bindingKey != null) && (connection != null))
1097 return BindingTemplateTable.verifyOwnership(bindingKey,publisherID,connection);
1098 }
1099 catch(java.sql.SQLException sqlex)
1100 {
1101 throw new RegistryException(sqlex);
1102 }
1103
1104
1105 return false;
1106 }
1107
1108 /***
1109 *
1110 */
1111 public void saveTModel(TModel tModel,String authorizedUserID)
1112 throws org.apache.juddi.error.RegistryException
1113 {
1114 try
1115 {
1116 if ((tModel != null) && (connection != null))
1117 {
1118 String tModelKey = tModel.getTModelKey();
1119
1120
1121 TModelTable.insert(tModel,authorizedUserID,connection);
1122
1123
1124 if (tModel.getDescriptionVector() != null)
1125 TModelDescTable.insert(tModelKey,tModel.getDescriptionVector(),connection);
1126
1127
1128 IdentifierBag idBag = tModel.getIdentifierBag();
1129 if ((idBag != null) && (idBag.getKeyedReferenceVector() != null))
1130 TModelIdentifierTable.insert(tModelKey,idBag.getKeyedReferenceVector(),connection);
1131
1132
1133 CategoryBag catBag = tModel.getCategoryBag();
1134 if ((catBag != null) && (catBag.getKeyedReferenceVector() != null))
1135 TModelCategoryTable.insert(tModelKey,catBag.getKeyedReferenceVector(),connection);
1136
1137
1138 OverviewDoc overDoc = tModel.getOverviewDoc();
1139 if ((overDoc != null) && (overDoc.getDescriptionVector() != null))
1140 {
1141
1142 Vector descVector = overDoc.getDescriptionVector();
1143 if ((descVector != null) && (descVector.size() > 0))
1144 TModelDocDescTable.insert(tModelKey,descVector,connection);
1145 }
1146 }
1147 }
1148 catch(java.sql.SQLException sqlex)
1149 {
1150 throw new RegistryException(sqlex);
1151 }
1152 }
1153
1154 /***
1155 *
1156 */
1157 public TModel fetchTModel(String tModelKey)
1158 throws org.apache.juddi.error.RegistryException
1159 {
1160 TModel tModel = null;
1161
1162 try
1163 {
1164 if ((tModelKey != null) && (connection != null))
1165 {
1166 tModel = TModelTable.select(tModelKey,connection);
1167 if (tModel != null)
1168 {
1169 tModel.setDescriptionVector(TModelDescTable.select(tModelKey,connection));
1170
1171
1172 Vector catVector = TModelCategoryTable.select(tModelKey,connection);
1173 if ((catVector != null) && (catVector.size() != 0))
1174 {
1175 CategoryBag catBag = new CategoryBag();
1176 catBag.setKeyedReferenceVector(catVector);
1177 tModel.setCategoryBag(catBag);
1178 }
1179
1180
1181 Vector idVector = TModelIdentifierTable.select(tModelKey,connection);
1182 if ((idVector != null) && (idVector.size() != 0))
1183 {
1184 IdentifierBag idBag = new IdentifierBag();
1185 idBag.setKeyedReferenceVector(idVector);
1186 tModel.setIdentifierBag(idBag);
1187 }
1188
1189
1190 OverviewDoc overDoc = tModel.getOverviewDoc();
1191 if (overDoc != null)
1192 {
1193 overDoc.setDescriptionVector(TModelDocDescTable.select(tModelKey,connection));
1194 tModel.setOverviewDoc(overDoc);
1195 }
1196 }
1197 }
1198 }
1199 catch(java.sql.SQLException sqlex)
1200 {
1201 throw new RegistryException(sqlex);
1202 }
1203
1204 return tModel;
1205 }
1206
1207 /***
1208 *
1209 */
1210 public void deleteTModel(String tModelKey)
1211 throws org.apache.juddi.error.RegistryException
1212 {
1213 try
1214 {
1215 if ((tModelKey != null) && (connection != null))
1216 {
1217
1218 TModelCategoryTable.delete(tModelKey,connection);
1219 TModelDescTable.delete(tModelKey,connection);
1220 TModelDocDescTable.delete(tModelKey,connection);
1221 TModelIdentifierTable.delete(tModelKey,connection);
1222
1223
1224 TModelTable.delete(tModelKey,connection);
1225 }
1226 }
1227 catch(java.sql.SQLException sqlex)
1228 {
1229 throw new RegistryException(sqlex);
1230 }
1231 }
1232
1233 /***
1234 *
1235 */
1236 public void markTModelAsDeleted(String tModelKey)
1237 throws org.apache.juddi.error.RegistryException
1238 {
1239 try
1240 {
1241 if ((tModelKey != null) && (connection != null))
1242 {
1243
1244 TModelTable.markAsDeleted(tModelKey,connection);
1245 }
1246 }
1247 catch(java.sql.SQLException sqlex)
1248 {
1249 throw new RegistryException(sqlex);
1250 }
1251 }
1252
1253 /***
1254 *
1255 */
1256 public boolean isValidTModelKey(String tModelKey)
1257 throws org.apache.juddi.error.RegistryException
1258 {
1259 try
1260 {
1261 if ((tModelKey != null) && (connection != null) &&
1262 (TModelTable.select(tModelKey,connection) != null))
1263 return true;
1264 }
1265 catch(java.sql.SQLException sqlex)
1266 {
1267 throw new RegistryException(sqlex);
1268 }
1269
1270
1271 return false;
1272 }
1273
1274 /***
1275 *
1276 */
1277 public boolean isTModelPublisher(String tModelKey,String publisherID)
1278 throws org.apache.juddi.error.RegistryException
1279 {
1280 try
1281 {
1282 if ((publisherID != null) && (tModelKey != null) && (connection != null))
1283 return TModelTable.verifyOwnership(tModelKey,publisherID,connection);
1284 }
1285 catch(java.sql.SQLException sqlex)
1286 {
1287 throw new RegistryException(sqlex);
1288 }
1289
1290
1291 return false;
1292 }
1293
1294 /***
1295 *
1296 */
1297 public BusinessInfo fetchBusinessInfo(String businessKey)
1298 throws org.apache.juddi.error.RegistryException
1299 {
1300 BusinessInfo info = null;
1301
1302 if ((businessKey != null) && (connection != null))
1303 {
1304 try
1305 {
1306 info = new BusinessInfo();
1307 info.setBusinessKey(businessKey);
1308 info.setNameVector(BusinessNameTable.select(businessKey,connection));
1309 info.setDescriptionVector(BusinessDescTable.select(businessKey,connection));
1310 info.setServiceInfos(fetchServiceInfosByBusinessKey(businessKey));
1311 }
1312 catch(java.sql.SQLException sqlex)
1313 {
1314 throw new RegistryException(sqlex);
1315 }
1316 }
1317
1318 return info;
1319 }
1320
1321 /***
1322 *
1323 */
1324 private ServiceInfos fetchServiceInfosByBusinessKey(String businessKey)
1325 throws org.apache.juddi.error.RegistryException
1326 {
1327 Vector serviceInfoVector = new Vector();
1328
1329 if ((businessKey != null) && (connection != null))
1330 {
1331 try
1332 {
1333 Vector services = BusinessServiceTable.selectByBusinessKey(businessKey,connection);
1334 for (int i=0; i<services.size(); i++)
1335 {
1336
1337
1338 BusinessService service = (BusinessService)services.elementAt(i);
1339 String serviceKey = service.getServiceKey();
1340
1341
1342 ServiceInfo info = new ServiceInfo();
1343 info.setServiceKey(serviceKey);
1344 info.setBusinessKey(businessKey);
1345 info.setNameVector(ServiceNameTable.select(serviceKey,connection));
1346
1347
1348 serviceInfoVector.add(info);
1349 }
1350 }
1351 catch(java.sql.SQLException sqlex)
1352 {
1353 throw new RegistryException(sqlex);
1354 }
1355 }
1356
1357 ServiceInfos serviceInfos = new ServiceInfos();
1358 serviceInfos.setServiceInfoVector(serviceInfoVector);
1359 return serviceInfos;
1360 }
1361
1362 /***
1363 *
1364 */
1365 public ServiceInfo fetchServiceInfo(String serviceKey)
1366 throws org.apache.juddi.error.RegistryException
1367 {
1368 ServiceInfo info = null;
1369
1370 if ((serviceKey != null) && (connection != null))
1371 {
1372 try
1373 {
1374 BusinessService service = BusinessServiceTable.select(serviceKey,connection);
1375 if (service != null)
1376 {
1377 info = new ServiceInfo();
1378 info.setServiceKey(service.getServiceKey());
1379 info.setBusinessKey(service.getBusinessKey());
1380 info.setNameVector(ServiceNameTable.select(serviceKey,connection));
1381 }
1382 }
1383 catch(java.sql.SQLException sqlex)
1384 {
1385 throw new RegistryException(sqlex);
1386 }
1387 }
1388
1389 return info;
1390 }
1391
1392 /***
1393 *
1394 */
1395 public TModelInfo fetchTModelInfo(String tModelKey)
1396 throws org.apache.juddi.error.RegistryException
1397 {
1398 TModelInfo info = null;
1399
1400 if ((tModelKey != null) && (connection != null))
1401 {
1402 try
1403 {
1404 TModel tModel = TModelTable.select(tModelKey,connection);
1405 info = new TModelInfo();
1406 info.setTModelKey(tModelKey);
1407 info.setName(tModel.getName());
1408 }
1409 catch(java.sql.SQLException sqlex)
1410 {
1411 throw new RegistryException(sqlex);
1412 }
1413 }
1414
1415 return info;
1416 }
1417
1418 /***
1419 *
1420 */
1421 public Vector findBusiness( Vector nameVector,
1422 DiscoveryURLs discoveryURLs,
1423 IdentifierBag identifierBag,
1424 CategoryBag categoryBag,
1425 TModelBag tModelBag,
1426 FindQualifiers findQualifiers)
1427 throws org.apache.juddi.error.RegistryException
1428 {
1429 Vector keyVector = null;
1430
1431 try
1432 {
1433 if ((discoveryURLs != null) && (discoveryURLs.size() > 0))
1434 keyVector = FindBusinessByDiscoveryURLQuery.select(discoveryURLs,keyVector,findQualifiers,connection);
1435
1436 if ((findQualifiers != null) && (findQualifiers.orAllKeys))
1437 {
1438
1439
1440
1441 if ((tModelBag != null) && (tModelBag.size() > 0))
1442 keyVector = FindBusinessByTModelKeyQuery.select(tModelBag,keyVector,findQualifiers,connection);
1443
1444 if ((categoryBag != null) && (categoryBag.size() > 0))
1445 keyVector = FindBusinessByCategoryQuery.select(categoryBag,keyVector,findQualifiers,connection);
1446 }
1447 else
1448 {
1449
1450
1451
1452
1453 if ((tModelBag != null) && (tModelBag.size() > 0))
1454 {
1455 Vector tModelKeyVector = tModelBag.getTModelKeyVector();
1456 if (tModelKeyVector != null)
1457 {
1458 for (int i=0; i<tModelKeyVector.size(); i++)
1459 {
1460 String tModelKey = (String)tModelKeyVector.elementAt(i);
1461 keyVector = FindBusinessByTModelKeyQuery.select(tModelKey,keyVector,findQualifiers,connection);
1462 }
1463 }
1464 }
1465
1466 if ((categoryBag != null) && (categoryBag.size() > 0))
1467 {
1468 Vector keyedRefVector = categoryBag.getKeyedReferenceVector();
1469 if (keyedRefVector != null)
1470 {
1471 for (int i=0; i<keyedRefVector.size(); i++)
1472 {
1473 KeyedReference keyedRef = (KeyedReference)keyedRefVector.elementAt(i);
1474 keyVector = FindBusinessByCategoryQuery.select(keyedRef,keyVector,findQualifiers,connection);
1475 }
1476 }
1477 }
1478 }
1479
1480 if ((identifierBag != null) && (identifierBag.size() > 0))
1481 keyVector = FindBusinessByIdentifierQuery.select(identifierBag,keyVector,findQualifiers,connection);
1482
1483
1484 keyVector = FindBusinessByNameQuery.select(nameVector,keyVector,findQualifiers,connection);
1485 }
1486 catch(java.sql.SQLException sqlex)
1487 {
1488 throw new RegistryException(sqlex);
1489 }
1490
1491 return keyVector;
1492 }
1493
1494 /***
1495 *
1496 */
1497 public Vector findService(String businessKey,
1498 Vector nameVector,
1499 CategoryBag categoryBag,
1500 TModelBag tModelBag,
1501 FindQualifiers findQualifiers)
1502 throws org.apache.juddi.error.RegistryException
1503 {
1504 Vector keyVector = null;
1505
1506 try
1507 {
1508 if (businessKey != null)
1509 keyVector = FindServiceByBusinessKeyQuery.select(businessKey,keyVector,findQualifiers,connection);
1510
1511 if ((findQualifiers != null) && (findQualifiers.orAllKeys))
1512 {
1513
1514
1515
1516 if ((tModelBag != null) && (tModelBag.size() > 0))
1517 keyVector = FindServiceByTModelKeyQuery.select(businessKey,tModelBag,keyVector,findQualifiers,connection);
1518
1519 if ((categoryBag != null) && (categoryBag.size() > 0))
1520 keyVector = FindServiceByCategoryQuery.select(businessKey,categoryBag,keyVector,findQualifiers,connection);
1521 }
1522 else
1523 {
1524
1525
1526
1527
1528 if ((tModelBag != null) && (tModelBag.size() > 0))
1529 {
1530 Vector tModelKeyVector = tModelBag.getTModelKeyVector();
1531 if (tModelKeyVector != null)
1532 {
1533 for (int i=0; i<tModelKeyVector.size(); i++)
1534 {
1535 String tModelKey = (String)tModelKeyVector.elementAt(i);
1536 keyVector = FindServiceByTModelKeyQuery.select(businessKey,tModelKey,keyVector,findQualifiers,connection);
1537 }
1538 }
1539 }
1540
1541 if ((categoryBag != null) && (categoryBag.size() > 0))
1542 {
1543 Vector keyedRefVector = categoryBag.getKeyedReferenceVector();
1544 if (keyedRefVector != null)
1545 {
1546 for (int i=0; i<keyedRefVector.size(); i++)
1547 {
1548 KeyedReference keyedRef = (KeyedReference)keyedRefVector.elementAt(i);
1549 keyVector = FindServiceByCategoryQuery.select(businessKey,keyedRef,keyVector,findQualifiers,connection);
1550 }
1551 }
1552 }
1553 }
1554
1555
1556 keyVector = FindServiceByNameQuery.select(businessKey,nameVector,keyVector,findQualifiers,connection);
1557 }
1558 catch(java.sql.SQLException sqlex)
1559 {
1560 throw new RegistryException(sqlex);
1561 }
1562
1563 return keyVector;
1564 }
1565
1566 /***
1567 *
1568 */
1569 public Vector findTModel( String name,
1570 CategoryBag categoryBag,
1571 IdentifierBag identifierBag,
1572 FindQualifiers findQualifiers)
1573 throws org.apache.juddi.error.RegistryException
1574 {
1575 Vector keyVector = null;
1576
1577 try
1578 {
1579 if ((findQualifiers != null) && (findQualifiers.orAllKeys))
1580 {
1581
1582
1583
1584 if ((categoryBag != null) && (categoryBag.size() > 0))
1585 keyVector = FindTModelByCategoryQuery.select(categoryBag,keyVector,findQualifiers,connection);
1586 }
1587 else
1588 {
1589
1590
1591
1592 if ((categoryBag != null) && (categoryBag.size() > 0))
1593 {
1594 Vector keyedRefVector = categoryBag.getKeyedReferenceVector();
1595 if (keyedRefVector != null)
1596 {
1597 for (int i=0; i<keyedRefVector.size(); i++)
1598 {
1599 KeyedReference keyedRef = (KeyedReference)keyedRefVector.elementAt(i);
1600 keyVector = FindTModelByCategoryQuery.select(keyedRef,keyVector,findQualifiers,connection);
1601 }
1602 }
1603 }
1604 }
1605
1606 if ((identifierBag != null) && (identifierBag.size() > 0))
1607 keyVector = FindTModelByIdentifierQuery.select(identifierBag,keyVector,findQualifiers,connection);
1608
1609
1610 keyVector = FindTModelByNameQuery.select(name,keyVector,findQualifiers,connection);
1611 }
1612 catch(java.sql.SQLException sqlex)
1613 {
1614 throw new RegistryException(sqlex);
1615 }
1616
1617 return keyVector;
1618 }
1619
1620 /***
1621 *
1622 */
1623 public Vector findBinding(String serviceKey,
1624 CategoryBag categoryBag,
1625 TModelBag tModelBag,
1626 FindQualifiers findQualifiers)
1627 throws org.apache.juddi.error.RegistryException
1628 {
1629 Vector keyVector = null;
1630
1631 try
1632 {
1633 if (serviceKey != null)
1634 keyVector = FindBindingByServiceKeyQuery.select(serviceKey,keyVector,findQualifiers,connection);
1635
1636 if ((findQualifiers != null) && (findQualifiers.orAllKeys))
1637 {
1638
1639
1640
1641 if ((tModelBag != null) && (tModelBag.size() > 0))
1642 keyVector = FindBindingByTModelKeyQuery.select(serviceKey,tModelBag,keyVector,findQualifiers,connection);
1643
1644 if ((categoryBag != null) && (categoryBag.size() > 0))
1645 keyVector = FindBindingByCategoryQuery.select(serviceKey,categoryBag,keyVector,findQualifiers,connection);
1646 }
1647 else
1648 {
1649
1650
1651
1652 if ((tModelBag != null) && (tModelBag.size() > 0))
1653 {
1654 Vector tModelKeyVector = tModelBag.getTModelKeyVector();
1655 if (tModelKeyVector != null)
1656 {
1657 for (int i=0; i<tModelKeyVector.size(); i++)
1658 {
1659 String tModelKey = (String)tModelKeyVector.elementAt(i);
1660 keyVector = FindBindingByTModelKeyQuery.select(serviceKey,tModelKey,keyVector,findQualifiers,connection);
1661 }
1662 }
1663 }
1664
1665 if ((categoryBag != null) && (categoryBag.size() > 0))
1666 {
1667 Vector keyedRefVector = categoryBag.getKeyedReferenceVector();
1668 if (keyedRefVector != null)
1669 {
1670 for (int i=0; i<keyedRefVector.size(); i++)
1671 {
1672 KeyedReference keyedRef = (KeyedReference)keyedRefVector.elementAt(i);
1673 keyVector = FindBindingByCategoryQuery.select(serviceKey,keyedRef,keyVector,findQualifiers,connection);
1674 }
1675 }
1676 }
1677 }
1678
1679
1680
1681
1682
1683 /***
1684 // * Anil: Only if the serviceKey is passed
1685 // */
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697 }
1698 catch(java.sql.SQLException sqlex)
1699 {
1700 throw new RegistryException(sqlex);
1701 }
1702
1703 return keyVector;
1704 }
1705
1706 /***
1707 *
1708 * 1. Retrieve a Vector of BusinessKeys for related BusinessEntities by calling
1709 * FindRelatedBusinessQuery.select(businessKey) or if a KeyedReference was
1710 * specified in the query call FindRelatedBusinessQuery.selectWithKeyedRef(businessKey,KeyedReference)
1711 *
1712 * 2. Call FindBusinessByNameQuery.select(null,keyVector,qualifiers,connection)
1713 * to return the Vector of relatedBusinessKeys from step 1 in the requested
1714 * order as specified by any FindQualifiers supplied with the UDDI Request.
1715 *
1716 * 3. For each relatedBusinessKey returned in step 2 perform the following:
1717 *
1718 * 4. Create a new RelatedBusinessInfo instance.
1719 *
1720 * 5. Fetch the related businesses BusinessInfo instance by calling
1721 * DataStore.fetchBusinessInfo(relatedBusinessKey) and save the Name
1722 * Vector and Description Vector to the RelatedBusinessInfo created in
1723 * step 4.
1724 *
1725 * 6. Using the businessKey passed in to the query and the relatedBusinessKey
1726 * from the BusinessInfo fetched (step 4) get all KeyedReference instances
1727 * for this pair of keys and add them to the RelatedBusinessInfo created
1728 * in step 4. (only grab KeyedReference values from rows where both
1729 * FROM_CHECK and TO_CHECK columns are = 'true'. Do this by making a call to
1730 * PublisherAssertionTable.selectBusinessRelationships(businessKey,relatedKey)
1731 */
1732 public Vector findRelatedBusinesses(String businessKey,KeyedReference keyedRef,FindQualifiers findQualifiers)
1733 throws org.apache.juddi.error.RegistryException
1734 {
1735 Vector keyVector = null;
1736 Vector infoVector = null;
1737
1738 try
1739 {
1740
1741 if (keyedRef == null)
1742 keyVector = FindRelatedBusinessQuery.select(businessKey,connection);
1743 else
1744 keyVector = FindRelatedBusinessQuery.selectWithKeyedRef(businessKey,keyedRef,connection);
1745
1746
1747 keyVector = FindBusinessByNameQuery.select(null,keyVector,findQualifiers,connection);
1748
1749
1750 int rowCount = keyVector.size();
1751
1752 infoVector = new Vector(rowCount);
1753 for (int i=0; i<rowCount; i++)
1754 {
1755 String relatedKey = (String)keyVector.elementAt(i);
1756 BusinessInfo bizInfo = fetchBusinessInfo(relatedKey);
1757
1758 if(bizInfo != null)
1759 {
1760 RelatedBusinessInfo relatedBizInfo = new RelatedBusinessInfo();
1761
1762 relatedBizInfo.setBusinessKey(bizInfo.getBusinessKey());
1763 relatedBizInfo.setNameVector( bizInfo.getNameVector() );
1764 relatedBizInfo.setDescriptionVector( bizInfo.getDescriptionVector() );
1765
1766 Vector keyedReferences = PublisherAssertionTable.selectRelatedBusinesses(businessKey,relatedKey,connection);
1767 relatedBizInfo.setSharedRelationships(new SharedRelationships(keyedReferences));
1768
1769 infoVector.addElement(relatedBizInfo);
1770 }
1771 }
1772 }
1773 catch(java.sql.SQLException sqlex)
1774 {
1775 throw new RegistryException(sqlex);
1776 }
1777
1778 return infoVector;
1779 }
1780
1781 /***
1782 *
1783 */
1784 public Vector findRegisteredBusinesses(String publisherID)
1785 throws org.apache.juddi.error.RegistryException
1786 {
1787 Vector keyVector = null;
1788
1789 try
1790 {
1791
1792 keyVector = BusinessEntityTable.selectByPublisherID(publisherID,connection);
1793 }
1794 catch(java.sql.SQLException sqlex)
1795 {
1796 throw new RegistryException(sqlex);
1797 }
1798
1799 return keyVector;
1800 }
1801
1802 /***
1803 *
1804 */
1805 public Vector findRegisteredTModels(String publisherID)
1806 throws org.apache.juddi.error.RegistryException
1807 {
1808 Vector keyVector = null;
1809
1810 try
1811 {
1812
1813 keyVector = TModelTable.selectByPublisherID(publisherID,connection);
1814 }
1815 catch(java.sql.SQLException sqlex)
1816 {
1817 throw new RegistryException(sqlex);
1818 }
1819
1820 return keyVector;
1821 }
1822
1823 /***
1824 *
1825 * For each PublisherAssertion in the Vector of PublisherAssertions passed
1826 * in perform the following steps:
1827 *
1828 * 1. Determine if the BusinessEntity specified in the 'fromKey' is
1829 * managed by publisherID retrieved in step 1. Do this by calling:
1830 * BusinessEntityTable.selectPublisherID(fromKey);
1831 *
1832 * 2. Determine if the BusinessEntity specified in the 'toKey' is
1833 * managed by publisherID retrieved in step 1. Do this by calling:
1834 * BusinessEntityTable.selectPublisherID(toKey);
1835 *
1836 * 3. If at least one of the two BusinessKeys specified in this
1837 * PublisherAssertion is managed by providerID then check to see if
1838 * a row already exists in the PUBLISHER_ASSERTION table by calling:
1839 * PublisherAssertionTable.select(PublisherAssertion assertionIn)
1840 *
1841 * 4. If a row doesn't exist then insert a new one (set the values of the
1842 * to_check and from_check columns appropriately based on info returned
1843 * in steps 3 & 4.) Insert the row by calling:
1844 * PublisherAssertionTable.insert(PublisherAssertion,fromCheck,toCheck)
1845 *
1846 * 5. If a row does exist and publisherID is responsible for the
1847 * BusinessEntity identified by 'fromKey' then update the row by calling:
1848 * PublisherAssertionTable.updateFromCheck(PublisherAssertion,true)
1849 *
1850 * 6. If a row does exist and publisherID is responsible for the
1851 * BusinessEntity identified by 'toKey' then update the row by calling:
1852 * PublisherAssertionTable.updateToCheck(PublisherAssertion,true)
1853 */
1854 public void saveAssertions(String publisherID,Vector assertions)
1855 throws org.apache.juddi.error.RegistryException
1856 {
1857 try
1858 {
1859
1860 for (int i=0; i<assertions.size(); i++)
1861 {
1862
1863 PublisherAssertion assertion = (PublisherAssertion)assertions.elementAt(i);
1864 String fromKey = assertion.getFromKey();
1865 String toKey = assertion.getToKey();
1866
1867
1868
1869 boolean fromCheck = BusinessEntityTable.verifyOwnership(fromKey,publisherID,connection);
1870 boolean toCheck = BusinessEntityTable.verifyOwnership(toKey,publisherID,connection);
1871
1872
1873
1874
1875 if (PublisherAssertionTable.select(assertion,connection) == null)
1876 PublisherAssertionTable.insert(assertion,fromCheck,toCheck,connection);
1877 else
1878 {
1879 if (fromCheck)
1880 PublisherAssertionTable.updateFromCheck(assertion,fromCheck,connection);
1881 if (toCheck)
1882 PublisherAssertionTable.updateToCheck(assertion,toCheck,connection);
1883 }
1884 }
1885 }
1886 catch(java.sql.SQLException sqlex)
1887 {
1888 throw new RegistryException(sqlex);
1889 }
1890 }
1891
1892 /***
1893 *
1894 * For each PublisherAssertion in the Vector of PublisherAssertions passed
1895 * in perform the following steps:
1896 *
1897 * 1. Determine if the BusinessEntity specified in the 'fromKey' is
1898 * managed by publisherID retrieved in step 1. Do this by calling:
1899 * BusinessEntityTable.selectPublisherID(fromKey);
1900 *
1901 * 2. If the publisherID does manage the BusinessEntity identified by
1902 * the PublisherAssertions 'fromKey' then call the following method:
1903 * PublisherAssertionTable.updateFromCheck(PublisherAssertion,false)
1904 *
1905 * 3. Determine if the BusinessEntity specified in the 'toKey' is
1906 * managed by publisherID retrieved in step 1. Do this by calling:
1907 * BusinessEntityTable.selectPublisherID(toKey);
1908 *
1909 * 4. If the publisherID does manage the BusinessEntity identified by
1910 * the PublisherAssertions 'toKey then call the following method:
1911 * PublisherAssertionTable.updateToCheck(PublisherAssertion,false)
1912 *
1913 * 5. After iterating through the entire Vector of PublisherAssertions
1914 * call the following method: PublisherAssertionTable.deleteDeadAssertions()
1915 */
1916 public void deleteAssertions(String publisherID,Vector assertions)
1917 throws org.apache.juddi.error.RegistryException
1918 {
1919 try
1920 {
1921
1922 for (int i=0; i<assertions.size(); i++)
1923 {
1924
1925 PublisherAssertion assertion = (PublisherAssertion)assertions.elementAt(i);
1926
1927
1928
1929 String fromID = BusinessEntityTable.selectPublisherID(assertion.getFromKey(),connection);
1930 if (publisherID.equalsIgnoreCase(fromID))
1931 PublisherAssertionTable.updateFromCheck(assertion,false,connection);
1932
1933
1934
1935 String toID = BusinessEntityTable.selectPublisherID(assertion.getToKey(),connection);
1936 if (publisherID.equalsIgnoreCase(toID))
1937 PublisherAssertionTable.updateToCheck(assertion,false,connection);
1938 }
1939
1940
1941
1942
1943 if (assertions.size() > 0)
1944 PublisherAssertionTable.deleteDeadAssertions(connection);
1945 }
1946 catch(java.sql.SQLException sqlex)
1947 {
1948 throw new RegistryException(sqlex);
1949 }
1950 }
1951
1952 /***
1953 *
1954 * 1. Retrieve all BusinessKey's that the publisherID is responsible for
1955 * managing by calling: BusinessEntityTable.selectByPublisherID(publisherID)
1956 *
1957 * 2. Retrieve all PublisherAssertion's that publisherID has made by
1958 * calling: PublisherAssertionTable.selectAssertions(Vector) where
1959 * 'Vector' is the collection of BusinessKey's returned in step 2.
1960 */
1961 public Vector getAssertions(String publisherID)
1962 throws org.apache.juddi.error.RegistryException
1963 {
1964 Vector assertions = null;
1965
1966 try
1967 {
1968 Vector keys = BusinessEntityTable.selectByPublisherID(publisherID,connection);
1969 assertions = PublisherAssertionTable.selectAssertions(keys,connection);
1970 }
1971 catch(java.sql.SQLException sqlex)
1972 {
1973 throw new RegistryException(sqlex);
1974 }
1975
1976 return assertions;
1977 }
1978
1979 /***
1980 *
1981 * 1. Retrieve all PublisherAssertions associated with the publisherID
1982 * passed in by calling DataSource.getAssertions(publisherID)
1983 *
1984 * 2. With the Vector of PublisherAssertions retrieved in step 1 call
1985 * DataSource.deleteAssertions(publisherID,Vector)
1986 *
1987 * 3. With the Vector of PublisherAssertions passed into this method
1988 * call: DataSource.addAssertions(publisherID,Vector)
1989 */
1990 public Vector setAssertions(String publisherID,Vector newAssertions)
1991 throws org.apache.juddi.error.RegistryException
1992 {
1993
1994 Vector oldAssertions = getAssertions(publisherID);
1995
1996
1997 deleteAssertions(publisherID,oldAssertions);
1998
1999
2000 saveAssertions(publisherID,newAssertions);
2001
2002 return newAssertions;
2003 }
2004
2005 /***
2006 *
2007 * 1. Retrieve Vector of BusinessKeys for BusinessEntities managed by
2008 * publisherID by calling: BusinessEntityTable.selectByPublisherID(publisherID)
2009 *
2010 * 2. Call PublisherAssertionTable.selectBothKeysOwnedAssertions(Vector of BusinessKeys)
2011 *
2012 * 3. Call PublisherAssertionTable.selectFromKeyOwnedAssertions(Vector of BusinessKeys)
2013 *
2014 * 4. Call PublisherAssertionTable.selectToKeyOwnedAssertions(Vector of BusinessKeys)
2015 *
2016 * 5. Combine Vectors from steps 3, 4 and 5 above into one Vector of
2017 * AssertionStatusItem instances
2018 *
2019 * 5. Loop through Vector from step 6 copying only AssertionStatusItem instances
2020 * that have a CompletionStatus that matches the completionStatus requested.
2021 */
2022 public Vector getAssertionStatusItems(String publisherID,String completionStatus)
2023 throws org.apache.juddi.error.RegistryException
2024 {
2025 Vector items = null;
2026
2027 try
2028 {
2029
2030 Vector keys = BusinessEntityTable.selectByPublisherID(publisherID,connection);
2031
2032
2033
2034 Vector allItems = new Vector();
2035 allItems.addAll(PublisherAssertionTable.selectBothKeysOwnedAssertion(keys,connection));
2036 allItems.addAll(PublisherAssertionTable.selectFromKeyOwnedAssertion(keys,connection));
2037 allItems.addAll(PublisherAssertionTable.selectToKeyOwnedAssertion(keys,connection));
2038
2039
2040
2041
2042 if ((completionStatus == null) || (completionStatus.length() == 0))
2043 items = allItems;
2044 else
2045 {
2046
2047 if (allItems.size() > 0)
2048 items = new Vector();
2049
2050
2051 for (int i=0; i<allItems.size(); i++)
2052 {
2053 AssertionStatusItem item = (AssertionStatusItem)allItems.elementAt(i);
2054 CompletionStatus status = item.getCompletionStatus();
2055 if (status.getValue().equalsIgnoreCase(completionStatus))
2056 items.addElement(item);
2057 }
2058 }
2059 }
2060 catch(java.sql.SQLException sqlex)
2061 {
2062 throw new RegistryException(sqlex);
2063 }
2064
2065 return items;
2066 }
2067
2068 /***
2069 *
2070 */
2071 public void savePublisher(Publisher publisher)
2072 throws org.apache.juddi.error.RegistryException
2073 {
2074 try
2075 {
2076 if ((publisher != null) && (connection != null))
2077 {
2078
2079 PublisherTable.insert(publisher,connection);
2080 }
2081 }
2082 catch(java.sql.SQLException sqlex)
2083 {
2084 throw new RegistryException(sqlex);
2085 }
2086 }
2087
2088 /***
2089 *
2090 */
2091 public void deletePublisher(String publisherID)
2092 throws org.apache.juddi.error.RegistryException
2093 {
2094 try
2095 {
2096 if ((publisherID != null) && (connection != null))
2097 {
2098
2099 PublisherTable.delete(publisherID,connection);
2100 }
2101 }
2102 catch(java.sql.SQLException sqlex)
2103 {
2104 throw new RegistryException(sqlex);
2105 }
2106 }
2107
2108 /***
2109 *
2110 */
2111 public PublisherInfo fetchPublisherInfo(String publisherID)
2112 throws org.apache.juddi.error.RegistryException
2113 {
2114 PublisherInfo info = null;
2115
2116 if ((publisherID != null) && (connection != null))
2117 {
2118 try
2119 {
2120 Publisher publisher = PublisherTable.select(publisherID,connection);
2121 info = new PublisherInfo();
2122 info.setPublisherID(publisherID);
2123 info.setNameValue(publisher.getName());
2124 }
2125 catch(java.sql.SQLException sqlex)
2126 {
2127 throw new RegistryException(sqlex);
2128 }
2129 }
2130
2131 return info;
2132 }
2133
2134 /***
2135 *
2136 */
2137 public Vector findPublisher(String name,FindQualifiers findQualifiers)
2138 throws org.apache.juddi.error.RegistryException
2139 {
2140 Vector keyVector = null;
2141
2142 try
2143 {
2144
2145 keyVector = FindPublisherByNameQuery.select(name,keyVector,findQualifiers,connection);
2146 }
2147 catch(java.sql.SQLException sqlex)
2148 {
2149 throw new RegistryException(sqlex);
2150 }
2151
2152 return keyVector;
2153 }
2154 }
2155