001    /**
002     * Copyright 2005-2013 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 edu.sampleu.bookstore.rule;
017    
018    import edu.sampleu.bookstore.bo.BookOrder;
019    import edu.sampleu.bookstore.document.BookOrderDocument;
020    import org.kuali.rice.core.api.util.RiceKeyConstants;
021    import org.kuali.rice.krad.document.Document;
022    import org.kuali.rice.krad.rules.TransactionalDocumentRuleBase;
023    import org.kuali.rice.krad.util.GlobalVariables;
024    import org.kuali.rice.krad.util.KRADConstants;
025    
026    import java.util.List;
027    
028    
029    /*
030     * Business Rule for Book Order Document that follows prior to submit action.
031     * Checks that book order/orders is/are not null or Empty and all the attributes are mentioned for each order.
032     */
033    
034    public class BookOrderDocumentRule extends TransactionalDocumentRuleBase {
035    
036            private static final String BOOK_ORDERS_PROPERTY_PATH = KRADConstants.DOCUMENT_PROPERTY_NAME + ".bookOrders";
037            private static final String NO_BOOK_ORDERS_ERROR_KEY = RiceKeyConstants.ERROR_CUSTOM;
038            private static final String ERROR_MESSAGE_NO_ORDERS = "You must add at least one entry to your book order.";
039            
040            private static final String BOOK_ORDERS_EMPTY_ERROR_KEY = RiceKeyConstants.ERROR_CUSTOM;
041            private static final String ERROR_MESSAGE_EMPTY_ORDERS = "You must add attributes to your book order.";
042            
043            @Override
044            protected boolean processCustomRouteDocumentBusinessRules(Document document) {
045                    
046                    System.out.println("@@@@ IN RULE CHECK");
047                    
048                    // cast the document to a BookOrderDocument
049                    BookOrderDocument bookOrderDocument = (BookOrderDocument)document;
050                    
051                    // get the list of book orders of the book order document
052                    List<BookOrder> bookOrders = bookOrderDocument.getBookOrders();
053                    
054                    // make sure that the list is not empty
055                    if (bookOrders == null || bookOrders.isEmpty()) {
056                            GlobalVariables.getMessageMap().putError(BOOK_ORDERS_PROPERTY_PATH, NO_BOOK_ORDERS_ERROR_KEY, ERROR_MESSAGE_NO_ORDERS);
057                            System.out.println("@@@@ FALSE RULE CHECK");
058                            return false;
059                    } else {
060                            for(BookOrder bookOrder : bookOrders){                          
061                                    if(bookOrder.getBookId() == null || bookOrder.getDiscount() == null || bookOrder.getQuantity() == null){
062                                            GlobalVariables.getMessageMap().putError(BOOK_ORDERS_PROPERTY_PATH, BOOK_ORDERS_EMPTY_ERROR_KEY, ERROR_MESSAGE_EMPTY_ORDERS);
063                                            System.out.println("@@@@ FALSE RULE CHECK");
064                                            return false;
065                                    }                               
066                            }
067                            
068                    }
069                    System.out.println("@@@@ TRUE RULE CHECK");
070                    
071                    return super.processCustomRouteDocumentBusinessRules(document);
072            }
073    
074            
075    
076            
077            
078    }