001 package org.kuali.student.lum.common.client.widgets; 002 003 import java.util.ArrayList; 004 import java.util.Arrays; 005 import java.util.Iterator; 006 import java.util.List; 007 008 import org.kuali.student.r1.common.assembly.data.Data; 009 import org.kuali.student.r2.core.search.dto.SearchParamInfo; 010 import org.kuali.student.r2.core.search.dto.SearchRequestInfo; 011 import org.kuali.student.r2.lum.clu.dto.MembershipQueryInfo; 012 013 public class CluSetRangeModelUtil { 014 015 public static CluSetRangeModelUtil INSTANCE = new CluSetRangeModelUtil(); 016 017 private CluSetRangeModelUtil() { 018 } 019 020 public Data toData(SearchRequestInfo searchRequest, String searchRequestId) { 021 if (searchRequest == null) { 022 return null; 023 } 024 List<SearchParamInfo> searchParams = searchRequest.getParams(); 025 CluSetRangeHelper cluSetRangeHelper = CluSetRangeHelper.wrap(new Data()); 026 cluSetRangeHelper.setId(searchRequestId); 027 cluSetRangeHelper.setSearchTypeKey(searchRequest.getSearchKey()); 028 if (searchParams != null) { 029 for (SearchParamInfo searchParam : searchParams) { 030 QueryParamHelper queryParamHelper = QueryParamHelper.wrap(new Data()); 031 queryParamHelper.setValue(null); 032 queryParamHelper.setListValue(null); 033 queryParamHelper.setKey(searchParam.getKey()); 034 035 036 if (searchParam.getValues() != null) { 037 038 if (searchParam.getValues().size() == 1) { 039 queryParamHelper.setValue(searchParam.getValues().get(0)); 040 } else { 041 for (String param : searchParam.getValues()) { 042 queryParamHelper.getListValue().add(param); 043 } 044 } 045 if (cluSetRangeHelper.getQueryParams() == null) { 046 cluSetRangeHelper.setQueryParams(new Data()); 047 } 048 cluSetRangeHelper.getQueryParams().add(queryParamHelper.getData()); 049 } 050 } 051 } 052 053 return cluSetRangeHelper.getData(); 054 } 055 056 public Data toData(MembershipQueryInfo membershipQueryInfo) { 057 if (membershipQueryInfo == null) { 058 return null; 059 } 060 List<org.kuali.student.r2.core.search.dto.SearchParamInfo> searchParams = membershipQueryInfo.getQueryParamValues(); 061 CluSetRangeHelper cluSetRangeHelper = CluSetRangeHelper.wrap(new Data()); 062 cluSetRangeHelper.setId(membershipQueryInfo.getId()); 063 cluSetRangeHelper.setSearchTypeKey(membershipQueryInfo.getSearchTypeKey()); 064 if (searchParams != null) { 065 for (SearchParamInfo searchParam : searchParams) { 066 QueryParamHelper queryParamHelper = QueryParamHelper.wrap(new Data()); 067 if(searchParam.getValues() != null) { 068 if( searchParam.getValues().size() == 1){ 069 queryParamHelper.setValue(searchParam.getValues().get(0)); 070 } 071 else { 072 for(String param : searchParam.getValues()){ 073 queryParamHelper.getListValue().add(param); 074 } 075 } 076 } 077 queryParamHelper.setKey(searchParam.getKey()); 078 if (cluSetRangeHelper.getQueryParams() == null) { 079 cluSetRangeHelper.setQueryParams(new Data()); 080 } 081 cluSetRangeHelper.getQueryParams().add(queryParamHelper.getData()); 082 } 083 } 084 085 return cluSetRangeHelper.getData(); 086 } 087 088 // public SearchRequestInfo toSearchRequest(Data data) { 089 // SearchRequestInfo searchRequest = null; 090 // if (data != null) { 091 // CluSetRangeHelper cluSetRangeHelper = CluSetRangeHelper.wrap(data); 092 // Data queryParamsData = cluSetRangeHelper.getQueryParams(); 093 // searchRequest = new SearchRequestInfo(); 094 // searchRequest.setSearchKey(cluSetRangeHelper.getSearchTypeKey()); 095 // for (Data.Property p : queryParamsData) { 096 // QueryParamHelper queryParamHelper = QueryParamHelper.wrap((Data)p.getValue()); 097 // SearchParamInfo searchParam = new SearchParamInfo(); 098 // searchParam.setKey(queryParamHelper.getKey()); 099 // searchParam.setValue(queryParamHelper.getValue()); 100 // if (searchRequest.getParams() == null) { 101 // searchRequest.setParams(new ArrayList<SearchParamInfo>()); 102 // } 103 // searchRequest.getParams().add(searchParam); 104 // } 105 // } 106 // return searchRequest; 107 // } 108 109 public MembershipQueryInfo toMembershipQueryInfo(Data data) { 110 MembershipQueryInfo membershipQueryInfo = null; 111 if (data != null) { 112 CluSetRangeHelper cluSetRangeHelper = CluSetRangeHelper.wrap(data); 113 Data queryParamsData = cluSetRangeHelper.getQueryParams(); 114 membershipQueryInfo = new MembershipQueryInfo(); 115 membershipQueryInfo.setId(cluSetRangeHelper.getId()); 116 membershipQueryInfo.setSearchTypeKey(cluSetRangeHelper.getSearchTypeKey()); 117 // make sure the membershipQueryInfo has some contents in it. 118 // Return null if otherwise. 119 if (membershipQueryInfo.getSearchTypeKey() == null || 120 membershipQueryInfo.getSearchTypeKey().trim().isEmpty()) { 121 return null; 122 } 123 for (Data.Property p : queryParamsData) { 124 QueryParamHelper queryParamHelper = QueryParamHelper.wrap((Data)p.getValue()); 125 org.kuali.student.r2.core.search.dto.SearchParamInfo searchParam = new org.kuali.student.r2.core.search.dto.SearchParamInfo(); 126 searchParam.setKey(queryParamHelper.getKey()); 127 if (queryParamHelper.getValue() != null) { 128 searchParam.setValues(Arrays.asList(queryParamHelper.getValue())); 129 } 130 else 131 { 132 for (Iterator<Data.Property> propIter=(queryParamHelper.getListValue()).iterator();propIter.hasNext();) { 133 Data.Property prop = propIter.next(); 134 searchParam.getValues().add((String) prop.getValue()); 135 } 136 } 137 if (membershipQueryInfo.getQueryParamValues() == null) { 138 membershipQueryInfo.setQueryParamValues(new ArrayList<org.kuali.student.r2.core.search.dto.SearchParamInfo>()); 139 } 140 membershipQueryInfo.getQueryParamValues().add(searchParam); 141 } 142 } 143 return membershipQueryInfo; 144 } 145 146 }