    001/*
    002 * Copyright (c) 2009 The openGion Project.
    003 *
    004 * Licensed under the Apache License, Version 2.0 (the "License");
    005 * you may not use this file except in compliance with the License.
    006 * You may obtain a copy of the License at
    007 *
    008 *     http://www.apache.org/licenses/LICENSE-2.0
    009 *
    010 * Unless required by applicable law or agreed to in writing, software
    011 * distributed under the License is distributed on an "AS IS" BASIS,
    012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
    013 * either express or implied. See the License for the specific language
    014 * governing permissions and limitations under the License.
    015 */
    016package org.opengion.hayabusa.io;
    017
    018import java.io.InputStream;
    019import java.util.Map;
    020
    021import jakarta.servlet.http.HttpSession;
    022
    023/**
    024 * クラウドストレージ操作用のインターフェイス。
    025 *
    026 * 継承クラスのコンストラクターはコンテナ名とHTTPセッションを持たせます。
    027 *
    028 * @og.group
    029 * @og.rev 5.9.25.0 (2017/10/06) 新規作成
    030 *
    031 * @version 5.0
    032 * @author T.OTA
    033 * @since JDK7.0
    034 */
    035public interface StorageAPI {
    036        /**
    037         * トークンキー
    038         */
    039        String SESSION_CLOUD_TOKEN = "SESSION_CLOUD_TOKEN";                     // 7.2.9.4 (2020/11/20) public static final
    040
    041        /**
    042         *  ファイル情報に格納されている値
    043         *  サイズ
    044         */
    045        String FILEINFO_SIZE = "SIZE";                                                          // 7.2.9.4 (2020/11/20) public static final
    046
    047        /**
    048         * 最終更新時刻
    049         */
    050        String FILEINFO_LASTMODIFIED = "LASTMODIFIED";                          // 7.2.9.4 (2020/11/20) public static final
    051
    052        /**
    053         * 削除。
    054         *
    055         * @param filePath      削除ﾌｧｲﾙのﾊﾟｽ
    056         * @param hsession      ｾｯｼｮﾝ
    057         */
    058        void delete(String filePath, HttpSession hsession);
    059
    060        /**
    061         * ｺﾋﾟｰ。
    062         *
    063         * @param oldFilePath   ｺﾋﾟｰ元ﾌｧｲﾙﾊﾟｽ
    064         * @param newFilePath   ｺﾋﾟｰ先ﾌｧｲﾙﾊﾟｽ
    065         * @param hsession              ｾｯｼｮﾝ
    066         */
    067        void copy(String oldFilePath, String newFilePath, HttpSession hsession);
    068
    069        /**
    070         * ﾀﾞｳﾝﾛｰﾄﾞ。
    071         *
    072         * @param filePath      ﾀﾞｳﾝﾛｰﾄﾞ対象のﾌｧｲﾙﾊﾟｽ
    073         * @param hsession      ｾｯｼｮﾝ
    074         * @return ストリーム
    075         */
    076        InputStream get(String filePath, HttpSession hsession);
    077
    078        /**
    079         * ｱｯﾌﾟﾛｰﾄﾞ。
    080         *
    081         * @param partInputStream       ｱｯﾌﾟﾛｰﾄﾞ対象のｽﾄﾘｰﾑ
    082         * @param updFolder             ｱｯﾌﾟﾛｰﾄﾞﾌｫﾙﾀ名
    083         * @param updFileName           ｱｯﾌﾟﾛｰﾄﾞﾌｧｲﾙ名
    084         * @param hsession                      ｾｯｼｮﾝ
    085         */
    086        void add(InputStream partInputStream, String updFolder, String updFileName, HttpSession hsession);
    087
    088        /**
    089         * ﾌｧｲﾙ名変更。
    090         *
    091         * @param fileUrl               ﾌｧｲﾙﾊﾟｽ
    092         * @param oldFileName   変更前ﾌｧｲﾙ名
    093         * @param newFileName   変更後ﾌｧｲﾙ名
    094         * @param useBackup     変更後ﾌｧｲﾙ名が既に存在する場合のﾊﾞｯｸｱｯﾌﾟ作成ﾌﾗｸﾞ
    095         * @param session               ｾｯｼｮﾝ
    096         */
    097        void rename(String fileUrl, String oldFileName, String newFileName, final boolean useBackup, HttpSession session);
    098
    099        /**
    100         * ﾌｧｲﾙ一覧取得。
    101         *
    102         * @param startsWith    ﾊﾟｽの前方一致
    103         * @param hsession              ｾｯｼｮﾝ
    104         * @return                              ﾌｧｲﾙﾊﾟｽ一覧
    105         */
    106        String[] list(String startsWith, HttpSession hsession);
    107
    108        /**
    109         * ﾌｧｲﾙ存在ﾁｪｯｸ。
    110         *
    111         * @param path                  ﾌｧｲﾙﾊﾟｽ
    112         * @param hsession              ｾｯｼｮﾝ
    113         * @return                              true:存在 false:存在しない
    114         */
    115        boolean exists(String path, HttpSession hsession);
    116
    117        /**
    118         * ﾌｧｲﾙ情報取得。
    119         *
    120         * @param path                  ﾌｧｲﾙﾊﾟｽ
    121         * @param hsession              ｾｯｼｮﾝ
    122         * @return                              ﾌｧｲﾙ情報格納Map
    123         */
    124        Map<String,String> getInfo(String path, HttpSession hsession);
    125}