@Override
 public FarmDto getFarm(Long farmNo) {
   List<FarmDto> dtos = getFarms(null, null);
   for (FarmDto dto : dtos) {
     if (farmNo.equals(dto.getFarm().getFarmNo())) {
       return dto;
     }
   }
   return null;
 }
 @Override
 public List<FarmDto> getFarms(Long userNo, Long loginUserNo) {
   List<FarmDto> dtos = new ArrayList<FarmDto>();
   List<Farm> farms = XmlDataLoader.getData("farm.xml", Farm.class);
   for (Farm farm : farms) {
     FarmDto dto = new FarmDto();
     dto.setFarm(farm);
     dtos.add(dto);
   }
   return dtos;
 }
  /** {@inheritDoc} */
  @Override
  public FarmDto getFarm(Long farmNo) {
    Farm farm = farmDao.read(farmNo);

    if (farm == null) {
      // ファーム情報が存在しない場合
      return null;
    }

    FarmDto dto = new FarmDto();
    dto.setFarm(farm);

    return dto;
  }
  /** {@inheritDoc} */
  @Override
  public List<FarmDto> getFarms(Long userNo, Long loginUserNo) {

    // ユーザー取得
    User user = userDao.read(loginUserNo);
    // 検索結果ファーム
    List<Farm> farms = new ArrayList<Farm>();
    // 戻り値用
    List<FarmDto> dtos = new ArrayList<FarmDto>();

    // パワーユーザは全権
    if (user.getPowerUser()) {
      farms = farmDao.readAll();
      for (Farm farm : farms) {
        FarmDto dto = new FarmDto();
        dto.setFarm(farm);
        dtos.add(dto);
      }
    }
    // マスターユーザー及び一般はマスター管理下
    else {
      // データ取得はマスターユーザ
      farms = farmDao.readByUserNo(userNo);

      // ユーザー権限取得
      List<UserAuth> userAuth = userAuthDao.readByUserNo(loginUserNo);
      HashMap<Long, Boolean> authMap = new HashMap<Long, Boolean>();
      for (UserAuth auth : userAuth) {
        if (auth.getFarmUse()) {
          authMap.put(auth.getFarmNo(), auth.getFarmUse());
        }
      }

      for (Farm farm : farms) {
        // 利用可能なファームのみ登録する ※マスターユーザーは全て
        if ((loginUserNo.equals(userNo)) || authMap.containsKey(farm.getFarmNo())) {
          FarmDto dto = new FarmDto();
          dto.setFarm(farm);
          dtos.add(dto);
        }
      }
    }

    // ソート
    Collections.sort(dtos, Comparators.COMPARATOR_FARM_DTO);

    return dtos;
  }