public static JSONArray getProductsJson(HttpServletRequest request, List list)
     throws JSONException, ServiceException {
   Iterator itr = list.iterator();
   JSONArray jArr = new JSONArray();
   Producttype producttype = new Producttype();
   String productid = request.getParameter("productid");
   Boolean nonSaleInventory = Boolean.parseBoolean((String) request.getParameter("loadInventory"));
   while (itr.hasNext()) {
     Object[] row = (Object[]) itr.next();
     Product product = (Product) row[0];
     Product parentProduct = product.getParent();
     if (product.getID().equals(productid)) continue;
     ProductCyclecount pcObject = (ProductCyclecount) row[8];
     JSONObject obj = new JSONObject();
     obj.put("productid", product.getID());
     obj.put("productname", product.getName());
     obj.put("desc", product.getDescription());
     UnitOfMeasure uom = product.getUnitOfMeasure();
     obj.put("uomid", uom == null ? "" : uom.getID());
     obj.put("uomname", uom == null ? "" : uom.getName());
     obj.put("precision", uom == null ? 0 : (Integer) uom.getAllowedPrecision());
     obj.put("leadtime", product.getLeadTimeInDays());
     obj.put("syncable", product.isSyncable());
     obj.put("reorderlevel", product.getReorderLevel());
     obj.put("reorderquantity", product.getReorderQuantity());
     obj.put(
         "purchaseaccountid",
         (product.getPurchaseAccount() != null ? product.getPurchaseAccount().getID() : ""));
     obj.put(
         "salesaccountid",
         (product.getSalesAccount() != null ? product.getSalesAccount().getID() : ""));
     obj.put(
         "purchaseretaccountid",
         (product.getPurchaseReturnAccount() != null
             ? product.getPurchaseReturnAccount().getID()
             : ""));
     obj.put(
         "salesretaccountid",
         (product.getSalesReturnAccount() != null ? product.getSalesReturnAccount().getID() : ""));
     obj.put("vendor", (product.getVendor() != null ? product.getVendor().getID() : ""));
     obj.put("vendornameid", (product.getVendor() != null ? product.getVendor().getName() : ""));
     obj.put(
         "producttype",
         (product.getProducttype() != null ? product.getProducttype().getID() : ""));
     obj.put(
         "vendorphoneno",
         (product.getVendor() != null ? product.getVendor().getContactNumber() : ""));
     obj.put("vendoremail", (product.getVendor() != null ? product.getVendor().getEmail() : ""));
     obj.put("type", (product.getProducttype() != null ? product.getProducttype().getName() : ""));
     obj.put("pid", product.getProductid());
     obj.put("parentuuid", parentProduct == null ? "" : parentProduct.getID());
     obj.put("parentid", parentProduct == null ? "" : parentProduct.getProductid());
     obj.put("parentname", parentProduct == null ? "" : parentProduct.getName());
     obj.put("level", row[1]);
     obj.put("leaf", row[2]);
     obj.put("purchaseprice", row[3]);
     obj.put("saleprice", row[4]);
     obj.put("quantity", (row[5] == null ? 0 : row[5]));
     obj.put("initialquantity", (row[6] == null ? 0 : row[6]));
     obj.put("initialprice", (row[7] == null ? 0 : row[7]));
     obj.put("salespricedatewise", (row[9] == null ? 0 : row[9]));
     obj.put("purchasepricedatewise", (row[10] == null ? 0 : row[10]));
     obj.put("initialsalesprice", (row[11] == null ? 0 : row[11]));
     obj.put("ccountinterval", pcObject != null ? pcObject.getCountInterval() : "");
     obj.put("ccounttolerance", pcObject != null ? pcObject.getTolerance() : "");
     SimpleDateFormat sdf = new SimpleDateFormat("MMMM d, yyyy hh:mm:ss aa");
     //  obj.put("createdon", (row[12]==null?"":sdf.format(row[12])));
     //            jArr.put(obj);
     if (nonSaleInventory && obj.get("producttype").equals(producttype.Inventory_Non_Sales)) {
       // Do Nothing
     } else {
       jArr.put(obj);
     }
   }
   return jArr;
 }
  @Override
  public KwlReturnObject updateMassAccount(JSONObject jobj) throws ServiceException {
    List ll = new ArrayList();
    String hqlVarPart = "";
    List<Object> params = new ArrayList<Object>();
    int dl = 0;
    try {
      String companyid = null;
      String userid = null;
      String[] accountids = (String[]) jobj.get("accountid");

      if (jobj.has("accountname")) {
        hqlVarPart += " accountname = ?,";
        params.add(jobj.getString("accountname"));
      }
      if (jobj.has("accounttypeid")) {
        hqlVarPart += " crmCombodataByAccounttypeid = ?,";
        params.add(get(DefaultMasterItem.class, jobj.getString("accounttypeid")));
      }
      if (jobj.has("companyid")) {
        hqlVarPart += " company = ?,";
        params.add(get(Company.class, jobj.getString("companyid")));
      }
      if (jobj.has("description")) {
        hqlVarPart += " description = ?,";
        params.add(jobj.getString("description"));
      }
      if (jobj.has("website")) {
        hqlVarPart += " website = ?,";
        params.add(jobj.getString("website"));
      }
      if (jobj.has("email")) {
        hqlVarPart += " email = ?,";
        params.add(jobj.getString("email"));
      }
      if (jobj.has("address")) {
        hqlVarPart += " mailstreet = ?,";
        params.add(jobj.getString("address"));
      }
      if (jobj.has("productid")) {
        saveAccountProducts(accountids, jobj.getString("productid").split(","));
      }
      if (jobj.has("price")) {
        hqlVarPart += " price = ?,";
        params.add(jobj.getString("price"));
      }
      if (jobj.has("phone")) {
        hqlVarPart += " phone = ?,";
        params.add(jobj.getString("phone"));
      }
      if (jobj.has("revenue")) {
        hqlVarPart += " revenue = ?,";
        params.add(jobj.getString("revenue"));
      }
      if (jobj.has("industryid")) {
        hqlVarPart += " crmCombodataByIndustryid = ?,";
        params.add(get(DefaultMasterItem.class, jobj.getString("industryid")));
      }
      if (jobj.has("updatedon")) {
        hqlVarPart += " updatedOn = ?,";
        params.add(jobj.getLong("updatedon"));
      }
      if (jobj.has("createdon")) {
        Long createdOn = jobj.getLong("createdon");
        hqlVarPart += " createdOn = ?,";
        params.add(createdOn);
      }
      if (jobj.has("userid")) {

        hqlVarPart += " usersByUpdatedbyid = ?,";
        params.add(get(User.class, jobj.getString("userid")));
      }
      if (jobj.has("accountownerid")) {
        setMainAccOwner(accountids, jobj.getString("accountownerid"));
      }
      if (jobj.has("validflag")) {
        hqlVarPart += " validflag = ?,";
        params.add(Integer.parseInt(jobj.getString("validflag")));
      }
      if (jobj.has("deleteflag")) {
        hqlVarPart += " deleteflag = ?,";
        params.add(Integer.parseInt(jobj.getString("deleteflag")));
        String query = "delete from AccountProducts where accountid.accountid in (:accountids)";
        Map map = new HashMap();
        map.put("accountids", accountids);
        executeUpdate(query, null, map);
      }
      if (jobj.has("CrmAccountCustomDataobj") && jobj.getBoolean("CrmAccountCustomDataobj")) {
        linkCustomData();
      }
      if (jobj.has("leadid")) {
        hqlVarPart += " crmLead = ?,";
        params.add(get(CrmLead.class, jobj.getString("leadid")));
      }

      hqlVarPart = hqlVarPart.substring(0, Math.max(0, hqlVarPart.lastIndexOf(',')));
      String hql = "update CrmAccount set " + hqlVarPart + " where accountid in (:accountids)";
      Map map = new HashMap();
      map.put("accountids", accountids);
      executeUpdate(hql, params.toArray(), map);

    } catch (JSONException e) {
      throw ServiceException.FAILURE("crmAccountDAOImpl.updateMassAccount : " + e.getMessage(), e);
    } catch (DataAccessException e) {
      throw ServiceException.FAILURE("crmAccountDAOImpl.updateMassAccount : " + e.getMessage(), e);
    } catch (Exception e) {
      throw ServiceException.FAILURE("crmAccountDAOImpl.updateMassAccount : " + e.getMessage(), e);
    }
    return new KwlReturnObject(true, KWLErrorMsgs.S01, "", ll, dl);
  }