001 package org.kuali.ole.editor.keyvalue; 002 003 import org.kuali.ole.location.bo.OleLocation; 004 import org.kuali.ole.location.bo.OleLocationLevel; 005 import org.kuali.rice.core.api.util.ConcreteKeyValue; 006 import org.kuali.rice.core.api.util.KeyValue; 007 import org.kuali.rice.krad.keyvalues.KeyValuesBase; 008 import org.kuali.rice.krad.service.BusinessObjectService; 009 import org.kuali.rice.krad.service.KRADServiceLocator; 010 011 import java.util.*; 012 013 /** 014 * LocationValuesBuilder used to render the values for LocationValuesBuilder dropdown control. 015 */ 016 public class LocationValuesBuilder extends KeyValuesBase { 017 /** 018 * This method returns the List of ConcreteKeyValue, 019 * ConcreteKeyValue has two arguments LevelCode and 020 * LocationName. 021 * @return List<KeyValue> 022 */ 023 @Override 024 public List<KeyValue> getKeyValues() { 025 List<KeyValue> options = new ArrayList<KeyValue>(); 026 BusinessObjectService businessObjectService = KRADServiceLocator.getBusinessObjectService(); 027 028 Map parentCriteria1 = new HashMap(); 029 parentCriteria1.put("levelCode", "SHELVING"); 030 List<OleLocationLevel> oleLocationLevel = (List<OleLocationLevel>) businessObjectService.findMatching(OleLocationLevel.class, parentCriteria1); 031 String shelvingId = oleLocationLevel.get(0).getLevelId(); 032 options.add(new ConcreteKeyValue("", "")); 033 Map parentCriteria = new HashMap(); 034 parentCriteria.put("levelId", shelvingId); 035 Collection<OleLocation> oleLocationCollection = businessObjectService.findMatching(OleLocation.class, parentCriteria); 036 for (OleLocation oleLocation : oleLocationCollection) { 037 String locationName = oleLocation.getLocationName(); 038 String levelId = oleLocation.getLevelId(); 039 String levelCode = oleLocation.getLocationCode(); 040 boolean parentId = oleLocation.getParentLocationId() != null ? true : false; 041 while (parentId) { 042 Map criteriaMap = new HashMap(); 043 criteriaMap.put("locationId", oleLocation.getParentLocationId()); 044 OleLocation location = businessObjectService.findByPrimaryKey(OleLocation.class, 045 criteriaMap); 046 if (locationName != null) { 047 locationName = location.getLocationName() + "/" + locationName; 048 } 049 if (levelCode != null) { 050 levelCode = location.getLocationCode() + "/" + levelCode; 051 } 052 parentId = location.getParentLocationId() != null ? true : false; 053 oleLocation = location; 054 } 055 //String key = levelCode + "|" + locationName; 056 options.add(new ConcreteKeyValue(levelCode, levelCode)); 057 } 058 return options; 059 /* 060 List<KeyValue> options = new ArrayList<KeyValue>(); 061 BusinessObjectService businessObjectService = KRADServiceLocator.getBusinessObjectService(); 062 Collection<OleLocation> oleLocationCollection = KRADServiceLocator.getBusinessObjectService().findAll(OleLocation.class); 063 options.add(new ConcreteKeyValue("", "")); 064 for (OleLocation oleLocation : oleLocationCollection) { 065 String locationName = oleLocation.getLocationName(); 066 String levelId = oleLocation.getLevelId(); 067 String levelCode = oleLocation.getLocationCode(); 068 boolean parentId = oleLocation.getParentLocationId() != null ? true : false; 069 LOG.info("level id -->"+levelId); 070 while(parentId) { 071 Map parentCriteria = new HashMap(); 072 parentCriteria.put("locationId", oleLocation.getParentLocationId()); 073 OleLocation location = businessObjectService.findByPrimaryKey(OleLocation.class, 074 parentCriteria); 075 if(locationName!= null ) { 076 locationName = location.getLocationName()+"-"+locationName; 077 } 078 if (levelCode != null ) { 079 levelCode = location.getLocationCode() + "-" + levelCode; 080 } 081 parentId = location.getParentLocationId() != null ? true : false; 082 oleLocation = location; 083 } 084 //String key = levelCode + "|" + locationName; 085 options.add(new ConcreteKeyValue(levelCode, levelCode)); 086 } 087 return options; 088 */ 089 } 090 } 091