View Javadoc

1   /*
2    * Copyright 2011 The Kuali Foundation
3    *
4    * Licensed under the Educational Community License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may	obtain a copy of the License at
7    *
8    * 	http://www.osedu.org/licenses/ECL-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.kuali.student.ui.admin.atp;
17  
18  
19  import java.util.ArrayList;
20  import java.util.List;
21  import java.util.Map;
22  import javax.xml.namespace.QName;
23  import org.apache.log4j.Logger;
24  import org.kuali.rice.core.api.criteria.Predicate;
25  import org.kuali.rice.core.api.criteria.PredicateFactory;
26  import org.kuali.rice.core.api.criteria.QueryByCriteria;
27  import org.kuali.rice.core.api.resourceloader.GlobalResourceLoader;
28  import org.kuali.rice.krad.lookup.LookupableImpl;
29  import org.kuali.rice.krad.web.form.LookupForm;
30  import org.kuali.student.common.util.ContextBuilder;
31  import org.kuali.student.r2.common.dto.ContextInfo;
32  import org.kuali.student.r2.core.atp.dto.MilestoneInfo;
33  import org.kuali.student.r2.core.atp.service.AtpService;
34  import org.kuali.student.r2.core.constants.AtpServiceConstants;
35  
36  
37  public class MilestoneInfoAdminLookupableImpl extends LookupableImpl
38  {
39  	private static final Logger LOG = Logger.getLogger(MilestoneInfoAdminLookupableImpl.class);
40  	private transient AtpService atpService;
41      private static final long serialVersionUID = 1L;
42  	@Override
43  	protected List<MilestoneInfo> getSearchResults(LookupForm lookupForm, Map<String, String> fieldValues, boolean unbounded)
44  	{
45  		QueryByCriteria.Builder qBuilder = QueryByCriteria.Builder.create();
46  		List<Predicate> pList = new ArrayList<Predicate>();
47          //Code Changed for JIRA-8997 - SONAR Critical issues - Performance - Inefficient use of keySet iterator instead of entrySet iterator
48  		for(Map.Entry<String, String> entry: fieldValues.entrySet()) {
49              String fieldName = entry.getKey();
50              String value = entry.getValue();
51              if (value != null && !value.isEmpty())
52              {
53                  if (fieldName.equals("maxResultsToReturn"))
54                  {
55                      qBuilder.setMaxResults (Integer.parseInt(value));
56                      continue;
57                  }
58                  pList.add(PredicateFactory.equal(fieldName, value));
59              }
60          }
61  		if (!pList.isEmpty())
62  		{
63  			qBuilder.setPredicates(PredicateFactory.and(pList.toArray(new Predicate[pList.size()])));
64  		}
65  		try
66  		{
67  			List<MilestoneInfo> list = this.getAtpService().searchForMilestones(qBuilder.build(), getContextInfo());
68  			return list;
69  		}
70  		catch (Exception ex) {
71  		    throw new RuntimeException(ex);
72  		}
73  	}
74  
75  	public void setAtpService(AtpService atpService)
76  	{
77  		    this.atpService = atpService;
78  	}
79  
80  	public AtpService getAtpService()
81  	{
82  		if (atpService == null)
83  		{
84  			QName qname = new QName(AtpServiceConstants.NAMESPACE,AtpServiceConstants.SERVICE_NAME_LOCAL_PART);
85  			atpService = (AtpService) GlobalResourceLoader.getService(qname);
86  		}
87  		return this.atpService;
88  	}
89  
90  	private ContextInfo getContextInfo() {
91  	    return ContextBuilder.loadContextInfo();
92  	}
93  }
94