001 package org.kuali.student.lum.program.server; 002 003 import java.util.ArrayList; 004 import java.util.List; 005 006 import org.apache.log4j.Logger; 007 import org.kuali.student.common.dictionary.old.dto.ObjectStructure; 008 import org.kuali.student.common.exceptions.DoesNotExistException; 009 import org.kuali.student.common.search.dto.SearchCriteriaTypeInfo; 010 import org.kuali.student.common.search.dto.SearchRequest; 011 import org.kuali.student.common.search.dto.SearchResult; 012 import org.kuali.student.common.search.dto.SearchResultTypeInfo; 013 import org.kuali.student.common.search.dto.SearchTypeInfo; 014 import org.kuali.student.common.versionmanagement.dto.VersionDisplayInfo; 015 import org.kuali.student.core.statement.dto.ReqComponentInfo; 016 import org.kuali.student.core.statement.dto.ReqComponentTypeInfo; 017 import org.kuali.student.core.statement.dto.StatementTreeViewInfo; 018 import org.kuali.student.core.statement.dto.StatementTypeInfo; 019 import org.kuali.student.core.statement.service.StatementService; 020 import org.kuali.student.core.statement.ui.client.widgets.rules.ReqComponentInfoUi; 021 import org.kuali.student.lum.lu.dto.CluInfo; 022 import org.kuali.student.lum.lu.service.LuService; 023 import org.kuali.student.lum.program.client.rpc.StatementRpcService; 024 import org.springframework.transaction.annotation.Transactional; 025 026 @Transactional(readOnly=true,noRollbackFor={DoesNotExistException.class},rollbackFor={Throwable.class}) 027 public class StatementDataService implements StatementRpcService{ 028 final static Logger LOG = Logger.getLogger(StatementDataService.class); 029 030 031 private StatementService statementService; 032 private LuService luService; 033 034 private static final long serialVersionUID = 822326113643828855L; 035 @Override 036 public List<StatementTypeInfo> getStatementTypesForStatementTypeForCourse(String statementTypeKey) throws Exception { 037 038 List<StatementTypeInfo> allStatementTypes = new ArrayList<StatementTypeInfo>(); 039 040 List<String> topStatementTypes = statementService.getStatementTypesForStatementType(statementTypeKey); 041 042 // loop through top statement types like enrollment eligibility and credit constraints 043 for (String topStatementType : topStatementTypes) { 044 allStatementTypes.add(statementService.getStatementType(topStatementType)); 045 List<String> subStatementTypeNames = statementService.getStatementTypesForStatementType(topStatementType); 046 047 // loop through statement types belonging to the top statement types 048 for (String subStatementTypeName : subStatementTypeNames) { 049 allStatementTypes.add(statementService.getStatementType(subStatementTypeName)); 050 } 051 } 052 053 return allStatementTypes; 054 } 055 056 @Override 057 public List<StatementTypeInfo> getStatementTypesForStatementType(String statementTypeKey) throws Exception { 058 List<String> statementTypeNames = statementService.getStatementTypesForStatementType(statementTypeKey); 059 List<StatementTypeInfo> statementTypes = new ArrayList<StatementTypeInfo>(); 060 for (String statementTypeName : statementTypeNames) { 061 statementTypes.add(statementService.getStatementType(statementTypeName)); 062 } 063 return statementTypes; 064 } 065 @Override 066 public List<ReqComponentTypeInfo> getReqComponentTypesForStatementType(String luStatementTypeKey) throws Exception { 067 068 List<ReqComponentTypeInfo> reqComponentTypeInfoList; 069 try { 070 reqComponentTypeInfoList = statementService.getReqComponentTypesForStatementType(luStatementTypeKey); 071 } catch (Exception ex) { 072 LOG.error(ex); 073 throw new Exception("Unable to find Requirement Component Types based on LU Statement Type Key:" + luStatementTypeKey, ex); 074 } 075 076 return reqComponentTypeInfoList; 077 } 078 079 @Override 080 public String translateStatementTreeViewToNL(StatementTreeViewInfo statementTreeViewInfo, String nlUsageTypeKey, String language) throws Exception { 081 return statementService.translateStatementTreeViewToNL(statementTreeViewInfo, nlUsageTypeKey, language); 082 } 083 084 @Override 085 public String translateReqComponentToNL(ReqComponentInfo reqComponentInfo, String nlUsageTypeKey, String language) throws Exception { 086 return statementService.translateReqComponentToNL(reqComponentInfo, nlUsageTypeKey, language); 087 } 088 089 @Override 090 public List<String> translateReqComponentToNLs(ReqComponentInfoUi reqComponentInfo, String[] nlUsageTypeKeys, String language) throws Exception { 091 List<String> nls = new ArrayList<String>(nlUsageTypeKeys.length); 092 for (String typeKey : nlUsageTypeKeys) { 093 nls.add(statementService.translateReqComponentToNL(reqComponentInfo, typeKey, language)); 094 } 095 return nls; 096 } 097 098 @Override 099 public CluInfo getClu(String cluId) throws Exception { 100 return luService.getClu(cluId); 101 } 102 103 @Override 104 public VersionDisplayInfo getCurrentVersion(String refObjectTypeURI, String refObjectId) throws Exception { 105 return luService.getCurrentVersion(refObjectTypeURI, refObjectId); 106 } 107 108 public void setStatementService(StatementService statementService) { 109 this.statementService = statementService; 110 } 111 112 public void setLuService(LuService luService) { 113 this.luService = luService; 114 } 115 116 @Override 117 public List<String> getObjectTypes() { 118 throw new UnsupportedOperationException(); 119 } 120 121 @Override 122 public ObjectStructure getObjectStructure(String objectTypeKey) { 123 throw new UnsupportedOperationException(); 124 } 125 126 @Override 127 public List<SearchTypeInfo> getSearchTypes() { 128 throw new UnsupportedOperationException(); 129 } 130 131 @Override 132 public SearchTypeInfo getSearchType(String searchTypeKey) { 133 throw new UnsupportedOperationException(); 134 } 135 136 @Override 137 public List<SearchTypeInfo> getSearchTypesByResult( 138 String searchResultTypeKey) { 139 throw new UnsupportedOperationException(); 140 } 141 142 @Override 143 public List<SearchTypeInfo> getSearchTypesByCriteria( 144 String searchCriteriaTypeKey) { 145 throw new UnsupportedOperationException(); 146 } 147 148 @Override 149 public List<SearchResultTypeInfo> getSearchResultTypes() { 150 throw new UnsupportedOperationException(); 151 } 152 153 @Override 154 public SearchResultTypeInfo getSearchResultType(String searchResultTypeKey) { 155 throw new UnsupportedOperationException(); 156 } 157 158 @Override 159 public List<SearchCriteriaTypeInfo> getSearchCriteriaTypes() { 160 throw new UnsupportedOperationException(); 161 } 162 163 @Override 164 public SearchCriteriaTypeInfo getSearchCriteriaType( 165 String searchCriteriaTypeKey) { 166 throw new UnsupportedOperationException(); 167 } 168 169 @Override 170 public SearchResult search(SearchRequest searchRequest) { 171 throw new UnsupportedOperationException(); 172 } 173 }