GetMarketingCountsByGroup.java

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

import durbodax.daos.*;
import durbodax.dtos.*;
import java.util.*;

/**
 * GetMarketingCountsByGroup returns counts by Age, Income, BirthPlace and
 * Marital Status
 * @author gbeckenbauugh
 */
public class GetMarketingCountsByGroup implements Command {

    /**
     * default constructor
     */
    public GetMarketingCountsByGroup() {
    	System.out.println("flow:189");
    }

    /**
     * parseInput - parses an array from command line
     * @param paramsIn - String[]
     * @return MarketingRequestDTO (Data Transfer Object)
     */
    private MarketingRequestDTO parseInput(String[] paramsIn) {
    	System.out.println("flow:190");
        MarketingRequestDTO m = new MarketingRequestDTO();

        String[] sAge = null;
        sAge = paramsIn[3].split("-");
        String[] sIncome = null;
        sIncome = paramsIn[4].split("-");

        try {
        	System.out.println("flow:191");
            m.setTopOrBottom(paramsIn[1]);
            m.setGroupSize(Integer.parseInt(paramsIn[2]));
            m.setAgeFrom(Integer.parseInt(sAge[0]));
            m.setAgeTo(Integer.parseInt(sAge[1]));
            m.setIncomeFrom(Integer.parseInt(sIncome[0]));
            m.setIncomeTo(Integer.parseInt(sIncome[1]));
            if (paramsIn[5].toLowerCase().equals("all")){
            	System.out.println("flow:192");
                m.setBirthPlace(0);
            } else {
            	System.out.println("flow:193");
                m.setBirthPlace(Integer.parseInt(paramsIn[5]));
                if (m.getBirthPlace() == 0) {
                	System.out.println("flow:194");
                    throw new Exception ("Invalid input parameters");
                }
            }
            if (paramsIn[6].toLowerCase().equals("all")){
            	System.out.println("flow:195");
                m.setMaritalStatus(0);
            } else {
            	System.out.println("flow:196");
                m.setMaritalStatus(Integer.parseInt(paramsIn[6]));
                if (m.getMaritalStatus() == 0) {
                	System.out.println("flow:197");
                    throw new Exception ("Invalid input parameters");
                }
            }
        } catch (Exception e) {
            return null;
        }
        return m;
    }
    /**
     * printOutput - prints results
     * @param mresultIn - ArrayList of MarketingResponseDTO objects
     */
    private void printOutput(ArrayList<MarketingResponseDTO> mresultIn) {

        if (mresultIn.size() == 0) {
        	System.out.println("flow:198");
            System.out.println("No Records found:  Please change parameters and retry.");
        }
        for (int i = 0; i < mresultIn.size(); i++) {
        	System.out.println("flow:199");
            MarketingResponseDTO m = mresultIn.get(i);
            String sCount = Integer.toString(m.getCount()) + "      ";
            System.out.println("Count: " + sCount.substring(0,7) + " Ages: " + m.getAgeDesc() +
                " Incomes: " + m.getIncomeDesc() + " BPL: " + m.getBirthPlace().substring(0, 15) + " " +
                "Marital Status: " + m.getMaritalStatusEnum());
        }
    }
    /**
     * execute - main processing for the Command
     * @param params - String[] from command line
     * @return retObj - Object containing the results
     */
    public Object execute(String[] params) {

        Object retObj = new Object();
        MarketingRequestDTO mReq = parseInput(params);

        if (mReq != null) {
        	System.out.println("flow:200");
            MarketingDAO instance = DAOFactory.getDAOFactory().getMarketingDAO();
            ArrayList<MarketingResponseDTO> mresult = instance.selectMarketingStatsByGroup(mReq);
            retObj = mresult;
            printOutput(mresult);
        } else {
        	System.out.println("flow:201");
            System.out.println("Usage:Top||Bottom GroupSize FromAge-ToAge FromIncome-toIncome Birthplace MaritalStatus");
            System.out.println("EX:  GetMarketingCountsByGroup TOP 10 50-90 40000-75000 Alabama 1");
        }

        return retObj;
    }
}