1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.rice.ksb.impl.registry;
17
18 import java.sql.Connection;
19 import java.sql.PreparedStatement;
20 import java.sql.SQLException;
21 import java.util.List;
22
23 import javax.xml.namespace.QName;
24
25 import org.apache.ojb.broker.PersistenceBroker;
26 import org.apache.ojb.broker.query.Criteria;
27 import org.apache.ojb.broker.query.QueryByCriteria;
28 import org.kuali.rice.ksb.api.registry.ServiceEndpointStatus;
29 import org.springmodules.orm.ojb.PersistenceBrokerCallback;
30 import org.springmodules.orm.ojb.support.PersistenceBrokerDaoSupport;
31
32
33
34
35
36
37
38 public class ServiceRegistryDaoOjb extends PersistenceBrokerDaoSupport implements ServiceRegistryDao {
39
40 @Override
41 public ServiceInfoBo getServiceInfo(String serviceId) {
42 Criteria crit = new Criteria();
43 crit.addEqualTo("serviceId", serviceId);
44 return (ServiceInfoBo)getPersistenceBrokerTemplate().getObjectByQuery(new QueryByCriteria(ServiceInfoBo.class, crit));
45 }
46
47 @Override
48 public List<ServiceInfoBo> getOnlineServiceInfosByName(QName serviceName) {
49 Criteria crit = new Criteria();
50 crit.addEqualTo("serviceName", serviceName.toString());
51 crit.addEqualTo("statusCode", ServiceEndpointStatus.ONLINE.getCode());
52 return (List<ServiceInfoBo>)getPersistenceBrokerTemplate().getCollectionByQuery(new QueryByCriteria(ServiceInfoBo.class, crit));
53 }
54
55 @Override
56 public List<ServiceInfoBo> getAllOnlineServiceInfos() {
57 Criteria crit = new Criteria();
58 crit.addEqualTo("statusCode", ServiceEndpointStatus.ONLINE.getCode());
59 return (List<ServiceInfoBo>)getPersistenceBrokerTemplate().getCollectionByQuery(new QueryByCriteria(ServiceInfoBo.class, crit));
60 }
61
62 @Override
63 public List<ServiceInfoBo> getAllServiceInfos() {
64 Criteria crit = new Criteria();
65 return (List<ServiceInfoBo>)getPersistenceBrokerTemplate().getCollectionByQuery(new QueryByCriteria(ServiceInfoBo.class, crit));
66 }
67
68 @Override
69 public List<ServiceInfoBo> getAllServiceInfosForInstance(String instanceId) {
70 Criteria crit = new Criteria();
71 crit.addEqualTo("instanceId", instanceId);
72 return (List<ServiceInfoBo>)getPersistenceBrokerTemplate().getCollectionByQuery(new QueryByCriteria(ServiceInfoBo.class, crit));
73 }
74
75 @Override
76 public List<ServiceInfoBo> getAllServiceInfosForApplication(String applicationId) {
77 Criteria crit = new Criteria();
78 crit.addEqualTo("applicationId", applicationId);
79 return (List<ServiceInfoBo>)getPersistenceBrokerTemplate().getCollectionByQuery(new QueryByCriteria(ServiceInfoBo.class, crit));
80 }
81
82 @Override
83 public ServiceDescriptorBo getServiceDescriptor(String serviceDescriptorId) {
84 Criteria crit = new Criteria();
85 crit.addEqualTo("id", serviceDescriptorId);
86 return (ServiceDescriptorBo)getPersistenceBrokerTemplate().getObjectByQuery(new QueryByCriteria(ServiceDescriptorBo.class, crit));
87 }
88
89 @Override
90 public ServiceDescriptorBo saveServiceDescriptor(ServiceDescriptorBo serviceDescriptor) {
91 getPersistenceBrokerTemplate().store(serviceDescriptor);
92 return serviceDescriptor;
93 }
94
95 @Override
96 public ServiceInfoBo saveServiceInfo(ServiceInfoBo serviceInfo) {
97 getPersistenceBrokerTemplate().store(serviceInfo);
98 return serviceInfo;
99 }
100
101 @Override
102 public void removeServiceInfo(String serviceId) {
103 Criteria crit = new Criteria();
104 crit.addEqualTo("serviceId", serviceId);
105 getPersistenceBrokerTemplate().deleteByQuery(new QueryByCriteria(ServiceInfoBo.class, crit));
106 }
107
108 @Override
109 public void removeServiceDescriptor(String serviceDescriptorId) {
110 Criteria crit = new Criteria();
111 crit.addEqualTo("id", serviceDescriptorId);
112 getPersistenceBrokerTemplate().deleteByQuery(new QueryByCriteria(ServiceDescriptorBo.class, crit));
113 }
114
115 @Override
116 public boolean updateStatus(String serviceId, String statusCode) {
117 ServiceInfoBo serviceInfoBo = getServiceInfo(serviceId);
118 if (serviceInfoBo == null) {
119 return false;
120 }
121 serviceInfoBo.setStatusCode(statusCode);
122 saveServiceInfo(serviceInfoBo);
123 return true;
124 }
125
126 private static final String UPDATE_STATUS_FOR_INSTANCE_ID = "update KRSB_SVC_DEF_T set STAT_CD=? where INSTN_ID=?";
127 @Override
128 public void updateStatusForInstanceId(final String instanceId, final String statusCode) {
129 getPersistenceBrokerTemplate().execute(new PersistenceBrokerCallback() {
130 @Override
131 public Object doInPersistenceBroker(PersistenceBroker broker) {
132 PreparedStatement preparedStatement = null;
133 try {
134 Connection connection = broker.serviceConnectionManager().getConnection();
135 preparedStatement = connection.prepareStatement(UPDATE_STATUS_FOR_INSTANCE_ID);
136 preparedStatement.setString(1, statusCode);
137 preparedStatement.setString(2, instanceId);
138 preparedStatement.executeUpdate();
139 } catch (Exception e) {
140 throw new RuntimeException("Failed to update status for instance id", e);
141 } finally {
142 if (preparedStatement != null) {
143 try {
144 preparedStatement.close();
145 } catch (SQLException e) {}
146 }
147 }
148 return null;
149 }
150 });
151 }
152
153 }