    001package org.opengion.hayabusa.io;
    002
    003import java.io.File;
    004
    005import org.opengion.fukurou.model.FileOperation;
    006import org.opengion.fukurou.model.FileOperationFactory;
    007import org.opengion.fukurou.util.StringUtil;
    008import org.opengion.hayabusa.common.HybsSystem;
    009import org.opengion.fukurou.system.HybsConst;                                           // 5.10.9.0 (2019/03/01)
    010
    011/**
    012 * クラウドを含むファイル操作クラスの生成
    013 *
    014 * 直接fukurouをCallしてもよいのですが、hayabusaからの呼び出しではシステムリソースを参照する必要があるため
    015 * ラッパー的にこのクラスを経由してCallする事でシステムリソースが使われるようにしておきます。
    016 * （タグ以外からも呼び出されるため、commonTagSupportではなく専用クラスをioパッケージに作成しています）
    017 *
    018 * ローカルのファイルを扱いたい場合は、pluginにDEFAULTを指定してください。
    019 *
    020 * @og.rev 5.10.8.0 (2019/02/01) 新規作成
    021 * @og.group
    022 *
    023 * @version 5.0
    024 * @author Takahashi Masakazu
    025 * @since JDK7.0
    026 */
    027public final class HybsFileOperationFactory {
    028        private static String defPlugin=HybsSystem.sys("CLOUD_TARGET");
    029        private static String defBucket=HybsSystem.sys("CLOUD_BUCKET");
    030
    031        /**
    032         * コンストラクタはprivate化しておきます。
    033         */
    034        private HybsFileOperationFactory(){
    035                // コンストラクタ
    036        }
    037
    038        /**
    039         * fukurouのFileOperationFactoryを呼び出してFOInterfaceを取得します。
    040         * plugin,buketを指定しない場合はシステムリソースを利用します。
    041         *
    042         * @param plugin プラグイン名
    043         * @param bucket バケット名
    044         * @param path ファイルパス
    045         * @return FileOperationインスタンス
    046         */
    047        public static FileOperation create(final String plugin, final String bucket, final String path) {
    048                return FileOperationFactory.newStorageOperation( StringUtil.nval(plugin, defPlugin), StringUtil.nval(bucket, defBucket), path );
    049        }
    050
    051        /**
    052         * ディレクトリとファイル名を指定用です。
    053         *
    054         * @param plugin プラグイン名
    055         * @param bucket バケット名
    056         * @param dir ディレクトリパス
    057         * @param file ファイル名
    058         * @return FileOperationインスタンス
    059         */
    060        public static FileOperation create(final String plugin, final String bucket, final String dir, final String file) {
    061                final StringBuilder sb = new StringBuilder(HybsConst.BUFFER_SMALL)
    062                                                                .append(dir).append(HybsConst.FS).append(file);
    063                return create(plugin, bucket, sb.toString());
    064        }
    065
    066        /**
    067         * FileOperation(ディレクトリ)とファイル名を指定用です。
    068         *
    069         * @param plugin プラグイン名
    070         * @param bucket バケット名
    071         * @param dir ファイル(ディレクトリパス取得)
    072         * @param file ファイル名
    073         * @return FileOperationインスタンス
    074         */
    075        public static FileOperation create(final String plugin, final String bucket, final File dir, final String file) {
    076                final StringBuilder sb = new StringBuilder(HybsConst.BUFFER_SMALL)
    077                                                                .append(dir.getPath()).append(HybsConst.FS).append(file);
    078                return create(plugin, bucket, sb.toString());
    079        }
    080
    081}