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}