logger.debug ( "Bad param - expected quantity got " + obj);
if (logger.isDebugEnabled()) { logger.debug("Bad param - expected quantity got " + obj); }
  public Rate getRate(Asset asset, List params) {    double quantity = 0; // people    // CDW    if (params.size() < 1) {      return null;    } // if    Object obj = params.get(0);    if (obj instanceof Double) {      quantity = ((Double) obj).doubleValue();    } else {      if (obj != null) {        logger.debug ( "Bad param - expected quantity got " + obj);      } // if      return null;    } // if    OrgActivity act = null;    obj = params.get(1);    if (obj instanceof OrgActivity) {      act = (OrgActivity) obj;    } else {      if (obj != null) {        logger.debug ( "Bad param - expected OrgActivity got " + obj);      } // if      return null;    } // if    KeyRuleParameterEntry[] keys =        getActionPolicy(act.getActivityType(), act.getOpTempo());    if ((keys != null) && (keys.length == 0)) {      return null;    } // if    Rate result = null;    String identifier = parentPlugin.getAssetUtils().getAssetIdentifier (asset);    PackagePG ppg = (PackagePG) asset.searchForPropertyGroup(PackagePG.class);    if (ppg == null) {      logger.error("No PackagePG on "+identifier);    }    //String type = null;    double resource_count = 0;    if (keys != null) {      for (int j = 0; j < keys.length; j++) {        if ((keys[j].getKey().equalsIgnoreCase("Breakfast")            && (keys[j].getValue().equals(identifier)))            || (keys[j].getKey().equalsIgnoreCase("Lunch")            && (keys[j].getValue().equals(identifier)))            || (keys[j].getKey().equalsIgnoreCase("Dinner")            && (keys[j].getValue().equals(identifier)))) {          resource_count += 1.0;        }      }    } else {      // keys from getActionPolicy was null            // Optempo does not over rule      if (params.size() < 3) {        logger.error("Class I ose array in getRate() is missing element "+2+" (meal)");      } else {	if (params.get(2) != null) {	  logger.debug( " meal params is " +			params.get(2) + " resource is " + identifier);	  if (((HashMap) params.get(2)).containsKey(identifier)) {	    // Meals	    resource_count += ((Double) ((HashMap)					 params.get(2)).get(identifier)).doubleValue();	    logger.debug(identifier+" rate is "+resource_count);	  } // if	  // DEBUG	  else {	    logger.debug("No meal rates for "+identifier);	  }	} // if non null params(2)	// Enhancements policy	if (params.size() >= 4 && params.get(3) != null) {	  if (((HashMap) params.get(3)).containsKey(identifier)) {	    // Meals	    resource_count += ((Double) ((HashMap)					 params.get(3)).get(identifier)).doubleValue();	    logger.debug ( " enhance params is " + ((Double)						    ((HashMap) params.get(3)).get (identifier)).doubleValue());	  }	}      } // if have at least thru params(3)          } // end of case for null keys    // Water    if (params.size() < 5) {      logger.error("Class I ose array in getRate() is missing element "+5+" water");    } else {      if (params.get(4) != null) {        if (((HashMap) params.get(4)).containsKey(identifier)) {          // water  public static HashMap cachedDBValues = new HashMap();          resource_count += ((Double) ((HashMap)              params.get (4)).get(identifier)).doubleValue();          logger.debug ( " water params is " + ((Double) ((HashMap)              params.get(4)).get (identifier)).doubleValue());        } // if      } // if    } // if    if (resource_count > 0) {      double total =          Math.ceil (resource_count * (1.0 / ppg.getCountPerPack()) * quantity);      result = CountRate.newEachesPerDay(total);      RationPG rpg = (RationPG)          asset.searchForPropertyGroup(RationPG.class);      logger.debug ("\n THE rate is " +                    CountRate.newEachesPerDay (total) + " for asset " +                    identifier + " the ration type is " + rpg.getRationType());      logger.debug ( " Unit of Issue  is " + ppg.getUnitOfIssue()                     + " count per pack" + ppg.getCountPerPack());    } // if    return result;  } // getRate