001package org.opengion.hayabusa.io;
002
003import java.io.InputStream;
004import java.util.Map;
005
006import javax.servlet.http.HttpSession;
007
008/**
009 * クラウドストレージ操作用のインターフェイス。
010 * 
011 * 継承クラスのコンストラクターはコンテナ名とHTTPセッションを持たせます。
012 *
013 * @og.group
014 * @og.rev 5.9.25.0 (2017/10/06) 新規作成
015 *
016 * @version 5.0
017 * @author T.OTA
018 * @sinse JDK7.0
019 */
020public interface StorageAPI {
021        /**
022         * トークンキー
023         */
024        public static final String SESSION_CLOUD_TOKEN = "SESSION_CLOUD_TOKEN";
025        
026        /**
027         *  ファイル情報に格納されている値
028         *  サイズ
029         */
030        public static final String FILEINFO_SIZE = "SIZE";
031
032        /**
033         * 最終更新時刻
034         */
035        public static final String FILEINFO_LASTMODIFIED = "LASTMODIFIED";
036
037        /**
038         * 削除
039         *
040         * @param filePath      削除ファイルのパス
041         * @param hsession      セッション
042         */
043        void delete(String filePath, HttpSession hsession);
044
045        /**
046         * コピー
047         *
048         * @param oldFilePath   コピー元ファイルパス
049         * @param newFilePath   コピー先ファイルパス
050         * @param hsession              セッション
051         */
052        void copy(String oldFilePath, String newFilePath, HttpSession hsession);
053
054        /**
055         * ダウンロード
056         *
057         * @param filePath      ダウンロード対象のファイルパス
058         * @param hsession      セッション
059         * @return ストリーム
060         */
061        InputStream get(String filePath, HttpSession hsession);
062
063        /**
064         * アップロード
065         *
066         * @param partInputStream       アップロード対象のストリーム
067         * @param updFolder             アップロードフォルタ名
068         * @param updFileName           アップロードファイル名
069         * @param hsession                      セッション
070         */
071        void add(InputStream partInputStream, String updFolder, String updFileName, HttpSession hsession);
072
073        /**
074         * ファイル名変更
075         *
076         * @param fileUrl               ファイルパス
077         * @param oldFileName   変更前ファイル名
078         * @param newFileName   変更後ファイル名
079         * @param useBackup     変更後ファイル名が既に存在する場合のバックアップ作成フラグ
080         * @param session               セッション
081         */
082        void rename(String fileUrl, String oldFileName, String newFileName, final boolean useBackup, HttpSession session);
083
084        /**
085         * ファイル一覧取得
086         *
087         * @param startsWith    パスの前方一致
088         * @param hsession              セッション
089         * @return                              ファイルパス一覧
090         */
091        String[] list(String startsWith, HttpSession hsession);
092
093        /**
094         * ファイル存在チェック
095         *
096         * @param path                  ファイルパス
097         * @param hsession              セッション
098         * @return                              true:存在 false:存在しない
099         */
100        boolean exists(String path, HttpSession hsession);
101
102        /**
103         * ファイル情報取得
104         *
105         * @param path                  ファイルパス
106         * @param hsession              セッション
107         * @return                              ファイル情報格納Map
108         */
109        Map<String,String> getInfo(String path, HttpSession hsession);
110}