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    }