001    /**
002     * Copyright 2005-2012 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.Address;
019    import edu.sampleu.bookstore.bo.Author;
020    import org.kuali.rice.core.api.util.RiceKeyConstants;
021    import org.kuali.rice.krad.maintenance.MaintenanceDocument;
022    import org.kuali.rice.krad.rules.MaintenanceDocumentRuleBase;
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     * Business Rule for Author Document that follows prior to submit action.
030     * Checks that Author Document has at least one address and no two address should be of same type. 
031     */
032    
033    public class AuthorMaintenanceDocumentRule extends MaintenanceDocumentRuleBase {
034            private static final String AUTHOR_ENTRIES_PROPERTY_PATH = KRADConstants.DOCUMENT_PROPERTY_NAME
035                            + ".authorEntries";
036            private static final String NO_ADDRESS_TYPE_ERROR_KEY = RiceKeyConstants.ERROR_CUSTOM;
037            private static final String ERROR_MESSAGE_NO_ADDTYPE_FOUND = "You must add atleast one address for Author.";
038            private static final String SAME_ADDRESS_TYPE_ERROR_KEY = RiceKeyConstants.ERROR_CUSTOM;
039            private static final String ERROR_MESSAGE_SAME_ADDTYPR_FOUND = "You must not repeat address type for addresses of Author.";
040    
041            @Override
042            protected boolean processGlobalRouteDocumentBusinessRules(
043                            MaintenanceDocument document) {
044                    // TODO Auto-generated method stub
045                    System.out.println("****Inside Global*****");
046                    // cast the document to a Author Document
047                    Author author = (Author)document.getDocumentDataObject();
048                    System.out.println("Inside Global Aothor Got is : " + author);
049                    System.out.println("****Inside Global*****");
050                    // get the list of book order entries off of the book order document
051                    List<Address> addressEntries = author.getAddresses();
052                    System.out.println("Inside Global Aothor address is : " + addressEntries);
053                    
054                    // make sure that the list is not empty
055                    if (addressEntries == null || addressEntries.isEmpty()) {
056                            System.out.println("--Got addressEntries Null--");
057                            GlobalVariables.getMessageMap().putError(
058                                            AUTHOR_ENTRIES_PROPERTY_PATH,NO_ADDRESS_TYPE_ERROR_KEY,
059                                            ERROR_MESSAGE_NO_ADDTYPE_FOUND);
060                            return false;
061                    } else {
062                            System.out.println("--Got addressEntries Obj--");
063                            System.out.println("Inside Global Aothor address Size is : " + addressEntries.size());
064                            Address tempAddress = null;
065                            for(Address address : addressEntries){
066                                    tempAddress = address;
067                                    for(Address address2 : addressEntries){
068                                            if(!tempAddress.equals(address2)){
069                                                    if(tempAddress.getAddressType()!= null && tempAddress.getAddressType() != null && tempAddress.getAddressType().getType().equals(address2.getAddressType().getType())){
070                                                            System.out.println("Got Same Address Typr");
071                                                            GlobalVariables.getMessageMap().putError(
072                                                                            AUTHOR_ENTRIES_PROPERTY_PATH,SAME_ADDRESS_TYPE_ERROR_KEY,
073                                                                            ERROR_MESSAGE_SAME_ADDTYPR_FOUND);
074                                                            return false;
075                                                    }
076                                            }else {
077                                                    System.out.println("Got Same Address Object");
078                                            } 
079                                    }
080                            }
081                            
082                    }
083                    
084                    
085                    
086                    return super.processGlobalRouteDocumentBusinessRules(document);
087            }
088    
089    //      @Override
090    //      protected boolean processCustomRouteDocumentBusinessRules(Document document) {
091    //              System.out.println("****Inside Custom*****");
092    //              // cast the document to a Author Document
093    //              AuthorDocument author = (AuthorDocument) document;
094    //
095    //              // get the list of book order entries off of the book order document
096    //              List<Address> addressEntries = author.getAuthorAddEntries();
097    //
098    //              // make sure that the list is not empty
099    //              if (addressEntries == null && addressEntries.isEmpty()) {
100    //                      System.out.println("Got address Null");
101    //                      GlobalVariables.getMessageMap().putError(
102    //                                      AUTHOR_ENTRIES_PROPERTY_PATH, SAME_ADDRESS_TYPE_ERROR_KEY,
103    //                                      ERROR_MESSAGE);
104    //                      return false;
105    //              }
106    //
107    //              return super.processCustomRouteDocumentBusinessRules(document);
108    //      }
109    
110    }