ページの先頭行へ戻る
Symfoware Analytics Server(Operational Data Store編) アプリケーション開発ガイド
FUJITSU Software

B.3 蓄積添付ファイルを取得する

抽出条件式に更新日時(Date)を指定して、該当する人の写真(pict1)を取得する例を用いて、Java APIの使用例を示します。

使用例

Linuximport com.fujitsu.iis.IisAPI;
import com.fujitsu.iis.IisSelectedData;

/**
 * 抽出条件式に更新日時(Date)を指定して、該当する人の写真(pict1)を取得する
 */
public class Sample_3 {

  public static void main(String[] args) {
    new Sample_3().execute();
  }

  public boolean execute() {
    // APIインスタンス
    IisAPI api = null;
    // 戻り値
    boolean ret = true;
    // 抽出結果情報
    String[] select_result = null;
    // 抽出結果件数
    int data_count = 0;
    // 抽出結果データ
    IisSelectedData[] selected_data = null;
    // エラー番号
    int error_no = 0;

    try {
      api = new IisAPI();
    } catch (NullPointerException e) {
      System.out.println("APIの初期化に失敗しました");
      return false;
    }

    // 環境設定
    // 制御サーバセットのホスト名 
    api.setRequestorHostName("192.0.2.1");
    // 制御サーバセットのポート番号
    api.setRequestorPortNo(24101);
    // カテゴリ名
    api.setCategoryName("SAMPLE");
    // 実行クラス名
    api.setTargetClassName("Class1");
    // データ形式
    api.setTargetFileType("CSV");

    // 半角英字大小区別
    api.setANKmix(true);
    // 全角英字大小区別
    api.setKNJmix(true);
    // CSVヘッダレコード
    api.setLabelLine(false);

    // 抽出条件式:Dateの値が2008/01/01より前のデータを抽出
    String query = "$Date < '2008/01/01'";
    // リターン式:pict1を取得
    String returnItem = "$pict1";
    select_result = api.requestSelect(query, returnItem);

    // 抽出正常復帰
    String outputPath = "/tmp/output/";
    if (select_result != null) {
      // 抽出件数取得
      data_count = api.getDataCount();

      // 件数取得異常復帰
      if (data_count == -1) {
        // エラー詳細番号取得
        error_no = api.getLastError();
        // エラー詳細番号とメッセージを出力し終了する
        System.out.println("エラー番号 = " + error_no + ", エラーメッセージ = "
            + api.getLastErrorMessage(error_no));
        // 抽出結果情報および抽出結果中間ファイル破棄
        api.deleteInstance(select_result);
        return false;
      }

      // 件数出力
      System.out.println("抽出件数 = " + data_count);

      // 抽出件数確認
      if (data_count > 0) {
        // 抽出件数が1件以上の場合

        // 抽出結果情報をオープン
        ret = api.openData(select_result);

        // オープン正常復帰
        if (ret == true) {
          // 抽出結果データ読込み
          selected_data = api.readDataEx(data_count);

          // 読込み正常復帰
          if (selected_data != null) {
            // 蓄積添付ファイルを取得
            String pict_file_name = null;
            int storedFileID = 0; 
            for (int i = 0; i < data_count; i++) {
              String recordData = selected_data[i].getRecordData();
              // 二重引用符の削除
              pict_file_name = recordData.substring(1, recordData.length() - 1);
              storedFileID = selected_data[i].getStoredFileID();
              ret = api.getAttachedFile(storedFileID, pict_file_name, outputPath);
              if (ret == false) {
                // エラー詳細番号取得
                error_no = api.getLastError();
                // エラー詳細番号とメッセージを出力し終了する
                System.out.println("エラー番号 = " + error_no + ", エラーメッセージ = "
                    + api.getLastErrorMessage(error_no));
                // 抽出結果情報および抽出結果中間ファイル破棄
                api.deleteInstance(select_result);
                return false;
              }
              System.out.println("写真ファイルを" + outputPath + "に出力しました。");
            }
          }
          // 読込み異常復帰
          else {
            // エラー詳細番号取得
            error_no = api.getLastError();
            // エラー詳細番号とメッセージを出力し終了する
            System.out.println("エラー番号 = " + error_no + ", エラーメッセージ = "
                + api.getLastErrorMessage(error_no));
            // 抽出結果情報のクローズ
            api.closeData();
            // 抽出結果情報および抽出結果中間ファイル破棄
            api.deleteInstance(select_result);
            return false;
          }

          // 抽出結果情報のクローズ
          ret = api.closeData();

          // クローズ異常復帰
          if (ret == false) {
            // エラー詳細番号取得
            error_no = api.getLastError();
            // エラー詳細番号とメッセージを出力し終了する
            System.out.println("エラー番号 = " + error_no + ", エラーメッセージ = "
                + api.getLastErrorMessage(error_no));
            // 抽出結果情報および抽出結果中間ファイル破棄
            api.deleteInstance(select_result);
            return false;
          }

          // 抽出結果情報および抽出結果中間ファイル破棄
          api.deleteInstance(select_result);

          // 破棄異常復帰
          if (ret == false) {
            // エラー番号取得
            error_no = api.getLastError();
            // エラー番号とメッセージを出力し終了する
            System.out.println("エラー番号 = " + error_no + ", エラーメッセージ = "
                + api.getLastErrorMessage(error_no));
            return false;
          }
        }
        // オープン異常復帰
        else {
          // エラー詳細番号取得
          error_no = api.getLastError();
          // エラー詳細番号とメッセージを出力し終了する
          System.out.println("エラー番号 = " + error_no + ", エラーメッセージ = "
              + api.getLastErrorMessage(error_no));
          // 抽出結果情報および抽出結果中間ファイル破棄
          api.deleteInstance(select_result);
          return false;
        }
      }
      // 抽出件数が0件の場合
      else if (data_count == 0) {
        // 抽出結果情報および抽出結果中間ファイル破棄
        api.deleteInstance(select_result);
      }
      return true;
    }
    // 抽出異常終了
    else {
      // エラー詳細番号取得
      error_no = api.getLastError();
      // エラー詳細番号とメッセージを出力し終了する
      System.out.println("エラー番号 = " + error_no + ", エラーメッセージ = "
          + api.getLastErrorMessage(error_no));
      return false;
    }
  }
}
Windowsimport com.fujitsu.iis.IisAPI;
import com.fujitsu.iis.IisSelectedData;

