    001package org.opengion.fukurou.model;
    002
    003import java.io.File;
    004import java.io.FileInputStream;
    005import java.io.FileNotFoundException;
    006import java.io.IOException;
    007import java.io.InputStream;
    008import java.nio.file.Files;
    009import java.nio.file.Paths;
    010import java.nio.file.StandardCopyOption;
    011
    012/**
    013 * ファイル操作のインタフェース
    014 *
    015 * ローカルサーバ、クラウドストレージ(AWS,AZURE,BLUEMIX,ORACLE)のファイル操作用です。
    016 * FileOperationFactoryを通して、インスタンスを生成可能です。
    017 * Fileクラスを継承しているため、通常のFileとしても扱えます。
    018 *
    019 * @og.group ファイル操作
    020 *
    021 * @og.rev 5.10.8.0 (2019/02/01) 新規作成
    022 * @og.rev 5.10.9.0 (2019/03/01) 変更対応
    023 * @author oota
    024 * @since       JDK7.0
    025 */
    026public class FileOperation extends File{
    027        //* このプログラムのVERSION文字列を設定します。{@VALUE} */
    028        private static final String VERSION = "7.0.2.1 (2019/03/04)" ;
    029        private static final long serialVersionUID = 702120190304L ;
    030
    031        private String myplugin;
    032        private String mybucket;
    033
    034        /**
    035         * コンストラクタ
    036         *
    037         * 初期化処理。
    038         *
    039         * @param path ファイルパス
    040         */
    041        public FileOperation(final String path) {
    042                super(path);
    043        }
    044
    045        /**
    046         * コンストラクタ
    047         *
    048         * FileOperationクラスでは、buketは使用しません。
    049         *
    050         * @param bucket バケット名
    051         * @param path ファイルパス
    052         */
    053        public FileOperation(final String bucket, final String path) {
    054                this(path);
    055                this.mybucket = bucket;
    056        }
    057
    058        /**
    059         * 書き込み処理
    060         *
    061         * InputStreamのデータを書き込みます。
    062         *
    063         * @param is 書き込みデータのInputStream
    064         * @throws IOException ファイル関連エラー情報
    065         */
    066        public void write(final InputStream is) throws IOException {
    067                // InpustStreamを対象パスに出力
    068                Files.copy(is, Paths.get(this.getPath()), StandardCopyOption.REPLACE_EXISTING);
    069        }
    070
    071        /**
    072         * 読み込み処理
    073         *
    074         * データを読み込み、InputStreamとして、返します。
    075         *
    076         * @return 読み込みデータのInputStream
    077         * @throws FileNotFoundException ファイル非存在エラー情報
    078         */
    079        public InputStream read() throws FileNotFoundException {
    080                return new FileInputStream(this.getPath());
    081        }
    082
    083        /**
    084         * コピー処理
    085         *
    086         * ファイルを指定先にコピーします。
    087         *
    088         * @param afPath コピー先
    089         * @return 成否フラグ
    090         */
    091        public boolean copy(final String afPath) {
    092                boolean flgRtn = false;
    093
    094                try {
    095                        // 指定パスのファイルを、指定先にコピー from;jdk7
    096                        Files.copy(Paths.get(this.getPath()), Paths.get(afPath), StandardCopyOption.REPLACE_EXISTING);
    097                        flgRtn = true;
    098                } catch (IOException ie) {
    099                        // スルーしてfalseを返す
    100                }
    101
    102                return flgRtn;
    103        }
    104
    105        /**
    106         * ファイル移動
    107         *
    108         * ファイルを指定先に移動します。
    109         *
    110         * @param afPath 移動先
    111         * @return 成否フラグ
    112         */
    113        public boolean move(final String afPath) {
    114                boolean flgRtn = false;
    115
    116                try {
    117                        // 指定パスのファイルを、指定先に移動 from:jdk7
    118                        Files.move(Paths.get(this.getPath()), Paths.get(afPath), StandardCopyOption.REPLACE_EXISTING);
    119                        flgRtn = true;
    120                } catch (IOException ie) {
    121                        // スルーしてfalseを返す
    122                }
    123                return flgRtn;
    124        }
    125
    126        /**
    127         * 保存先のローカル判定。
    128         *
    129         * 判定結果を返します。
    130         * trueの場合は、ローカル保存。
    131         * falseの場合は、クラウドストレージに保存です。
    132         *
    133         * @return ローカルフラグ
    134         */
    135        public boolean isLocal() {
    136                return true;
    137        }
    138
    139        /**
    140         * カノニカルファイル取得。
    141         *
    142         * カノニカルファイル情報を取得します。
    143         *
    144         * @throws IOException ファイル関連エラー情報
    145         * @return カノニカルファイル情報
    146         */
    147        @Override
    148        public FileOperation getCanonicalFile() throws IOException {
    149                final String canonPath = getCanonicalPath();
    150                return new FileOperation(canonPath);
    151        }
    152
    153        /**
    154         * バケット名取得。
    155         *
    156         * バケット名を取得します。
    157         *
    158         * @return バケット名
    159         */
    160        public String getBucket() {
    161                return this.mybucket;
    162        }
    163
    164        /**
    165         * プラグイン名取得。
    166         *
    167         * プラグイン名を取得します。
    168         *
    169         * @return プラグイン名
    170         */
    171        public String getPlugin() {
    172                return this.myplugin;
    173        }
    174
    175        /**
    176         * プラグイン名のセット。
    177         *
    178         * プラグイン名をセットします。
    179         *
    180         * @param plugin プラグイン名
    181         */
    182        protected void setPlugin( final String plugin ) {
    183                myplugin = plugin;
    184        }
    185
    186
    187//      /** テスト用メソッドです。*/
    188//      public static void main(String[] args) {
    189//              System.out.println("start");
    190//
    191//              try {
    192//                      test01();
    193//              }catch(IOException ie) {
    194//                      System.out.println(ie);
    195//              }
    196//
    197//              System.out.println("end");
    198//      }
    199//
    200//      public static void test01() throws IOException{
    201//              File file = new FileOperation("test.txt");
    202//              File file2 = file.getCanonicalFile();
    203//
    204//              System.out.println(file2.getClass());
    205//
    206//              FileOperation fo = (FileOperation)file2;
    207//              System.out.println(fo.getPath());
    208//      }
    209//
    210//      public static void writeTest() {
    211//              File file = new FileOperation("test.txt");
    212//              FileOperation fileOperation = (FileOperation) file;
    213////            FileOperation_AWS aws = (FileOperation_AWS)file;
    214//              //              file.delete();
    215//
    216//              try (ByteArrayInputStream bais = new ByteArrayInputStream("テスト".getBytes())) {
    217//                      fileOperation.write(bais);
    218//              } catch (IOException ie) {
    219//                      System.out.println(ie);
    220//              }
    221//      }
    222}