このCookBookでは、Box Java SDK を利用して Box に接続、ファイルアップロードなどを行う方法についてご紹介します。
主要ポイント
以下の方法で BoxAPIConnection を生成することで intra-mart Accel Platform から Box に接続できます。
- 以下の API を利用して config.json のバイト配列を取得
- バイト配列を StringReader に変換し、以下の API で BoxConfig を生成
- 以下の API を利用して BoxConfig から BoxAPIConnection を取得
完成イメージ
JavaEE開発モデルを用いて、ジョブスケジューラにおけるジョブのサンプル実装を行っています。
ジョブの作成方法や実行方法については、CookBook 「ジョブを作成して定期実行する」も参考にしてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.StringReader; import com.box.sdk.BoxAPIConnection; import com.box.sdk.BoxConfig; import com.box.sdk.BoxDeveloperEditionAPIConnection; import com.box.sdk.BoxFile; import com.box.sdk.BoxFileVersion; import com.box.sdk.BoxFolder; import jp.co.intra_mart.foundation.box.config.repository.ClientConfigRepositoryFactory; import jp.co.intra_mart.foundation.job_scheduler.Job; import jp.co.intra_mart.foundation.job_scheduler.JobResult; import jp.co.intra_mart.foundation.job_scheduler.exception.JobExecuteException; public class BoxSampleJob implements Job { @Override public JobResult execute() throws JobExecuteException { try { // BoxConfigを読み込み("standard"を指定) final byte[] clientConfig = ClientConfigRepositoryFactory.getRepository().getClientConfig("standard"); final BoxConfig boxConfig = BoxConfig.readFrom(new StringReader(new String(clientConfig))); // BoxAPIConnectionを作成 final BoxAPIConnection boxApi = BoxDeveloperEditionAPIConnection.getAppEnterpriseConnection(boxConfig); //////////////////////////////////////////////////////// // 以下、APIを使用して任意の操作を実装 // ルートフォルダ("0"を指定) final String rootFolderId = "0"; final BoxFolder rootFolder = new BoxFolder(boxApi, rootFolderId); // フォルダ作成(任意のフォルダ名を指定) final BoxFolder.Info sampleFolderInfo = rootFolder.createFolder("sample_folder"); // 作成したフォルダにファイルアップロード final File fooFileData = new File("c:/tmp/foo_data.txt"); String fileID = ""; try (InputStream inputStream = new FileInputStream(fooFileData)) { final BoxFile.Info fileInfo = new BoxFolder(boxApi, sampleFolderInfo.getID()).uploadFile(inputStream, "sample.txt"); fileID = fileInfo.getID(); } // アップロードしたファイルを更新 final File barFileData = new File("c:/tmp/bar_data.txt"); try (InputStream inputStream = new FileInputStream(barFileData)) { new BoxFile(boxApi, fileID).uploadNewVersion(inputStream); } // 更新したファイルのバージョン情報取得 for (final BoxFileVersion version : new BoxFile(boxApi, fileID).getVersions()) System.out.println("Version: " + version.getVersionID()); // フォルダを削除(true:フォルダ内の全コンテンツも削除) new BoxFolder(boxApi, sampleFolderInfo.getID()).delete(true); //////////////////////////////////////////////////////// } catch (final Exception e) { throw new JobExecuteException("予期しないエラーが発生しました。", e); } return JobResult.success("ジョブが正常に実行されました。"); } } |
※ Box Java SDK が提供する API の詳細については Box 社のドキュメントをご参照ください
※ intra-mart Accel Platform 2024 Spring 時点で内包する Box Java SDK のバージョンは 4.0.0 です
レシピ
- config.json 取得
- StringReader 変換
- BoxConfig 生成
- BoxAPIConnection 取得
- Box Java SDK APIを利用した任意の操作(ファイルアップロードなど)
1. config.json 取得
以下のメソッドを使用して、Box連携セットアップ時に intra-mart Accel Platform にアップロードした設定ファイル(config.json)の内容をバイト配列で取得します。clientId には "standard" を指定してください。
1 |
final byte[] clientConfig = ClientConfigRepositoryFactory.getRepository().getClientConfig("standard"); |
2. StringReader 変換
バイト配列を StringReader に変換します。
1 |
new StringReader(new String(clientConfig)) |
3. BoxConfig 生成
BoxConfig.readFromメソッドを使用して、BoxConfig を作成します。
1 |
final BoxConfig boxConfig = BoxConfig.readFrom(new StringReader(new String(clientConfig))); |
4. BoxAPIConnection 取得
BoxConfig から BoxAPIConnection を取得します。
1 |
final BoxAPIConnection boxApi = BoxDeveloperEditionAPIConnection.getAppEnterpriseConnection(boxConfig); |
5. Box Java SDK APIを利用した任意の操作(ファイルアップロードなど)
BoxAPIConnectionを取得した後は、Box Java SDK APIを利用した任意の操作が可能になります。
以下はフォルダ作成、ファイルアップロードを行うコードです。
1 2 3 4 5 6 7 |
final String rootFolderId = "0"; final BoxFolder rootFolder = new BoxFolder(boxApi, rootFolderId); final BoxFolder.Info sampleFolderInfo = rootFolder.createFolder("sample_folder"); final File fooFileData = new File("c:/tmp/foo_data.txt"); try (InputStream inputStream = new FileInputStream(fooFileData)) { final BoxFile.Info fileInfo = new BoxFolder(boxApi, sampleFolderInfo.getID()).uploadFile(inputStream, "sample.txt"); } |
その他、完成イメージのサンプルコード、Box社の API Reference に記載のサンプルコードなども参考にしてください。
まとめ
このクックブックでは、Box Java SDK を利用して Box に接続、ファイルアップロードなどを行う方法をご紹介しました。
Box Java SDK も組み合わせることで、お客様の用途の幅が広がることを期待しています。是非ご活用ください。