@Override
  public Map<String, TotalNum> getTotalUsage_Schema2(Scan scan) throws IOException {

    // System.err.println("scanning");
    scan.addFamily(colFamilyStat);

    InternalScanner scanner =
        ((RegionCoprocessorEnvironment) getEnvironment()).getRegion().getScanner(scan);
    List<KeyValue> res = new ArrayList<KeyValue>();
    Map<String, TotalNum> result = new HashMap<String, TotalNum>();
    boolean hasMoreResult = false;
    try {
      do {
        hasMoreResult = scanner.next(res);
        for (KeyValue kv : res) {
          String stationId = Bytes.toString(kv.getRow()).split("-")[1];
          String value = new String(kv.getValue());
          Long usage = Long.parseLong(value.split(";")[1]);
          if (result.containsKey(stationId)) {
            TotalNum tn = result.get(stationId);
            tn.add(usage);
            result.put(stationId, tn);
          } else {
            TotalNum tn = new TotalNum();
            tn.add(usage);
            result.put(stationId, tn);
          }
        }
        res.clear();
      } while (hasMoreResult);
    } finally {
      scanner.close();
    }
    return result;
  }
 @Override
 public Map<String, TotalNum> giveTotalUsage(List<String> stationIds, Scan scan)
     throws IOException {
   for (String qualifier : stationIds) {
     log.debug("adding qualifier: " + qualifier);
     String colName = Integer.toString(Integer.parseInt(qualifier));
     scan.addColumn(colFamily, colName.getBytes());
   }
   InternalScanner scanner =
       ((RegionCoprocessorEnvironment) getEnvironment()).getRegion().getScanner(scan);
   List<KeyValue> res = new ArrayList<KeyValue>();
   Map<String, TotalNum> result = new HashMap<String, TotalNum>();
   boolean hasMoreResult = false;
   try {
     do {
       hasMoreResult = scanner.next(res);
       for (KeyValue kv : res) {
         // log.debug("got a kv: " + kv);
         long emptyDocks = getEmptyDocks(kv);
         String id = Bytes.toString(kv.getQualifier());
         TotalNum tn;
         if (result.containsKey(id)) {
           tn = result.get(id);
         } else {
           tn = new TotalNum();
         }
         tn.add(emptyDocks);
         // emptyDocks = emptyDocks + (prevVal != null ? prevVal.intValue() : 0);
         // log.debug("result to be added is: " + emptyDocks + " id: " + id);
         result.put(id, tn);
       }
       res.clear();
     } while (hasMoreResult);
   } finally {
     scanner.close();
   }
   return result;
 }