001    package edu.sampleu.bookstore.maintenance;
002    
003    import java.util.List;
004    import java.util.Map;
005    
006    import org.kuali.rice.kns.document.MaintenanceDocument;
007    import org.kuali.rice.kns.maintenance.KualiMaintainableImpl;
008    import org.kuali.rice.kns.service.KNSServiceLocator;
009    import edu.sampleu.bookstore.bo.Account;
010    import edu.sampleu.bookstore.bo.Author;
011    import edu.sampleu.bookstore.bo.Book;
012    
013    /**
014     * maintainableClass for Book document. 
015     * Action to be taken before saving the BO
016     */
017    
018    public class BookMaintainable extends KualiMaintainableImpl {
019    
020            
021            private static final long serialVersionUID = 1L;
022    
023            @Override
024            public void saveBusinessObject() {
025                    // TODO Auto-generated method stub
026                    Book book = (Book) this.getBusinessObject();
027            
028    
029                    // /-----------------------------------------------------///
030                    // /-----------------------------------------------------///
031                    // /---IF author has to be edited from Book Document-----///
032                    // /---follow the below mentioned code else comment out--///
033                    // /-----------------------------------------------------///
034                    // /-----------------------------------------------------///
035                    List<Author> authors = book.getAuthors();
036                    for (Author author : authors) {
037                            Account account = (Account) author.getExtension();
038                            if (account != null && account.getAuthorId() == null) {
039                                    author.setExtension(null);
040                            }
041    
042                            KNSServiceLocator.getBusinessObjectService().save(author);
043    
044                            if (account != null && account.getAuthorId() == null) {
045                                    account.setAuthorId(author.getAuthorId());
046                                    KNSServiceLocator.getBusinessObjectService().save(account);
047                            }
048                    }
049    
050                    book.setAuthors(authors);
051                    KNSServiceLocator.getBusinessObjectService().save(book);
052    
053            }
054    
055            @Override
056            public void processAfterCopy(MaintenanceDocument document,
057                            Map<String, String[]> parameters) {
058                    super.processAfterCopy(document, parameters);
059                    Book book = ((Book) document.getNewMaintainableObject()
060                                    .getBusinessObject());
061                    book.setIsbn(null);
062            }
063    
064    }