001 /*
002 * Copyright 2011 The Kuali Foundation.
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package org.kuali.kfs.module.purap.businessobject;
017
018 import java.util.LinkedHashMap;
019 import java.util.List;
020
021 import org.kuali.kfs.sys.KFSConstants;
022 import org.kuali.kfs.sys.context.SpringContext;
023 import org.kuali.rice.kew.exception.WorkflowException;
024 import org.kuali.rice.kns.bo.Note;
025 import org.kuali.rice.kns.bo.PersistableBusinessObjectBase;
026 import org.kuali.rice.kns.service.DataDictionaryService;
027 import org.kuali.rice.kns.service.DocumentService;
028 import org.kuali.rice.kns.service.KualiConfigurationService;
029 import org.kuali.rice.kns.service.NoteService;
030 import org.kuali.rice.kns.util.TypedArrayList;
031
032 /**
033 * Base class for Related View Business Objects.
034 */
035 public abstract class AbstractRelatedView extends PersistableBusinessObjectBase {
036
037 private Integer accountsPayablePurchasingDocumentLinkIdentifier;
038 private Integer purapDocumentIdentifier;
039 private String documentNumber;
040
041 private List<Note> notes;
042
043 public Integer getAccountsPayablePurchasingDocumentLinkIdentifier() {
044 return accountsPayablePurchasingDocumentLinkIdentifier;
045 }
046
047 public void setAccountsPayablePurchasingDocumentLinkIdentifier(Integer accountsPayablePurchasingDocumentLinkIdentifier) {
048 this.accountsPayablePurchasingDocumentLinkIdentifier = accountsPayablePurchasingDocumentLinkIdentifier;
049 }
050
051 public Integer getPurapDocumentIdentifier() {
052 return purapDocumentIdentifier;
053 }
054
055 public void setPurapDocumentIdentifier(Integer purapDocumentIdentifier) {
056 this.purapDocumentIdentifier = purapDocumentIdentifier;
057 }
058
059 public String getDocumentNumber() {
060 return documentNumber;
061 }
062
063 public void setDocumentNumber(String documentNumber) {
064 this.documentNumber = documentNumber;
065 }
066
067 public List<Note> getNotes() {
068 if (notes == null) {
069 notes = new TypedArrayList(Note.class);
070 List<Note> tmpNotes = SpringContext.getBean(NoteService.class).getByRemoteObjectId(this.getObjectId());
071 //FIXME if NoteService returns notes in descending order (newer ones first) then remove the following
072 // reverse the order of notes retrieved so that newest note is in the front
073 for (int i = tmpNotes.size()-1; i>=0; i--) {
074 Note note = tmpNotes.get(i);
075 notes.add(note);
076 }
077 }
078
079 return notes;
080 }
081
082 public String getUrl() {
083 return SpringContext.getBean(KualiConfigurationService.class).getPropertyString(KFSConstants.WORKFLOW_URL_KEY) + "/DocHandler.do?docId=" + getDocumentNumber() + "&command=displayDocSearchView";
084 }
085
086 public String getDocumentIdentifierString() {
087 if (purapDocumentIdentifier != null) {
088 return purapDocumentIdentifier.toString();
089 } else {
090 return documentNumber;
091 }
092 }
093
094 /**
095 * Returns the document label according to the label specified in the data dictionary.
096 *
097 * @return
098 * @throws WorkflowException
099 */
100 public String getDocumentLabel() throws WorkflowException{
101 Class documentClass = SpringContext.getBean(DocumentService.class).getByDocumentHeaderId(this.getDocumentNumber()).getClass();
102 return SpringContext.getBean(DataDictionaryService.class).getDocumentLabelByClass(documentClass);
103 }
104
105 /**
106 * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper()
107 */
108 protected LinkedHashMap toStringMapper() {
109 LinkedHashMap m = new LinkedHashMap();
110 if (this.accountsPayablePurchasingDocumentLinkIdentifier != null) {
111 m.put("accountsPayablePurchasingDocumentLinkIdentifier", this.accountsPayablePurchasingDocumentLinkIdentifier.toString());
112 }
113 return m;
114 }
115 }