001 package org.kuali.student.lum.lu.ui.dependency.server; 002 003 import java.util.ArrayList; 004 import java.util.List; 005 006 import org.kuali.student.r2.common.dto.ContextInfo; 007 import org.kuali.student.r2.common.util.ContextUtils; 008 import org.kuali.student.r1.core.statement.dto.ReqComponentInfo; 009 import org.kuali.student.r1.core.statement.dto.StatementTreeViewInfo; 010 import org.kuali.student.r1.core.statement.service.StatementService; 011 import org.kuali.student.core.statement.ui.client.widgets.rules.ReqComponentInfoUi; 012 import org.kuali.student.core.statement.ui.client.widgets.rules.RulesUtil; 013 import org.kuali.student.lum.lu.ui.dependency.client.service.DependencyAnalysisRpcService; 014 import org.kuali.student.r2.lum.program.dto.ProgramRequirementInfo; 015 import org.kuali.student.r2.lum.program.service.ProgramService; 016 017 import com.google.gwt.user.server.rpc.RemoteServiceServlet; 018 019 public class DependencyAnalysisRpcServlet extends RemoteServiceServlet implements DependencyAnalysisRpcService { 020 021 private static final long serialVersionUID = 1L; 022 023 StatementService statementService; 024 ProgramService programService; 025 026 @Override 027 public String getRequirementComponentNL(String reqComponentId) { 028 return null; 029 } 030 031 @Override 032 public List<String> getRequirementComponentNL(List<String> reqComponentIds) throws Exception { 033 List<String> reqComponents = new ArrayList<String>(); 034 try 035 { 036 for (String reqComponentId : reqComponentIds) { 037 String reqCompNL = statementService.getNaturalLanguageForReqComponent(reqComponentId, "KUALI.RULE", "en"); 038 reqComponents.add(reqCompNL); 039 } 040 041 return reqComponents; 042 } 043 catch(Exception ex){ 044 // Log exception 045 ex.printStackTrace(); 046 throw new RuntimeException(ex); 047 } 048 } 049 050 @Override 051 public ProgramRequirementInfo getProgramRequirement(String reqId) throws Exception { 052 //TODO fix null parameters? 053 try 054 { 055 ProgramRequirementInfo programRequirementInfo = programService.getProgramRequirement(reqId, 056 ContextUtils.getContextInfo()); 057 058 setProgReqNL(programRequirementInfo); 059 return programRequirementInfo; 060 } catch (Exception ex) { 061 // Log exception 062 ex.printStackTrace(); 063 throw new RuntimeException(ex); 064 } 065 } 066 067 public StatementService getStatementService() { 068 return statementService; 069 } 070 071 public void setStatementService(StatementService statementService) { 072 this.statementService = statementService; 073 } 074 075 public ProgramService getProgramService() { 076 return programService; 077 } 078 079 public void setProgramService(ProgramService programService) { 080 this.programService = programService; 081 } 082 083 private void setProgReqNL(ProgramRequirementInfo programRequirementInfo) throws Exception { 084 setReqCompNL(programRequirementInfo.getStatement()); 085 } 086 087 private void setReqCompNL(StatementTreeViewInfo tree) throws Exception { 088 List<StatementTreeViewInfo> statements = tree.getStatements(); 089 List<ReqComponentInfo> reqComponentInfos = tree.getReqComponents(); 090 091 if ((statements != null) && (statements.size() > 0)) { 092 // retrieve all statements 093 for (StatementTreeViewInfo statement : statements) { 094 setReqCompNL(statement); // inside set the children of this statementTreeViewInfo 095 } 096 } else if ((reqComponentInfos != null) && (reqComponentInfos.size() > 0)) { 097 // retrieve all req. component LEAFS 098 for (int i = 0; i < reqComponentInfos.size(); i++) { 099 ReqComponentInfoUi reqUi = RulesUtil.clone(reqComponentInfos.get(i)); 100 reqUi.setNaturalLanguageTranslation(statementService.translateReqComponentToNL(reqUi, "KUALI.RULE", 101 "en")); 102 reqUi.setPreviewNaturalLanguageTranslation(statementService.translateReqComponentToNL(reqUi, 103 "KUALI.RULE.PREVIEW", "en")); 104 reqComponentInfos.set(i, reqUi); 105 } 106 } 107 } 108 109 }