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 }