技術情報

テンポラリディレクトリを取得する方法

-- 2013.01.29 GroupSession Version4.1.0 --

はじめに

GroupSessionではファイルや添付ファイルなどを一時的に保存するディレクトリを共通管理しています。

ここではのそれらのテンポラリディレクトリの取得方法や、バイナリーファイルの保存先ディレクトリを取得する方法について説明します。


前提条件

このドキュメントは、Java、Apache Struts、Jakarta Antについての知識がある事を前提とします。


テンポラリディレクトリの取得方法

テンポラリディレクトリを取得する方法を「Hello World!」プラグインを作成する方法で作成したソースファイルを元に説明します。


テンポラリディレクトリを取得するにはjp.groupsession.v2.struts.AbstractGsActionを継承したクラスからgetTempPath(HttpServletRequest)メソッドを実行することで取得できます。

getTempPath(HttpServletRequest)メソッドで取得できるテンポラリディレクトリはあくまでもテンポラリのルートと考えてください。そのまま使用すると他のセッションと競合する可能性があります。

※__getTempDir(String sessionId)を参照


バイナリーファイルを保存するディレクトリを取得するには、jp.groupsession.v2.cmn.biz.CommonBizのgetSaveFullPath(UDate, Long, String)メソッドを使用します。

※__getSaveDir(int, int)を参照

HelloWorldAction.java

package jp.groupsession.v2.newplugin.helloworld;
  import java.sql.Connection;
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;
  import javax.servlet.http.HttpSession;
  import jp.co.sjts.util.date.UDate;
  import jp.co.sjts.util.io.IOTools;
  import jp.groupsession.v2.cmn.GSConst;
  import jp.groupsession.v2.cmn.biz.CommonBiz;
  import jp.groupsession.v2.cmn.dao.BaseUserModel;
  import jp.groupsession.v2.cmn.dao.MlCountMtController;
  import jp.groupsession.v2.struts.AbstractGsAction;
  import org.apache.struts.action.ActionForm;
  import org.apache.struts.action.ActionForward;
  import org.apache.struts.action.ActionMapping;
  /**
   * [機  能] HelloWorldのアクションクラス
   * [解  説]
   * [備  考]
   *
   * @author JTS
   */
  public class HelloWorldAction extends AbstractGsAction {

      /**
       * [機  能] アクションを実行する
       * [解  説]
       * [備  考]
       * @param map ActionMapping
       * @param form ActionForm
       * @param req HttpServletRequest
       * @param res HttpServletResponse
       * @param con DB Connection
       * @return ActionForward
       * @throws Exception 実行時例外
       */
      public ActionForward executeAction(ActionMapping map,
                                          ActionForm form,
                                          HttpServletRequest req,
                                          HttpServletResponse res,
                                          Connection con)
          throws Exception {

          //HttpServletRequestからHttpSessionを取得します。
          HttpSession session = req.getSession();
          BaseUserModel usModel =
            (BaseUserModel) session.getAttribute(GSConst.SESSION_KEY);
          //セッション情報からユーザSIDを取得
          int usrSid = usModel.getUsrsid();
          //セッションIDを取得
          String sessionId = session.getId();
          //添付ディレクトリ
          String tempDir = __getTempDir(req, sessionId);

          //採番マスタコントローラーを取得
          MlCountMtController cntCon = getCountMtController(req);
          //採番マスタからバイナリーIDを取得
          int newId = (int) cntCon.getSaibanNumber("binary", "bin", usrSid);
          //save用ディレクトリ
          String saveDir = __getSaveDir(newId, usrSid);

          return map.getInputForward();
      }
    /**
     * HelloWorld用の添付ディレクトリを取得する
     * [機  能]
     * [解  説]
     * [備  考]
     * @param sessionId セッションID
     * @return String ディレクトリPATH
     */
    private String __getTempDir(HttpServletRequest req, String sessionId) {

        //一時添付ディレクトリのRootパスを取得
        String tempRootDir = getTempPath(req);

        //任意のディレクトリを整形
        StringBuffer buf = new StringBuffer("");
        buf.append(tempRootDir);
        buf.append("/");
        buf.append("helloworld");
        buf.append("/");
        buf.append(sessionId);
        buf.append("/");
        return IOTools.replaceFileSep(buf.toString());
    }
    /**
     * バイナリーデータの保存先ディレクトリを取得する
     * [機  能]
     * [解  説]
     * [備  考]
     * @param newId バイナリーID
     * @param usrSid ユーザSID
     * @return String ディレクトリPATH
     */
    private String __getSaveDir(int newId, int usrSid) {

        //アプリケーションRootPathを取得
        String appRootPath = getAppRootPath();
        CommonBiz biz = new CommonBiz();
        return biz.getSaveFullPath(new UDate(), new Long(newId), appRootPath);
    }
  }

    

Copyright 日本トータルシステム株式会社