1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.rice.krad.service.impl;
17
18 import org.apache.commons.lang.StringUtils;
19 import org.apache.log4j.Logger;
20 import org.kuali.rice.core.api.CoreApiServiceLocator;
21 import org.kuali.rice.core.api.config.ConfigurationException;
22 import org.kuali.rice.core.api.config.module.RunMode;
23 import org.kuali.rice.core.api.config.property.ConfigContext;
24 import org.kuali.rice.krad.bo.ExternalizableBusinessObject;
25 import org.kuali.rice.krad.service.BusinessObjectService;
26 import org.kuali.rice.krad.service.DataObjectMetaDataService;
27 import org.kuali.rice.krad.service.KRADServiceLocator;
28 import org.kuali.rice.krad.service.KRADServiceLocatorWeb;
29 import org.kuali.rice.krad.service.ModuleService;
30 import org.kuali.rice.krad.util.KRADConstants;
31 import org.kuali.rice.krad.util.UrlFactory;
32
33 import java.util.List;
34 import java.util.Map;
35 import java.util.Properties;
36
37
38
39
40
41
42 public class ModuleServiceBase extends RemoteModuleServiceBase implements ModuleService {
43
44 protected static final Logger LOG = Logger.getLogger(ModuleServiceBase.class);
45
46 protected BusinessObjectService businessObjectService;
47 protected DataObjectMetaDataService dataObjectMetaDataService;
48
49
50
51
52 public <T extends ExternalizableBusinessObject> T getExternalizableBusinessObject(Class<T> businessObjectClass,
53 Map<String, Object> fieldValues) {
54 Class<? extends ExternalizableBusinessObject> implementationClass =
55 getExternalizableBusinessObjectImplementation(businessObjectClass);
56 ExternalizableBusinessObject businessObject =
57 (ExternalizableBusinessObject) getBusinessObjectService().findByPrimaryKey(implementationClass,
58 fieldValues);
59 return (T) businessObject;
60 }
61
62
63
64
65 public <T extends ExternalizableBusinessObject> List<T> getExternalizableBusinessObjectsList(
66 Class<T> externalizableBusinessObjectClass, Map<String, Object> fieldValues) {
67 Class<? extends ExternalizableBusinessObject> implementationClass =
68 getExternalizableBusinessObjectImplementation(externalizableBusinessObjectClass);
69 return (List<T>) getBusinessObjectService().findMatching(implementationClass, fieldValues);
70 }
71
72
73
74 @Deprecated
75 public String getExternalizableBusinessObjectInquiryUrl(Class inquiryBusinessObjectClass,
76 Map<String, String[]> parameters) {
77 if (!isExternalizable(inquiryBusinessObjectClass)) {
78 return KRADConstants.EMPTY_STRING;
79 }
80 String businessObjectClassAttribute;
81
82 Class implementationClass = getExternalizableBusinessObjectImplementation(inquiryBusinessObjectClass);
83 if (implementationClass == null) {
84 LOG.error("Can't find ExternalizableBusinessObject implementation class for " + inquiryBusinessObjectClass
85 .getName());
86 throw new RuntimeException("Can't find ExternalizableBusinessObject implementation class for interface "
87 + inquiryBusinessObjectClass.getName());
88 }
89 businessObjectClassAttribute = implementationClass.getName();
90 return UrlFactory.parameterizeUrl(getInquiryUrl(inquiryBusinessObjectClass), getUrlParameters(
91 businessObjectClassAttribute, parameters));
92 }
93
94 @Deprecated
95 @Override
96 protected String getInquiryUrl(Class inquiryBusinessObjectClass) {
97
98 String riceBaseUrl = "";
99 String potentialUrlAddition = "";
100
101 if (goToCentralRiceForInquiry()) {
102 riceBaseUrl = CoreApiServiceLocator.getKualiConfigurationService().getPropertyValueAsString(KRADConstants.KUALI_RICE_URL_KEY);
103 } else {
104 riceBaseUrl = CoreApiServiceLocator.getKualiConfigurationService().getPropertyValueAsString(KRADConstants.APPLICATION_URL_KEY);
105 potentialUrlAddition = "kr/";
106 }
107
108 String inquiryUrl = riceBaseUrl;
109 if (!inquiryUrl.endsWith("/")) {
110 inquiryUrl = inquiryUrl + "/";
111 }
112 return inquiryUrl + potentialUrlAddition + KRADConstants.INQUIRY_ACTION;
113 }
114
115 @Override
116 public boolean isExternalizableBusinessObjectLookupable(Class boClass) {
117 return getDataObjectMetaDataService().hasLocalLookup(boClass);
118 }
119
120 @Override
121 public boolean isExternalizableBusinessObjectInquirable(Class boClass) {
122 return getDataObjectMetaDataService().hasLocalInquiry(boClass);
123 }
124
125
126
127
128
129
130
131 @Deprecated
132 @Override
133 public String getExternalizableBusinessObjectLookupUrl(Class inquiryBusinessObjectClass,
134 Map<String, String> parameters) {
135 Properties urlParameters = new Properties();
136
137 String riceBaseUrl = "";
138 String potentialUrlAddition = "";
139
140 if (goToCentralRiceForInquiry()) {
141 riceBaseUrl = CoreApiServiceLocator.getKualiConfigurationService().getPropertyValueAsString(KRADConstants.KUALI_RICE_URL_KEY);
142 } else {
143 riceBaseUrl = CoreApiServiceLocator.getKualiConfigurationService().getPropertyValueAsString(KRADConstants.APPLICATION_URL_KEY);
144 potentialUrlAddition = "kr/";
145 }
146
147 String lookupUrl = riceBaseUrl;
148 if (!lookupUrl.endsWith("/")) {
149 lookupUrl = lookupUrl + "/";
150 }
151
152 if (parameters.containsKey(KRADConstants.MULTIPLE_VALUE)) {
153 lookupUrl = lookupUrl + potentialUrlAddition + KRADConstants.MULTIPLE_VALUE_LOOKUP_ACTION;
154 }
155 else {
156 lookupUrl = lookupUrl + potentialUrlAddition + KRADConstants.LOOKUP_ACTION;
157 }
158
159 for (String paramName : parameters.keySet()) {
160 urlParameters.put(paramName, parameters.get(paramName));
161 }
162
163
164
165 Class clazz = getExternalizableBusinessObjectImplementation(inquiryBusinessObjectClass);
166
167
168
169 urlParameters.put(KRADConstants.BUSINESS_OBJECT_CLASS_ATTRIBUTE, clazz == null ? "" : clazz.getName());
170
171 return UrlFactory.parameterizeUrl(lookupUrl, urlParameters);
172 }
173
174 public boolean goToCentralRiceForInquiry() {
175 return false;
176 }
177
178
179
180
181
182
183 @Override
184 protected String getBaseLookupUrl() {
185 if (goToCentralRiceForInquiry()) {
186 return BaseLookupUrlsHolder.remoteKradBaseLookupUrl;
187 } else {
188 return BaseLookupUrlsHolder.localKradBaseLookupUrl;
189 }
190 }
191
192 protected RunMode getRunMode(String module) {
193 String propertyName = module + ".mode";
194 String runMode = ConfigContext.getCurrentContextConfig().getProperty(propertyName);
195 if (StringUtils.isBlank(runMode)) {
196 throw new ConfigurationException("Failed to determine run mode for module '" + module + "'. Please be sure to set configuration parameter '" + propertyName + "'");
197 }
198 return RunMode.valueOf(runMode.toUpperCase());
199 }
200
201 protected DataObjectMetaDataService getDataObjectMetaDataService() {
202 if (dataObjectMetaDataService == null) {
203 dataObjectMetaDataService = KRADServiceLocatorWeb.getDataObjectMetaDataService();
204 }
205
206 return dataObjectMetaDataService;
207 }
208
209 public void setDataObjectMetaDataService(DataObjectMetaDataService dataObjectMetaDataService) {
210 this.dataObjectMetaDataService = dataObjectMetaDataService;
211 }
212
213 protected BusinessObjectService getBusinessObjectService() {
214 if (businessObjectService == null) {
215 businessObjectService = KRADServiceLocator.getBusinessObjectService();
216 }
217
218 return businessObjectService;
219 }
220
221 public void setBusinessObjectService(BusinessObjectService businessObjectService) {
222 this.businessObjectService = businessObjectService;
223 }
224 }
225