CompareCustomerGroups.java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package durbodax.commands;

import durbodax.customers.Enums.Sex;
import durbodax.daos.CustomerCompareDAO;
import durbodax.daos.DAOFactory;
import java.util.HashMap;
import java.util.Map;

/**
 *
 * @author SimmonsD
 */
public class CompareCustomerGroups implements Command {
    /**
     * parseInput - parses an array from command line
     * @param paramsIn - String[]
     * @return CompareGroupDTO (Data Transfer Object)
     */
    private CustomerCompareDAO parseInput(String[] paramsIn) {
        CustomerCompareDAO compDAO = DAOFactory.getDAOFactory().getCompareDAO();
        int conditions=0;
        for(int i=1; i<paramsIn.length; i++)
        {
        	System.out.println("flow:123");
            if(paramsIn[i].equals("-a")) {
            	System.out.println("flow:124");
               conditions++;
               String[] ageComparison =  paramsIn[i+1].split("-");
               if(ageComparison[0].equalsIgnoreCase("Under")){
            	   System.out.println("flow:125");
            	   compDAO.addCondition("AGE < "+ ageComparison[1]);
                   }
               else{
            	   System.out.println("flow:126");
                   compDAO.addCondition("AGE > "+ageComparison[1]);
               }
            }
            if(paramsIn[i].equals("-i")) {
            	System.out.println("flow:127");
                conditions++;
                String[] incomeComparison = paramsIn[i+1].split("-");
               if(incomeComparison[0].equalsIgnoreCase("Under")){
            	   System.out.println("flow:128");
            	   compDAO.addCondition("INCTOT < "+ incomeComparison[1]);
                   }
               else{
            	   System.out.println("flow:129");
            	   compDAO.addCondition("INCTOT > "+incomeComparison[1]);
                   }
            }
            if(paramsIn[i].equals("-m")) {
            	System.out.println("flow:130");
                conditions++;
               String maritalStatus = paramsIn[i+1];
               compDAO.addCondition("MARST = "+maritalStatus);
            }
        }
        if(conditions == 0) {
        	System.out.println("flow:131");
            printOutput(new HashMap());
            return null;
        }
        return compDAO;
    }
    /**
     * printOutput - prints results
     * @param mresultIn - ArrayList of MarketingResponseDTO objects
     */
    private void printOutput(Map<Sex, Integer> mresultIn) {
    	System.out.println("flow:132");
        if (mresultIn.size() == 0) {
        	System.out.println("flow:133");
            System.out.println("No Records found:  Please change parameters and retry.\n Must Enter at least one comparison.");
            return;
        }
        System.out.println("Males: " + mresultIn.get(Sex.Male) +"%");
        System.out.println("Females: "+ mresultIn.get(Sex.Female) +"%");
    }

    /**
     * execute - main processing for the Command
     * @param params - String[] from command line
     * @return retObj - Object containing the results
     */
    public Object execute(String[] params) {
    	System.out.println("flow:133");
        Object retObj = new Object();
        CustomerCompareDAO dao = parseInput(params);

        if (dao != null) {
        	System.out.println("flow:134");
            Map<Sex, Integer> mresult = dao.runQuery();
            retObj = mresult;
            printOutput(mresult);
        } else {
        	System.out.println("flow:135");
            System.out.println("Usage: -a Under||Over-Age  -i Under||Over-Income -m MaritalStatus");
            System.out.println("EX:  CompareCustomerGroup Male Over-50 Under-40000 1");
        }
        return retObj;
    }
}