protected <T> long processUpdateGroup(T[] arr, String groupType, String groupName, Collection<CpoWhere> wheres, Collection<CpoOrderBy> orderBy, Collection<CpoNativeFunction> nativeExpressions, Session sess) throws CpoException {
    CpoClass cpoClass;
    List<CpoFunction> cpoFunctions;
    CpoFunction cpoFunction;
    CassandraBoundStatementFactory boundStatementFactory = null;
    Logger localLogger = logger;

    try {
      cpoClass = metaDescriptor.getMetaClass(arr[0]);
      cpoFunctions = cpoClass.getFunctionGroup(getGroupType(arr[0], groupType, groupName, sess), groupName).getFunctions();
      localLogger = LoggerFactory.getLogger(cpoClass.getMetaClass());

      int numStatements=0;
      localLogger.info("=================== Class=<" + arr[0].getClass() + "> Type=<" + groupType + "> Name=<" + groupName + "> =========================");
      ArrayList<CassandraBoundStatementFactory> statemetnFactories = new ArrayList<>();
      for (T obj : arr) {
        for (CpoFunction function : cpoFunctions) {
          boundStatementFactory = new CassandraBoundStatementFactory(sess, this, cpoClass, function, obj, wheres, orderBy, nativeExpressions);
          statemetnFactories.add(boundStatementFactory);
          numStatements++;
        }
      }

      executeBatchStatements(sess, statemetnFactories);

      localLogger.info("=================== " + numStatements + " Updates - Class=<" + arr[0].getClass() + "> Type=<" + groupType + "> Name=<" + groupName + "> =========================");

    } catch (Throwable t) {
      String msg = "ProcessUpdateGroup failed:" + groupType + "," + groupName + "," + arr[0].getClass().getName();
      // TODO FIX This
      // localLogger.error("bound values:" + this.parameterToString(jq));
      localLogger.error(msg, t);
      throw new CpoException(msg, t);
    }

    return unknownModifyCount;
  }
protected < T > long processUpdateGroup ( T [ ] arr , String groupType , String groupName , Collection < CpoWhere > wheres , Collection < CpoOrderBy > orderBy , Collection < CpoNativeFunction > nativeExpressions , Session sess ) throws CpoException { CpoClass cpoClass ; List < CpoFunction > cpoFunctions ; CpoFunction cpoFunction ; CassandraBoundStatementFactory boundStatementFactory = null ; Logger localLogger = logger ; try { cpoClass = metaDescriptor . getMetaClass ( arr [ 0 ] ) ; cpoFunctions = cpoClass . getFunctionGroup ( getGroupType ( arr [ 0 ] , groupType , groupName , sess ) , groupName ) . getFunctions ( ) ; localLogger = LoggerFactory . getLogger ( cpoClass . getMetaClass ( ) ) ; int numStatements = 0 ; localLogger . info ( "=================== Class=<" + arr [ 0 ] . getClass ( ) + "> Type=<" + groupType + "> Name=<" + groupName + "> =========================" ) ; ArrayList < CassandraBoundStatementFactory > statemetnFactories = new ArrayList < > ( ) ; for ( T obj : arr ) { for ( CpoFunction function : cpoFunctions ) { boundStatementFactory = new CassandraBoundStatementFactory ( sess , this , cpoClass , function , obj , wheres , orderBy , nativeExpressions ) ; statemetnFactories . add ( boundStatementFactory ) ; numStatements ++ ; } } executeBatchStatements ( sess , statemetnFactories ) ; localLogger . info ( "=================== " + numStatements + " Updates - Class=<" + arr [ 0 ] . getClass ( ) + "> Type=<" + groupType + "> Name=<" + groupName + "> =========================" ) ; } catch ( Throwable t ) { String msg = "ProcessUpdateGroup failed:" + groupType + "," + groupName + "," + arr [ 0 ] . getClass ( ) . getName ( ) ; localLogger . error ( msg , t ) ; throw new CpoException ( msg , t ) ; } return unknownModifyCount ; }
DOCUMENT ME!

@param arr       DOCUMENT ME!
@param groupType DOCUMENT ME!
@param groupName DOCUMENT ME!
@param sess       DOCUMENT ME!
@return DOCUMENT ME!
@throws CpoException DOCUMENT ME!