001    /*
002     * Copyright 2011 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 org.kuali.kfs.module.ar.batch.report;
017    
018    import java.util.ArrayList;
019    import java.util.List;
020    import java.util.Map;
021    import java.util.Set;
022    import java.util.TreeMap;
023    
024    import org.kuali.kfs.module.ar.batch.report.CustomerLoadResult.EntryType;
025    
026    public class CustomerLoadFileResult {
027    
028        private String filename;
029        private List<String[]> messages;
030        
031        //  key=customerName, value=CustomerLoadResult
032        private Map<String,CustomerLoadResult> customers;
033        
034        public CustomerLoadFileResult() {
035            customers = new TreeMap<String,CustomerLoadResult>();
036            messages = new ArrayList<String[]>();
037        }
038    
039        public CustomerLoadFileResult(String filename) {
040            this.filename = filename;
041            customers = new TreeMap<String,CustomerLoadResult>();
042            messages = new ArrayList<String[]>();
043        }
044        
045        public void addCustomerInfoMessage(String customerName, String message) {
046            CustomerLoadResult customer = getOrAddCustomer(customerName);
047            customer.addInfoMessage(message);
048        }
049        
050        public void addCustomerErrorMessage(String customerName, String message) {
051            CustomerLoadResult customer = getOrAddCustomer(customerName);
052            customer.addErrorMessage(message);
053        }
054        
055        public void setCustomerSuccessResult(String customerName) {
056            CustomerLoadResult customer = getOrAddCustomer(customerName);
057            customer.setSuccessResult();
058        }
059        
060        public void setCustomerFailureResult(String customerName) {
061            CustomerLoadResult customer = getOrAddCustomer(customerName);
062            customer.setFailureResult();
063        }
064        
065        public void setCustomerErrorResult(String customerName) {
066            CustomerLoadResult customer = getOrAddCustomer(customerName);
067            customer.setErrorResult();
068        }
069        
070        public void setCustomerWorkflowDocId(String customerName, String workflowDocId) {
071            CustomerLoadResult customer = getOrAddCustomer(customerName);
072            customer.setWorkflowDocId(workflowDocId);
073        }
074        
075        private CustomerLoadResult getOrAddCustomer(String customerName) {
076            if (!customers.containsKey(customerName)) {
077                customers.put(customerName, new CustomerLoadResult(filename, customerName));
078            }
079            return customers.get(customerName);
080        }
081        
082        public String getFilename() {
083            return filename;
084        }
085    
086        public List<String[]> getMessages() {
087            return messages;
088        }
089        
090        public void addFileErrorMessage(String message) {
091            this.messages.add(new String[] { CustomerLoadResult.getEntryTypeString(EntryType.ERROR), message });
092        }
093        
094        public void addFileInfoMessage(String message) {
095            this.messages.add(new String[] { CustomerLoadResult.getEntryTypeString(EntryType.INFO), message });
096        }
097        
098        public Set<String> getCustomerNames() {
099            return this.customers.keySet();
100        }
101        
102        public CustomerLoadResult getCustomer(String customerName) {
103            return customers.get(customerName);
104        }
105        
106    }