Пример #1
0
  @SuppressWarnings("rawtypes")
  public List LoadList(List<Long> p_pids) {
    if (p_pids == null) return null;
    final List<Long> pids = new ArrayList<Long>(p_pids.size());
    for (Number obj : p_pids) {
      pids.add(obj.longValue());
    }
    String cache = this.CacheRegion();
    List<POJO> prjs =
        new ArrayList<POJO>(pids.size()) {
          {
            for (int i = 0; i < pids.size(); i++) add(null);
          }
        };
    List<Long> no_cache_ids = new ArrayList<Long>();
    for (int i = 0; i < pids.size(); i++) {
      long pid = pids.get(i);
      POJO obj = (POJO) CacheManager.get(cache, pid);

      if (obj != null) prjs.set(i, obj);
      else {
        no_cache_ids.add(pid);
      }
    }

    if (no_cache_ids.size() > 0) {
      List<? extends POJO> no_cache_prjs = BatchGet(no_cache_ids);
      if (no_cache_prjs != null)
        for (POJO obj : no_cache_prjs) {
          prjs.set(pids.indexOf(obj.getId()), obj);
        }
    }

    no_cache_ids = null;

    // Check Users
    if (prjs != null && IsAutoLoadUser()) {
      List<Long> no_cache_userids = new ArrayList<Long>();
      String user_cache = User.INSTANCE.CacheRegion();
      for (POJO pojo : prjs) {
        if (pojo == null) continue;
        long userid = pojo.GetAutoLoadUser();
        if (userid > 0 && !no_cache_userids.contains(userid)) {
          POJO user = (POJO) CacheManager.get(user_cache, userid);
          if (user == null) {
            no_cache_userids.add(userid);
          }
        }
      }
      if (no_cache_userids.size() > 0) User.INSTANCE.BatchGet(no_cache_userids);

      no_cache_userids = null;
    }

    return prjs;
  }