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