content: package com.sohu.cache.client.service.impl;
  
  import java.util.ArrayList;
  import java.util.Collections;
  import java.util.Date;
  import java.util.HashSet;
  import java.util.List;
  import java.util.Set;
  
  import org.apache.commons.collections.CollectionUtils;
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  
  import com.sohu.cache.client.service.ClientVersionService;
  import com.sohu.cache.dao.AppClientVersionDao;
  import com.sohu.cache.entity.AppClientVersion;
  
  /**
   * 客户端版本信息
   * 
   * @author leifu
   * @Date 2015年2月2日
   * @Time 上午10:19:59
   */
  public class ClientVersionServiceImpl implements ClientVersionService {
  
      private final Logger logger = LoggerFactory.getLogger(ClientVersionServiceImpl.class);
  
      private AppClientVersionDao appClientVersionDao;
  
      /**
       * 办公网段ip
       */
      private static Set<String> OFFICE_IP = new HashSet<String>();
      static {
          OFFICE_IP.add("10.1");
          OFFICE_IP.add("10.2");
          OFFICE_IP.add("10.7");
      }
  
      @Override
      public void saveOrUpdateClientVersion(long appId, String appClientIp, String clientVersion) {
          try {
              AppClientVersion appClientVersion = new AppClientVersion();
              appClientVersion.setAppId(appId);
              appClientVersion.setClientIp(appClientIp);
              appClientVersion.setClientVersion(clientVersion);
              appClientVersion.setReportTime(new Date());
              appClientVersionDao.saveOrUpdateClientVersion(appClientVersion);
          } catch (Exception e) {
              logger.error(e.getMessage(), e);
          }
      }
  
      @Override
      public List<AppClientVersion> getAppAllClientVersion(long appId) {
          try {
              return appClientVersionDao.getAppAllClientVersion(appId);
          } catch (Exception e) {
              logger.error(e.getMessage(), e);
              return Collections.emptyList();
          }
      }
  
      @Override
      public List<AppClientVersion> getAppAllServerClientVersion(long appId) {
          List<AppClientVersion> appClientVersionList = getAppAllClientVersion(appId);
          if (CollectionUtils.isEmpty(appClientVersionList)) {
              return Collections.emptyList();
          }
          List<AppClientVersion> appClientVersionServerList = new ArrayList<AppClientVersion>();
          for (AppClientVersion appClientVersion : appClientVersionList) {
              String clientIp = appClientVersion.getClientIp();
              String[] items = clientIp.split(".");
              //过滤办公网段ip
              if (!OFFICE_IP.contains(items[0] + "." + items[1])) {
                  appClientVersionServerList.add(appClientVersion);
              }
          }
          return appClientVersionServerList;
      }
      
      @Override
      public List<AppClientVersion> getAll(long appId) {
          try {
              return appClientVersionDao.getAll(appId);
          } catch (Exception e) {
              logger.error(e.getMessage(), e);
              return Collections.emptyList();
          }
      }
  
      public void setAppClientVersionDao(AppClientVersionDao appClientVersionDao) {
          this.appClientVersionDao = appClientVersionDao;
      }
  
      
  
  }
  