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