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 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(String plugin, String bucket, 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(String plugin, String bucket, String dir, String file) {
060                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(String plugin, String bucket, File dir, String file) {
075                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}