Package com.appspot.piment.jobs

Source Code of com.appspot.piment.jobs.JobServiceController

package com.appspot.piment.jobs;

import java.util.List;
import java.util.Map;
import java.util.logging.Logger;

import net.arnx.jsonic.JSON;

import com.appspot.piment.Constants;
import com.appspot.piment.dao.AuthTokenDao;
import com.appspot.piment.dao.ConfigItemDao;
import com.appspot.piment.dao.UserMapDao;
import com.appspot.piment.model.AuthToken;
import com.appspot.piment.model.Job;
import com.appspot.piment.model.UserMap;
import com.appspot.piment.model.WeiboSource;

public class JobServiceController {

  private static final Logger log = Logger.getLogger(Constants.FQCN + JobServiceController.class.getName());

  private AuthTokenDao authTokenDao = null;
  private UserMapDao userMapDao = null;
  protected Map<String, String> configMap = null;
  private SinaMessageSync sinaMessageSync = null;
  private TqqMessageSync tqqMessageSync = null;

  public JobServiceController() {
  super();

  this.authTokenDao = new AuthTokenDao();

  this.userMapDao = new UserMapDao();

  ConfigItemDao configItemDao = new ConfigItemDao();
  this.configMap = configItemDao.getValues();

  // tqqロボットユーザIDを元にAccessTokenを取り出す
  AuthToken tqqRobotAuthToken = authTokenDao.getByUserId(this.configMap.get("qq.piment.robot.id"), WeiboSource.Tqq);

  // sinaロボットユーザIDを元にAccessTokenを取り出す
  AuthToken sinaRobotAuthToken = authTokenDao.getByUserId(this.configMap.get("sina.piment.robot.id"), WeiboSource.Sina);

  this.sinaMessageSync = new SinaMessageSync(this.configMap);
  this.sinaMessageSync.setTqqRobotToken(tqqRobotAuthToken);

  this.tqqMessageSync = new TqqMessageSync(configMap);
  this.tqqMessageSync.setSinaRobotToken(sinaRobotAuthToken);
  }

  public void run(Job job) {

  // 処理対象ユーザ一覧をデータストアから取得する
  List<UserMap> uerMaps = userMapDao.getUserMaps(job.getFrequency());

  // ユーザ毎に同期化処理を行う
  for (UserMap user : uerMaps) {

    try {
    // sinaのユーザIDを元にAccessTokenを取り出す
    AuthToken sinaAuthToken = authTokenDao.getByUserId(user.getSinaUserId(), WeiboSource.Sina);
    // tqqのユーザIDを元にAccessTokenを取り出す
    AuthToken tqqAuthToken = authTokenDao.getByUserId(user.getTqqUserId(), WeiboSource.Tqq);

    // トークン情報渡す
    this.sinaMessageSync.setSinaToken(sinaAuthToken);
    this.sinaMessageSync.setTqqToken(tqqAuthToken);
    this.tqqMessageSync.setSinaToken(sinaAuthToken);
    this.tqqMessageSync.setTqqToken(tqqAuthToken);

    // [ST001 START] - SINAからTQQへ同期化判定 -
    if (user.isSinaToTqq()) {
      log.info("sina[" + user.getSinaUserId() + "] から tqq[" + user.getTqqUserId() + "]へ同期化開始");

      // ユーザの設定よりリトライ処理の判定
      if (user.isAutoRetry()) {
      this.sinaMessageSync.retrySyncUserMessage(user);

      if (user.isSinaToTqqComment()) {
        this.sinaMessageSync.retrySyncUserComment(user);
      }
      }

      // メッセージ同期化
      this.sinaMessageSync.syncUserMessage(user);

      if (user.isSinaToTqqComment()) {
      // コメント同期化
      this.sinaMessageSync.syncUserComment(user);
      }

    } // -- [ST001 END]

    // [ST002 START] - TQQからSINAへ同期化判定 -
    if (user.isTqqToSina()) {
      //log.info("tqq[" + user.getTqqUserId() + "] から sina[" + user.getSinaUserId() + "]へ同期化開始");

      // メッセージ同期化
      //this.tqqMessageSync.syncUserMessage(user);
    }

    } catch (Exception e) {
    String msg001 = "sina[" + user.getSinaUserId() + "] と tqq[" + user.getTqqUserId() + "]の同期化中不具合が起きました";
    log.severe(msg001);
    log.severe(JSON.encode(e, true));

    e.printStackTrace();
    // 例外が起きても次ぎの処理対象の同期化を行う
    }
  }
  }

}
TOP

Related Classes of com.appspot.piment.jobs.JobServiceController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.