コード例 #1
0
ファイル: GameMainAction.java プロジェクト: akswosn/ngc
  /**
   * 즐겨찾기 추가 Action
   *
   * @return
   */
  public String addFavorite() {

    PropertyReader gProps = PropertyReader.getInstance();

    String FAVORITE_URL = gProps.getPropertyValue("FAVORITE_URL");
    String FAVORITE_V_TITLE = gProps.getPropertyValue("FAVORITE_V_TITLE");
    String NGC_DOMAIN = Constant.NGC_DOMAIN;
    String WAP_CONTEXT_NAME = Constant.NGC_CONTEXT_NAME;
    String SU = gProps.getPropertyValue("SK_SU");
    String SM = gProps.getPropertyValue("SK_SM");
    String favoriteUrl =
        FAVORITE_URL
            + "?v_title="
            + FAVORITE_V_TITLE
            + "&v_url="
            + NGC_DOMAIN
            + WAP_CONTEXT_NAME
            + "?SU="
            + SU
            + "&SM="
            + SM;

    m_favoriteURL = favoriteUrl;

    return SUCCESS;
  }
コード例 #2
0
ファイル: GameLogExecutorNate.java プロジェクト: akswosn/ngc
public class GameLogExecutorNate extends SqlMapBuilder implements Executor {

  private static Logger m_traceLogger = Logger.getLogger("TRACE");
  private static PropertyReader pror = PropertyReader.getInstance();

  private static final String ECG_LOG_PATH = "";

  // 선언된 값만큼 LOG파일에서 데이터를 읽어와 배치를 실행한다.
  private static final int INSERT_DATA_LIMIT_COUNT = 100;

  int totalCount = 0;

