001 package org.kuali.student.lum.program.server; 002 003 import java.util.List; 004 import java.util.Map; 005 006 import org.kuali.student.common.dto.DtoConstants; 007 import org.kuali.student.common.exceptions.InvalidParameterException; 008 import org.kuali.student.common.exceptions.OperationFailedException; 009 import org.kuali.student.common.ui.server.gwt.AbstractDataService; 010 import org.kuali.student.common.validation.dto.ValidationResultInfo; 011 import org.kuali.student.lum.lu.service.LuService; 012 import org.kuali.student.lum.program.client.ProgramClientConstants; 013 import org.kuali.student.lum.program.dto.CredentialProgramInfo; 014 import org.kuali.student.lum.program.dto.MajorDisciplineInfo; 015 import org.kuali.student.lum.program.service.ProgramService; 016 017 /** 018 * @author Igor 019 */ 020 public class CredentialProgramDataService extends AbstractDataService { 021 022 private static final long serialVersionUID = 1L; 023 024 private ProgramService programService; 025 private LuService luService; 026 027 @Override 028 protected String getDefaultWorkflowDocumentType() { 029 return null; 030 } 031 032 @Override 033 protected String getDefaultMetaDataState() { 034 return null; 035 } 036 037 @Override 038 protected Object get(String id) throws Exception { 039 if (ProgramClientConstants.CREDENTIAL_PROGRAM_TYPES.contains(id)){ 040 List<String> credIds = luService.getCluIdsByLuType(id, DtoConstants.STATE_ACTIVE); 041 if (null == credIds || credIds.size() != 1) { 042 throw new OperationFailedException("A single credential program of type " + id + " is required; database contains " + 043 (null == credIds ? "0" : credIds.size() + 044 ".")); 045 } 046 return programService.getCredentialProgram(credIds.get(0)); 047 } else { 048 return programService.getCredentialProgram(id); 049 } 050 } 051 052 @Override 053 protected Object save(Object dto, Map<String, Object> properties) throws Exception { 054 if (dto instanceof CredentialProgramInfo) { 055 CredentialProgramInfo cpInfo = (CredentialProgramInfo) dto; 056 if (cpInfo.getId() == null && cpInfo.getVersionInfo() != null) { 057 String credentialVersionIndId = cpInfo.getVersionInfo().getVersionIndId(); 058 cpInfo = programService.createNewCredentialProgramVersion(credentialVersionIndId, "New credential program version"); 059 } else if (cpInfo.getId() == null) { 060 cpInfo = programService.createCredentialProgram(cpInfo); 061 } else { 062 cpInfo = programService.updateCredentialProgram(cpInfo); 063 } 064 return cpInfo; 065 } else { 066 throw new InvalidParameterException("Only persistence of CredentialProgram is supported by this DataService implementation."); 067 } 068 } 069 070 @Override 071 protected List<ValidationResultInfo> validate(Object dto) throws Exception { 072 return programService.validateCredentialProgram("OBJECT", (CredentialProgramInfo)dto); 073 } 074 075 @Override 076 protected Class<?> getDtoClass() { 077 return CredentialProgramInfo.class; 078 } 079 080 public void setProgramService(ProgramService programService) { 081 this.programService = programService; 082 } 083 084 public void setLuService(LuService luService) { 085 this.luService = luService; 086 } 087 }