/**
 * 抽出条件式に更新日時(Date)を指定して、該当する人の写真(pict1)を取得する
 */
public class Sample_3 {

  public static void main(String[] args) {
    new Sample_3().execute();
  }

  public boolean execute() {
    // APIインスタンス
    IisAPI api = null;
    // 戻り値
    boolean ret = true;
    // 抽出結果情報
    String[] select_result = null;
    // 抽出結果件数
    int data_count = 0;
    // 抽出結果データ
    IisSelectedData[] selected_data = null;
    // エラー番号
    int error_no = 0;

    try {
      api = new IisAPI();
    } catch (NullPointerException e) {
      System.out.println("APIの初期化に失敗しました");
      return false;
    }

    // 環境設定
    // 制御サーバセットのホスト名 
    api.setRequestorHostName("192.0.2.1");
    // 制御サーバセットのポート番号
    api.setRequestorPortNo(24101);
    // カテゴリ名
    api.setCategoryName("SAMPLE");
    // 実行クラス名
    api.setTargetClassName("Class1");
    // データ形式
    api.setTargetFileType("CSV");

    // 半角英字大小区別
    api.setANKmix(true);
    // 全角英字大小区別
    api.setKNJmix(true);
    // CSVヘッダレコード
    api.setLabelLine(false);

    // 抽出条件式:Dateの値が2008/01/01より前のデータを抽出
    String query = "$Date < '2008/01/01'";
    // リターン式:pict1を取得
    String returnItem = "$pict1";
    select_result = api.requestSelect(query, returnItem);

    // 抽出正常復帰
    String outputPath = "C:\\tmp\\output\\";
    if (select_result != null) {
      // 抽出件数取得
      data_count = api.getDataCount();

      // 件数取得異常復帰
      if (data_count == -1) {
        // エラー詳細番号取得
        error_no = api.getLastError();
        // エラー詳細番号とメッセージを出力し終了する
        System.out.println("エラー番号 = " + error_no + ", エラーメッセージ = "
            + api.getLastErrorMessage(error_no));
        // 抽出結果情報および抽出結果中間ファイル破棄
        api.deleteInstance(select_result);
        return false;
      }

      // 件数出力
      System.out.println("抽出件数 = " + data_count);

      // 抽出件数確認
      if (data_count > 0) {
        // 抽出件数が1件以上の場合

        // 抽出結果情報をオープン
        ret = api.openData(select_result);

        // オープン正常復帰
        if (ret == true) {
          // 抽出結果データ読込み
          selected_data = api.readDataEx(data_count);

          // 読込み正常復帰
          if (selected_data != null) {
            // 蓄積添付ファイルを取得
            String pict_file_name = null;
            int storedFileID = 0; 
            for (int i = 0; i < data_count; i++) {
              String recordData = selected_data[i].getRecordData();
              // 二重引用符の削除
              pict_file_name = recordData.substring(1, recordData.length() - 1);
              storedFileID = selected_data[i].getStoredFileID();
              ret = api.getAttachedFile(storedFileID, pict_file_name, outputPath);
              if (ret == false) {
                // エラー詳細番号取得
                error_no = api.getLastError();
                // エラー詳細番号とメッセージを出力し終了する
                System.out.println("エラー番号 = " + error_no + ", エラーメッセージ = "
                    + api.getLastErrorMessage(error_no));
                // 抽出結果情報および抽出結果中間ファイル破棄
                api.deleteInstance(select_result);
                return false;
              }
              System.out.println("写真ファイルを" + outputPath + "に出力しました。");
            }
          }
          // 読込み異常復帰
          else {
            // エラー詳細番号取得
            error_no = api.getLastError();
            // エラー詳細番号とメッセージを出力し終了する
            System.out.println("エラー番号 = " + error_no + ", エラーメッセージ = "
                + api.getLastErrorMessage(error_no));
            // 抽出結果情報のクローズ
            api.closeData();
            // 抽出結果情報および抽出結果中間ファイル破棄
            api.deleteInstance(select_result);
            return false;
          }

          // 抽出結果情報のクローズ
          ret = api.closeData();

          // クローズ異常復帰
          if (ret == false) {
            // エラー詳細番号取得
            error_no = api.getLastError();
            // エラー詳細番号とメッセージを出力し終了する
            System.out.println("エラー番号 = " + error_no + ", エラーメッセージ = "
                + api.getLastErrorMessage(error_no));
            // 抽出結果情報および抽出結果中間ファイル破棄
            api.deleteInstance(select_result);
            return false;
          }

          // 抽出結果情報および抽出結果中間ファイル破棄
          api.deleteInstance(select_result);

          // 破棄異常復帰
          if (ret == false) {
            // エラー番号取得
            error_no = api.getLastError();
            // エラー番号とメッセージを出力し終了する
            System.out.println("エラー番号 = " + error_no + ", エラーメッセージ = "
                + api.getLastErrorMessage(error_no));
            return false;
          }
        }
        // オープン異常復帰
        else {
          // エラー詳細番号取得
          error_no = api.getLastError();
          // エラー詳細番号とメッセージを出力し終了する
          System.out.println("エラー番号 = " + error_no + ", エラーメッセージ = "
              + api.getLastErrorMessage(error_no));
          // 抽出結果情報および抽出結果中間ファイル破棄
          api.deleteInstance(select_result);
          return false;
        }
      }
      // 抽出件数が0件の場合
      else if (data_count == 0) {
        // 抽出結果情報および抽出結果中間ファイル破棄
        api.deleteInstance(select_result);
      }
      return true;
    }
    // 抽出異常終了
    else {
      // エラー詳細番号取得
      error_no = api.getLastError();
      // エラー詳細番号とメッセージを出力し終了する
      System.out.println("エラー番号 = " + error_no + ", エラーメッセージ = "
          + api.getLastErrorMessage(error_no));
      return false;
    }
  }
}

実行結果

Linux抽出件数 = 4
写真ファイルを/tmp/output/に出力しました。
写真ファイルを/tmp/output/に出力しました。
写真ファイルを/tmp/output/に出力しました。
写真ファイルを/tmp/output/に出力しました。
Windows抽出件数 = 4
写真ファイルをC:\tmp\output\に出力しました。
写真ファイルをC:\tmp\output\に出力しました。
写真ファイルをC:\tmp\output\に出力しました。
写真ファイルをC:\tmp\output\に出力しました。

注意

蓄積添付ファイルのアーカイブ形式がtgz形式の場合、getAttachedFileメソッドにて解凍処理を行うため処理時間がかかります。そのため、複数の蓄積添付ファイルを取り出す処理では、蓄積データファイル識別IDごとにすべての添付ファイルを取り出してから目的のファイルを利用することを推奨します。
詳細については、“2.2.3.3 蓄積添付ファイルを取得する”を参照してください。