  @Override
  public void execute() throws Exception {

    m_traceLogger.info("GameLogExecutorNate start");
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
    BufferedReader br = null;
    try {
      Calendar c = Calendar.getInstance();
      c.add(Calendar.DAY_OF_YEAR, -1); // 하루전 날짜 가져옴
      String str = String.format("%1$tF", c); // yyyy-mm-dd
      String path = pror.getPropertyValue("GAME_LOG_PATH") + "stat.log_" + str;

      ArrayList<GameLogVo> gameVoList = null;

      // String path = pror.getPropertyValue("GAME_LOG_PATH") + "stat.log_2011-07-12";	//test

      File f = new File(path);

      if (m_traceLogger.isDebugEnabled()) {
        m_traceLogger.debug(" [ File : " + path + "]Is File Exist : " + f.exists());
      }

      if (!f.exists()) {
        // stat.log_yyyy-mm-dd 파일이 존재하지 않는 경우 stat.log 마지막 수정일 조회
        String pathDefault = pror.getPropertyValue("GAME_LOG_PATH") + "stat.log";
        File defaultFile = new File(pathDefault);
        String statModyfy = sdf.format(defaultFile.lastModified()); // stat.log  파일 마지막 변경일

        String yesterDay = sdf.format(c.getTime()); // 어제일짜

        if (m_traceLogger.isDebugEnabled()) {
          m_traceLogger.debug("PageViewStat log path : " + pathDefault);

          m_traceLogger.debug("YesterDay : " + yesterDay);
          m_traceLogger.debug("stat.log Last Modify Day : " + statModyfy);
        }

        if (yesterDay.equals(statModyfy)) {

          // stat.log 전일 일짜로 수정한 기록이 있을 경우 stat.log DB에 저장
          try {
            br = new BufferedReader(new FileReader(defaultFile));

            // 파일 읽기
            gameVoList = getGameLogList(br);

            if (gameVoList == null) {
              m_traceLogger.warn("Log Data Is Empty .... exit!!");
            } else {

              // DB 저장
              boolean result = true;
              while (result) {
                result = insertLog(gameVoList);
              }

              if (m_traceLogger.isDebugEnabled()) {
                m_traceLogger.debug("gameVoList : " + gameVoList);
                m_traceLogger.debug("Total Count : " + gameVoList.size());
              }
            }

            // defaultFile.delete();
          } catch (Exception e) {
            m_traceLogger.error(e.getMessage());
          } finally {
            m_traceLogger.debug("GameLogExecutorNate end");
          }
        } else {
          // 수정한 기록이 없을 경루 DB기록 안함
          m_traceLogger.error("PageViewStat log file does not exist.");
        }
      } else {
        // stat.log_yyyy-mm-dd 어제일짜 로그파일이 존재하는 경우 DB 기록
        if (m_traceLogger.isDebugEnabled()) {
          m_traceLogger.debug("PageViewStat log path : " + path);
        }

        try {
          br = new BufferedReader(new FileReader(f));

          // 파일 읽기
          gameVoList = getGameLogList(br);

          if (gameVoList == null) {
            m_traceLogger.warn("Log Data Is Empty .... exit!!");
          } else {
            // DB 저장
            boolean result = true;
            while (result) {
              result = insertLog(gameVoList);
            }

            if (m_traceLogger.isDebugEnabled()) {
              m_traceLogger.debug("gameVoList : " + gameVoList);
              m_traceLogger.debug("Total Count : " + gameVoList.size());
            }
          }
          // f.delete();
        } catch (Exception e) {
          e.printStackTrace();
          m_traceLogger.error(e.getMessage());
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
      m_traceLogger.error(e.getMessage());
    }

    m_traceLogger.info("GameLogExecutorNate end");
  }

  /**
   * DB 데이터 저장
   *
   * @param gameVoList
   * @return
   */
  private boolean insertLog(ArrayList<GameLogVo> gameVoList) {
    int insertIndex = 0;
    boolean result = true;
    try {
      getSqlMapClient().startTransaction();
      m_traceLogger.info("startTransaction()");
      getSqlMapClient().startBatch();
      m_traceLogger.info("startBatch()");

      while (result) {
        getSqlMapClient().insert("Daemon.insertLog", gameVoList.get(totalCount));
        totalCount++;
        insertIndex++;

        if (totalCount == gameVoList.size()) {
          // 리스트 사이즈 마지막 인덱스일경우 중지
          result = false;
        } else if (insertIndex == INSERT_DATA_LIMIT_COUNT) {
          // 100개 입력시 중지
          result = false;
        }
      }

      getSqlMapClient().executeBatch();
      m_traceLogger.info("executeBatch()");
      getSqlMapClient().commitTransaction();
      m_traceLogger.info("commitTransaction()");
    } catch (SQLException e) {
      m_traceLogger.error("stat.log File DB Insert Error [ message : " + e.getMessage() + " ]");
      m_traceLogger.error("rollbackTransaction()");
      printQuery("Daemon.insertLog", gameVoList.get(totalCount));
    } catch (Exception e) {
      m_traceLogger.error("rollbackTransaction()");
      printQuery("Daemon.insertLog", gameVoList.get(totalCount));
      m_traceLogger.error(e.getMessage());
      e.printStackTrace();
    } finally {
      try {
        getSqlMapClient().endTransaction();
        if (totalCount == gameVoList.size()) {
          // 리스트 데이터를 모두 저장하였으면  false
          return false;
        } else {
          // 저장할 데이터가 남아있으면 true
          return true;
        }
      } catch (SQLException e) {
        m_traceLogger.error("endTransaction ERROR");
      }
      m_traceLogger.info("EndTransaction()");
    }
    return result;
  }

  /**
   * log 파일을 GameLogVO 객체 리스트로 변환
   *
   * @param br
   * @return
   * @throws IOException
   */
  private ArrayList<GameLogVo> getGameLogList(BufferedReader br) throws IOException {
    String r = "";
    GameLogVo vo = null;
    ArrayList<GameLogVo> list = new ArrayList<GameLogVo>();

    while ((r = br.readLine()) != null) {
      vo = new GameLogVo();
      String[] fValue = r.split(",");

      if (fValue != null) {

        if (fValue.length == 3 || fValue.length == 4) {
          vo.setDate(transCal(fValue[0]));
          vo.setMdn(fValue[1]);
          vo.setPage_url(fValue[2]);
          vo.setPageCount(1);

          if (fValue.length != 4) {
            vo.setSiteCode("");
          } else {
            vo.setSiteCode(fValue[3]);
          }

          if (list.size() == 0) {
            list.add(vo);
          } else {
            boolean isExistData = false;
            int equalsListIndex = 0;
            for (int i = 0; i < list.size(); i++) {
              if (vo.getMdn().equals(list.get(i).getMdn())
                  && vo.getPage_url().equals(list.get(i).getPage_url())
                  && vo.getSiteCode().equals(list.get(i).getSiteCode())) {

                isExistData = true;
                equalsListIndex = i;
              }
            }

            if (isExistData) {
              // 동일한 데이터 존재시 count + 1
              list.get(equalsListIndex).setPageCount(list.get(equalsListIndex).getPageCount() + 1);

            } else {
              // 동일한 데이터 존재하지 않을 경우
              list.add(vo);
            }
          }
        }
      }
    }

    if (list.isEmpty() || list.size() == 0) {
      return null;
    }

    return list;
  }

  public static String transCal(String date) {
    Calendar c = Calendar.getInstance();
    c.setTimeInMillis(Long.parseLong(date));
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");

    return sdf.format(c.getTime());
  }

  public static void main(String[] args) {

    Executor ex = new GameLogExecutorNate();

    try {
      ex.execute();
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
}