1 package org.kuali.ole.batch.keyvalue;
2
3 import org.apache.commons.lang.StringUtils;
4 import org.kuali.ole.OLEConstants;
5 import org.kuali.ole.batch.bo.OLEBatchProcessProfileConstantsBo;
6 import org.kuali.ole.coa.businessobject.Account;
7 import org.kuali.ole.coa.businessobject.Chart;
8 import org.kuali.ole.coa.businessobject.ObjectCode;
9 import org.kuali.ole.coa.businessobject.Organization;
10 import org.kuali.ole.describe.bo.OleItemAvailableStatus;
11 import org.kuali.ole.describe.bo.OleLocation;
12 import org.kuali.ole.describe.bo.OleLocationLevel;
13 import org.kuali.ole.module.purap.businessobject.FundingSource;
14 import org.kuali.ole.module.purap.businessobject.PurchaseOrderTransmissionMethod;
15 import org.kuali.ole.module.purap.businessobject.PurchaseOrderType;
16 import org.kuali.ole.module.purap.businessobject.PurchaseOrderVendorChoice;
17 import org.kuali.ole.select.businessobject.OLERequestorPatronDocument;
18 import org.kuali.ole.select.businessobject.OleRequestSourceType;
19 import org.kuali.ole.select.document.service.OleSelectDocumentService;
20 import org.kuali.ole.sys.businessobject.Building;
21 import org.kuali.ole.sys.businessobject.Room;
22 import org.kuali.ole.sys.context.SpringContext;
23 import org.kuali.ole.vnd.businessobject.*;
24 import org.kuali.rice.core.api.util.ConcreteKeyValue;
25 import org.kuali.rice.core.api.util.KeyValue;
26 import org.kuali.rice.coreservice.api.CoreServiceApiServiceLocator;
27 import org.kuali.rice.coreservice.api.parameter.Parameter;
28 import org.kuali.rice.coreservice.api.parameter.ParameterKey;
29 import org.kuali.rice.kim.impl.identity.principal.PrincipalBo;
30 import org.kuali.rice.krad.service.BusinessObjectService;
31 import org.kuali.rice.krad.service.KRADServiceLocator;
32 import org.kuali.rice.krad.service.KeyValuesService;
33 import org.kuali.rice.krad.uif.control.UifKeyValuesFinderBase;
34 import org.kuali.rice.krad.uif.view.ViewModel;
35 import org.kuali.rice.krad.web.form.MaintenanceDocumentForm;
36 import org.springframework.util.CollectionUtils;
37
38 import java.util.*;
39
40
41
42
43
44
45
46
47 public class OLEBatchProcessOrderImportValuesFinder extends UifKeyValuesFinderBase {
48
49 private BusinessObjectService businessObjectService;
50 private OleSelectDocumentService oleSelectDocumentService;
51
52 public BusinessObjectService getBusinessObjectService() {
53 if(businessObjectService==null)
54 businessObjectService = KRADServiceLocator.getBusinessObjectService();
55 return businessObjectService;
56 }
57
58 public OleSelectDocumentService getOleSelectDocumentService() {
59 if (oleSelectDocumentService == null) {
60 oleSelectDocumentService = SpringContext.getBean(OleSelectDocumentService.class);
61 }
62 return oleSelectDocumentService;
63 }
64
65 @Override
66 public List<KeyValue> getKeyValues(ViewModel model) {
67 List<KeyValue> keyValues = new ArrayList<KeyValue>();
68 MaintenanceDocumentForm maintenanceForm = (MaintenanceDocumentForm) model;
69 OLEBatchProcessProfileConstantsBo oleBatchProcessProfileConstantsBo = null;
70 if (!CollectionUtils.isEmpty(maintenanceForm.getNewCollectionLines())) {
71 oleBatchProcessProfileConstantsBo = (OLEBatchProcessProfileConstantsBo) maintenanceForm.getNewCollectionLines().get("document.newMaintainableObject.dataObject.oleBatchProcessProfileConstantsList");
72 }
73 if (oleBatchProcessProfileConstantsBo != null) {
74 String dataType = oleBatchProcessProfileConstantsBo.getDataType();
75 if (StringUtils.isNotBlank(dataType)) {
76 String attributeName = oleBatchProcessProfileConstantsBo.getAttributeName();
77 String oldAttributeName = oleBatchProcessProfileConstantsBo.getOldAttributeName();
78 if(!StringUtils.isBlank(attributeName)){
79 if(oldAttributeName == null || !attributeName.equalsIgnoreCase(oldAttributeName)){
80 oleBatchProcessProfileConstantsBo.setOldAttributeName(attributeName);
81 if (dataType.equalsIgnoreCase(OLEConstants.OLEBatchProcess.ORDER_IMPORT)) {
82 if(attributeName.equalsIgnoreCase(OLEConstants.OLEBatchProcess.CHART_CODE)){
83 List<Organization> chartCodeList = (List<Organization>) KRADServiceLocator.getBusinessObjectService().findAll(Organization.class);
84 if(chartCodeList != null && chartCodeList.size()>0){
85 Set<KeyValue> chartCodes = new HashSet<>();
86 for(Organization chartCode : chartCodeList) {
87 chartCodes.add(new ConcreteKeyValue(chartCode.getChartOfAccountsCode(), chartCode.getChartOfAccountsCode()));
88 }
89 keyValues.addAll(chartCodes);
90 }
91 }
92 else if(attributeName.equalsIgnoreCase(OLEConstants.OLEBatchProcess.ITEM_CHART_CODE)){
93 List<Chart> itemChartCodeList = (List<Chart>) KRADServiceLocator.getBusinessObjectService().findAll(Chart.class);
94 for (Chart itemChartCode : itemChartCodeList) {
95 keyValues.add(new ConcreteKeyValue(itemChartCode.getChartOfAccountsCode(), itemChartCode.getChartOfAccountsCode()));
96 }
97 }
98 else if(attributeName.equalsIgnoreCase(OLEConstants.OLEBatchProcess.ORG_CODE)){
99 List<Organization> organizationCodeList = (List<Organization>) KRADServiceLocator.getBusinessObjectService().findAll(Organization.class);
100 if(organizationCodeList != null && organizationCodeList.size() >0){
101 Set<KeyValue> orgCodes = new HashSet<>();
102 for (Organization organizationCode : organizationCodeList) {
103 orgCodes.add(new ConcreteKeyValue(organizationCode.getOrganizationCode(), organizationCode.getOrganizationCode()));
104 }
105 keyValues.addAll(orgCodes);
106 }
107 }
108 else if(attributeName.equalsIgnoreCase(OLEConstants.OLEBatchProcess.CONTRACT_MANAGER)){
109 List<ContractManager> contractManagerList = (List<ContractManager>) KRADServiceLocator.getBusinessObjectService().findAll(ContractManager.class);
110 for (ContractManager contractManager : contractManagerList) {
111 keyValues.add(new ConcreteKeyValue(contractManager.getContractManagerName(), contractManager.getContractManagerName()));
112 }
113 }
114 else if(attributeName.equalsIgnoreCase(OLEConstants.OLEBatchProcess.ORDER_TYPE)){
115 List<PurchaseOrderType> purchaseOrderTypeList = (List<PurchaseOrderType>) KRADServiceLocator.getBusinessObjectService().findAll(PurchaseOrderType.class);
116 for (PurchaseOrderType purchaseOrderType : purchaseOrderTypeList) {
117 keyValues.add(new ConcreteKeyValue(purchaseOrderType.getPurchaseOrderType(), purchaseOrderType.getPurchaseOrderType()));
118 }
119 }
120 else if(attributeName.equalsIgnoreCase(OLEConstants.OLEBatchProcess.FUNDING_SOURCE)){
121 List<FundingSource> fundingSourceList = (List<FundingSource>) KRADServiceLocator.getBusinessObjectService().findAll(FundingSource.class);
122 for (FundingSource fundingSource : fundingSourceList) {
123 keyValues.add(new ConcreteKeyValue(fundingSource.getFundingSourceCode(), fundingSource.getFundingSourceCode()));
124 }
125 }
126 else if(attributeName.equalsIgnoreCase(OLEConstants.OLEBatchProcess.DELIVERY_CAMPUS_CODE)){
127 List<Building> campusList = (List<Building>) KRADServiceLocator.getBusinessObjectService().findAll(Building.class);
128 if(campusList != null && campusList.size() >0){
129 Set<KeyValue> chartCodes = new HashSet<>();
130 for (Building campus : campusList) {
131 chartCodes.add(new ConcreteKeyValue(campus.getCampusCode(), campus.getCampusCode()));
132 }
133 keyValues.addAll(chartCodes);
134 }
135 }
136 else if(attributeName.equalsIgnoreCase(OLEConstants.OLEBatchProcess.BUILDING_CODE)){
137 List<Building> buildingList = (List<Building>) KRADServiceLocator.getBusinessObjectService().findAll(Building.class);
138 for (Building building : buildingList) {
139 keyValues.add(new ConcreteKeyValue(building.getBuildingCode(), building.getBuildingCode()));
140 }
141 }
142 else if(attributeName.equalsIgnoreCase(OLEConstants.OLEBatchProcess.DELIVERY_BUILDING_ROOM_NUMBER)){
143 List<Room> roomList = (List<Room>) KRADServiceLocator.getBusinessObjectService().findAll(Room.class);
144 if (roomList!=null && roomList.size()>0) {
145 Set<KeyValue> roomNos = new HashSet<>();
146 for (Room room : roomList) {
147 roomNos.add(new ConcreteKeyValue(room.getBuildingRoomNumber(),room.getBuildingRoomNumber()));
148 }
149 keyValues.addAll(roomNos);
150 }
151 }
152 else if(attributeName.equalsIgnoreCase(OLEConstants.OLEBatchProcess.VENDOR_CHOICE)){
153 List<PurchaseOrderVendorChoice> purchaseOrderVendorChoiceList = (List<PurchaseOrderVendorChoice>) KRADServiceLocator.getBusinessObjectService().findAll(PurchaseOrderVendorChoice.class);
154 for (PurchaseOrderVendorChoice purchaseOrderVendorChoice : purchaseOrderVendorChoiceList) {
155 keyValues.add(new ConcreteKeyValue(purchaseOrderVendorChoice.getPurchaseOrderVendorChoiceCode(), purchaseOrderVendorChoice.getPurchaseOrderVendorChoiceCode()));
156 }
157 }
158 else if(attributeName.equalsIgnoreCase(OLEConstants.OLEBatchProcess.COST_SOURCE)){
159 List<PurchaseOrderCostSource> purchaseOrderCostSourceList = (List<PurchaseOrderCostSource>) KRADServiceLocator.getBusinessObjectService().findAll(PurchaseOrderCostSource.class);
160 for (PurchaseOrderCostSource purchaseOrderCostSource : purchaseOrderCostSourceList) {
161 keyValues.add(new ConcreteKeyValue(purchaseOrderCostSource.getPurchaseOrderCostSourceCode(), purchaseOrderCostSource.getPurchaseOrderCostSourceCode()));
162 }
163 }
164 else if(attributeName.equalsIgnoreCase(OLEConstants.OLEBatchProcess.DEFAULT_LOCATION)){
165 List<String> locationList = getItemLocation();
166 for(int locationCount = 0;locationCount < locationList.size();locationCount++) {
167 keyValues.add(new ConcreteKeyValue(locationList.get(locationCount),locationList.get(locationCount)));
168 }
169 }
170 else if(attributeName.equalsIgnoreCase(OLEConstants.OLEBatchProcess.VENDOR_NUMBER)){
171 List<VendorDetail> vendorDetailList = (List<VendorDetail>) KRADServiceLocator.getBusinessObjectService().findAll(VendorDetail.class);
172 for (VendorDetail vendorDetail : vendorDetailList) {
173 keyValues.add(new ConcreteKeyValue(vendorDetail.getVendorHeaderGeneratedIdentifier() + "-" + vendorDetail.getVendorDetailAssignedIdentifier(), vendorDetail.getVendorHeaderGeneratedIdentifier() + "-" + vendorDetail.getVendorDetailAssignedIdentifier()));
174 }
175 }
176 else if(attributeName.equalsIgnoreCase(OLEConstants.OLEBatchProcess.VENDOR_CUST_NBR)){
177 List<VendorCustomerNumber> vendorCustomerList = (List<VendorCustomerNumber>) KRADServiceLocator.getBusinessObjectService().findAll(VendorCustomerNumber.class);
178 for (VendorCustomerNumber vendorCustomer : vendorCustomerList) {
179 keyValues.add(new ConcreteKeyValue(vendorCustomer.getVendorCustomerNumber(), vendorCustomer.getVendorCustomerNumber()));
180 }
181 }
182 else if(attributeName.equalsIgnoreCase(OLEConstants.OLEBatchProcess.REQUESTOR_NAME)){
183 List<OLERequestorPatronDocument> olePatronDocumentList = getOleSelectDocumentService().getPatronDocumentListFromWebService();
184 if(olePatronDocumentList != null && olePatronDocumentList.size()>0){
185 for(int recCount = 0;recCount < olePatronDocumentList.size();recCount++) {
186 keyValues.add(new ConcreteKeyValue(olePatronDocumentList.get(recCount).getLastName() + ", " + olePatronDocumentList.get(recCount).getFirstName(),olePatronDocumentList.get(recCount).getLastName() + ", " + olePatronDocumentList.get(recCount).getFirstName()));
187 }
188 }
189 }
190 else if(attributeName.equalsIgnoreCase(OLEConstants.OLEBatchProcess.ITEM_STATUS)){
191 List<KeyValue> itemStatusList = getItemStatus();
192 for(int itemStatusCount = 0; itemStatusCount < itemStatusList.size(); itemStatusCount++){
193 keyValues.add(new ConcreteKeyValue(itemStatusList.get(itemStatusCount).getKey(),itemStatusList.get(itemStatusCount).getKey()));
194 }
195 }
196 else if(attributeName.equalsIgnoreCase(OLEConstants.OLEBatchProcess.DISCOUNT_TYPE)){
197 keyValues.add(new ConcreteKeyValue("%", "%"));
198 keyValues.add(new ConcreteKeyValue("#", "#"));
199 }
200 else if(attributeName.equalsIgnoreCase(OLEConstants.OLEBatchProcess.ACCOUNT_NUMBER)){
201 List<Account> accountNumberList = (List<Account>) KRADServiceLocator.getBusinessObjectService().findAll(Account.class);
202 for (Account account : accountNumberList) {
203 keyValues.add(new ConcreteKeyValue(account.getAccountNumber(), account.getAccountNumber()));
204 }
205 }
206 else if(attributeName.equalsIgnoreCase(OLEConstants.OLEBatchProcess.OBJECT_CODE)){
207 List<ObjectCode> objectCodeList = (List<ObjectCode>) KRADServiceLocator.getBusinessObjectService().findAll(ObjectCode.class);
208 if(objectCodeList != null && objectCodeList.size() >0){
209 Set<KeyValue> objectCodes = new HashSet<>();
210 for (ObjectCode objectCode : objectCodeList) {
211 objectCodes.add(new ConcreteKeyValue(objectCode.getFinancialObjectCode(), objectCode.getFinancialObjectCode()));
212 }
213 keyValues.addAll(objectCodes);
214 }
215 }
216 else if(attributeName.equalsIgnoreCase(OLEConstants.OLEBatchProcess.REQUEST_SRC)){
217 List<OleRequestSourceType> requestSourceTypeList = (List<OleRequestSourceType>) KRADServiceLocator.getBusinessObjectService().findAll(OleRequestSourceType.class);
218 for (OleRequestSourceType requestSourceType : requestSourceTypeList) {
219 keyValues.add(new ConcreteKeyValue(requestSourceType.getRequestSourceType(),requestSourceType.getRequestSourceType()));
220 }
221 }
222 else if(attributeName.equalsIgnoreCase(OLEConstants.OLEBatchProcess.ASSIGN_TO_USER)){
223 List<PrincipalBo> assignedUserList = (List<PrincipalBo>) KRADServiceLocator.getBusinessObjectService().findAll(PrincipalBo.class);
224 for (PrincipalBo assignedUser : assignedUserList) {
225 keyValues.add(new ConcreteKeyValue(assignedUser.getPrincipalName(), assignedUser.getPrincipalName()));
226 }
227 }
228 else if(attributeName.equalsIgnoreCase(OLEConstants.OLEBatchProcess.METHOD_OF_PO_TRANSMISSION)){
229 KeyValuesService boService = SpringContext.getBean(KeyValuesService.class);
230 List<PurchaseOrderTransmissionMethod> transmissionMethodList = (List<PurchaseOrderTransmissionMethod>) boService.findAll(PurchaseOrderTransmissionMethod.class);
231 for (PurchaseOrderTransmissionMethod transmissionMethod : transmissionMethodList) {
232 if(transmissionMethod.isDisplayToUser()){
233 keyValues.add(new ConcreteKeyValue(transmissionMethod.getPurchaseOrderTransmissionMethodDescription(), transmissionMethod.getPurchaseOrderTransmissionMethodDescription()));
234 }
235 }
236 }
237 else if(attributeName.equalsIgnoreCase(OLEConstants.OLEBatchProcess.RECEIVING_REQUIRED) ||
238 attributeName.equalsIgnoreCase(OLEConstants.OLEBatchProcess.USE_TAX_INDICATOR) ||
239 attributeName.equalsIgnoreCase(OLEConstants.OLEBatchProcess.PREQ_POSITIVE_APPROVAL_REQ) ||
240 attributeName.equalsIgnoreCase(OLEConstants.OLEBatchProcess.PO_CONFIRMATION_INDICATOR) ||
241 attributeName.equalsIgnoreCase(OLEConstants.OLEBatchProcess.ROUTE_TO_REQUESTOR)){
242 keyValues.add(new ConcreteKeyValue(OLEConstants.OLEBatchProcess.TRUE,OLEConstants.OLEBatchProcess.TRUE));
243 keyValues.add(new ConcreteKeyValue(OLEConstants.OLEBatchProcess.FALSE,OLEConstants.OLEBatchProcess.FALSE));
244 }
245 }
246 else if (dataType.equalsIgnoreCase(OLEConstants.OLEBatchProcess.INVOICE_IMPORT)) {
247 if(attributeName.equalsIgnoreCase(OLEConstants.OLEBatchProcess.ACCOUNT_NUMBER)){
248 List<Account> accountNumberList = (List<Account>) KRADServiceLocator.getBusinessObjectService().findAll(Account.class);
249 for (Account account : accountNumberList) {
250 keyValues.add(new ConcreteKeyValue(account.getAccountNumber(), account.getAccountNumber()));
251 }
252 }
253 else if(attributeName.equalsIgnoreCase(OLEConstants.OLEBatchProcess.OBJECT_CODE)){
254 List<ObjectCode> objectCodeList = (List<ObjectCode>) KRADServiceLocator.getBusinessObjectService().findAll(ObjectCode.class);
255 if(objectCodeList != null && objectCodeList.size() >0){
256 Set<KeyValue> objectCodes = new HashSet<>();
257 for (ObjectCode objectCode : objectCodeList) {
258 objectCodes.add(new ConcreteKeyValue(objectCode.getFinancialObjectCode(), objectCode.getFinancialObjectCode()));
259 }
260 keyValues.addAll(objectCodes);
261 }
262 }
263 else if(attributeName.equalsIgnoreCase(OLEConstants.OLEBatchProcess.VENDOR_NUMBER)){
264 List<VendorDetail> vendorDetailList = (List<VendorDetail>) KRADServiceLocator.getBusinessObjectService().findAll(VendorDetail.class);
265 for (VendorDetail vendorDetail : vendorDetailList) {
266 keyValues.add(new ConcreteKeyValue(vendorDetail.getVendorHeaderGeneratedIdentifier() + "-" + vendorDetail.getVendorDetailAssignedIdentifier(), vendorDetail.getVendorHeaderGeneratedIdentifier() + "-" + vendorDetail.getVendorDetailAssignedIdentifier()));
267 }
268 }
269 else if(attributeName.equalsIgnoreCase(OLEConstants.OLEBatchProcess.CURRENCY_TYPE)){
270 List<OleCurrencyType> currencyTypeList = (List<OleCurrencyType>) KRADServiceLocator.getBusinessObjectService().findAll(OleCurrencyType.class);
271 for (OleCurrencyType currencyType : currencyTypeList) {
272 keyValues.add(new ConcreteKeyValue(currencyType.getCurrencyType(), currencyType.getCurrencyType()));
273 }
274 }
275 }
276 }
277 }
278 }
279 Collections.sort(keyValues, new Comparator<KeyValue>() {
280 public int compare(KeyValue keyValue1, KeyValue keyValue2) {
281 return keyValue1.getValue().compareTo(keyValue2.getValue());
282
283 }
284 });
285 }
286 return keyValues;
287 }
288
289 public List<String> getItemLocation() {
290 List<String> locationList = new ArrayList<String>();
291 List<KeyValue> options = new ArrayList<KeyValue>();
292 Map parentCriteria1 = new HashMap();
293 parentCriteria1.put(OLEConstants.OLEBatchProcess.LEVEL_CODE, OLEConstants.LOC_LEVEL_SHELVING);
294 List<OleLocationLevel> oleLocationLevel = (List<OleLocationLevel>) getBusinessObjectService().findMatching(OleLocationLevel.class, parentCriteria1);
295 String shelvingId = oleLocationLevel.get(0).getLevelId();
296 Map parentCriteria = new HashMap();
297 parentCriteria.put(OLEConstants.LEVEL_ID, shelvingId);
298 Collection<OleLocation> oleLocationCollection = getBusinessObjectService().findMatching(OleLocation.class, parentCriteria);
299 for (OleLocation oleLocation : oleLocationCollection) {
300 String locationName = oleLocation.getLocationName();
301 String levelCode = oleLocation.getLocationCode();
302 boolean parentId = oleLocation.getParentLocationId() != null ? true : false;
303 while (parentId) {
304 Map criteriaMap = new HashMap();
305 criteriaMap.put(OLEConstants.LOCATION_ID, oleLocation.getParentLocationId());
306 OleLocation location = getBusinessObjectService().findByPrimaryKey(OleLocation.class,
307 criteriaMap);
308 if (locationName != null) {
309 locationName = location.getLocationName() + OLEConstants.SLASH + locationName;
310 }
311 if (levelCode != null) {
312 levelCode = location.getLocationCode() + OLEConstants.SLASH + levelCode;
313 }
314 parentId = location.getParentLocationId() != null ? true : false;
315 oleLocation = location;
316 }
317 options.add(new ConcreteKeyValue(levelCode, levelCode));
318 }
319 Map<String, String> map = new HashMap<String, String>();
320 for (KeyValue option : options) {
321 map.put(option.getKey(), option.getValue());
322 }
323 Map<String, Object> map1 = sortByLocation(map);
324 for (Map.Entry<String, Object> entry : map1.entrySet()) {
325 locationList.add((String) entry.getValue());
326 }
327 return locationList;
328 }
329 private Map<String, Object> sortByLocation(Map<String, String> parentCriteria) {
330 Map<String, Object> map = new LinkedHashMap<String, Object>();
331 List<String> keyList = new ArrayList<String>(parentCriteria.keySet());
332 List<String> valueList = new ArrayList<String>(parentCriteria.values());
333 Set<String> sortedSet = new TreeSet<String>(valueList);
334 Object[] sortedArray = sortedSet.toArray();
335 int size = sortedArray.length;
336 for (int i = 0; i < size; i++) {
337 map.put(keyList.get(valueList.indexOf(sortedArray[i])), sortedArray[i]);
338 }
339 return map;
340 }
341
342 public List<KeyValue> getItemStatus() {
343
344 List<KeyValue> options = new ArrayList<KeyValue>();
345 Collection<OleItemAvailableStatus> oleItemAvailableStatuses = KRADServiceLocator.getBusinessObjectService().findAll(OleItemAvailableStatus.class);
346 String excludeItemStatus = getParameter(OLEConstants.EXCLUDE_ITEM_STATUS);
347 Map<String,String> map = new HashMap<>();
348 if(excludeItemStatus!=null && !excludeItemStatus.isEmpty()){
349 String[] itemStatusList = excludeItemStatus.split(",");
350 for(String itemStatus : itemStatusList){
351 map.put(itemStatus,itemStatus);
352 }
353 }
354 for (OleItemAvailableStatus type : oleItemAvailableStatuses) {
355 if (type.isActive() && !map.containsKey(type.getItemAvailableStatusCode())) {
356 options.add(new ConcreteKeyValue(type.getItemAvailableStatusCode(), type.getItemAvailableStatusName()));
357 }
358 }
359 return options;
360 }
361
362 public String getParameter(String name){
363 ParameterKey parameterKey = ParameterKey.create(OLEConstants.APPL_ID, OLEConstants.SELECT_NMSPC, OLEConstants.SELECT_CMPNT,name);
364 Parameter parameter = CoreServiceApiServiceLocator.getParameterRepositoryService().getParameter(parameterKey);
365 return parameter!=null?parameter.getValue():null;
366 }
367 }