001/**
002 * Copyright 2005-2016 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 */
016package org.kuali.rice.kew.notes.service.impl;
017
018import java.io.File;
019import java.util.Iterator;
020import java.util.List;
021
022import org.kuali.rice.kew.notes.Attachment;
023import org.kuali.rice.kew.notes.Note;
024import org.kuali.rice.kew.notes.dao.NoteDAO;
025import org.kuali.rice.kew.notes.service.AttachmentService;
026import org.kuali.rice.kew.notes.service.NoteService;
027
028
029public class NoteServiceImpl implements NoteService {
030
031        private NoteDAO noteDAO;
032
033        private AttachmentService attachmentService;
034
035        public Note getNoteByNoteId(String noteId) {
036                return getNoteDAO().getNoteByNoteId(noteId);
037        }
038
039        public List<Note> getNotesByDocumentId(String documentId) {
040                return getNoteDAO().getNotesByDocumentId(documentId);
041        }
042
043        public void saveNote(Note note) {
044                try {
045                        if (! note.getAttachments().isEmpty()){
046                                for (Iterator iter = note.getAttachments().iterator(); iter.hasNext();) {
047                                        Attachment attachment = (Attachment) iter.next();
048                                        if (attachment.getAttachedObject()!= null){
049                                                attachmentService.persistAttachedFileAndSetAttachmentBusinessObjectValue(attachment);
050                                        }
051                                }
052                        }
053                        getNoteDAO().saveNote(note);
054                } catch (Exception e) {
055                        throw new RuntimeException(e);
056                }
057        }
058
059        public void deleteNote(Note note) {
060                try {
061           if (note != null && !note.getAttachments().isEmpty()){
062               for (Iterator iter = note.getAttachments().iterator(); iter.hasNext();) {
063                   Attachment attachment = (Attachment) iter.next();
064                   attachmentService.deleteAttachedFile(attachment);
065               }
066           }
067           if (note != null) {
068               getNoteDAO().deleteNote(note);
069           }
070                } catch (Exception e) {
071                        throw new RuntimeException("caught exception deleting attachment", e);
072                }
073        }
074
075        public NoteDAO getNoteDAO() {
076                return noteDAO;
077        }
078
079        public void setNoteDAO(NoteDAO noteDAO) {
080                this.noteDAO = noteDAO;
081        }
082
083        public void deleteAttachment(Attachment attachment) {
084                this.noteDAO.deleteAttachment(attachment);
085                try {
086                        attachmentService.deleteAttachedFile(attachment);
087                } catch (Exception e) {
088                        throw new RuntimeException("caught exception deleting attachment", e);
089                }
090        }
091
092        public File findAttachmentFile(Attachment attachment) {
093                try {
094                        return attachmentService.findAttachedFile(attachment);
095                } catch (Exception e) {
096                        throw new RuntimeException(e);
097                }
098
099        }
100
101        public Attachment findAttachment(String attachmentId) {
102                return noteDAO.findAttachment(attachmentId);
103        }
104
105        public AttachmentService getAttachmentService() {
106                return attachmentService;
107        }
108
109        public void setAttachmentService(AttachmentService attachmentService) {
110                this.attachmentService = attachmentService;
111        }
112}