Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Sv translation
languageja

Java SDK BellaDatiはJavaを使用してREST APIにアクセスするための使いやすい実装です。すべてのデータは手動でサーバーからJSONレスポンスを解析し、解釈する必要がなくなり、Javaオブジェクトで利用可能になる。APIにアクセスするための使いやすい実装です。すべてのデータはJavaオブジェクトで使用可能になり、手動で解析する必要性を排除して、サーバーからのJSON応答を解釈します。

SDK設定

SDKには、いくつかの部分で構成されているSDKはいくつかの部分で構成されています。

SDKを使用するには、API jarとご使用の環境にマッチする実装をダウンロードしてください。アップグレードする場合は、両方のjarファイルのバージョンが一致していることを確認する。

SDKのソースはGitHubの上で利用可能です。

依存関係

SDKの依存関係は、使用に計画している実装に依存する。あなたは依存関係を手動で設定またはMavenを設定することができる。

SDKを使用するには、API jarダウンロードして、使用環境にマッチしてください。アップグレードする場合には両方のjarファイルのバージョンが一致していることを確認します

SDKのソースはGitHubの上で利用可能です。

依存関係

SDKの依存関係は、使用ために計画している実装に依存します。あなたは依存関係を手動で設定またはMavenを設定できます。 

通常のJava VM

Maven使用

次の依存関係と依存関係の管理エントリを追加する。次の依存関係と依存関係管理エントリを追加します。

 

Expand
titleMavenの設定を表示するためにクリックしてください。
Code Block
languagexml
  <dependencies>
      ...
      <dependency>
          <groupId>com.belladati</groupId>
          <artifactId>sdk-java</artifactId>
          <version>0.9.5</version>
      </dependency>
  </dependencies>
  <dependencyManagement>
      <dependencies>
          ...
          <dependency>
              <groupId>org.apache.httpcomponents</groupId>
              <artifactId>httpclient</artifactId>
              <version>4.3.1</version>
          </dependency>
          <dependency>
              <groupId>org.apache.httpcomponents</groupId>
              <artifactId>httpcore</artifactId>
              <version>4.3</version>
          </dependency>
      </dependencies>
  </dependencyManagement>
手動設定

ダウンロードして、あなたのクラスパスに次のライブラリを追加する。ダウンロードして、あなたのクラスパスに次のライブラリを追加します。

  • Jackson 2.2.x,コア、注釈とデータバインドライブラリ 核、注釈とデータバインドライブラリ
  • Signpost 1.2.xコア及びコモンズのHTTP実装核及びコモンズのHTTP実装
  • Apache HttpClient 4.3.x
  • およびその依存関係(jars
  • およびその依存関係(jars fluent-
  • hcとhttpmimeが必要としない)
  • hchttpmimeが必要としない) 

Android

Maven使用

あなたのbuildあなたのbuild.gradleファイルでは、以下のリポジトリとの依存関係のエントリを追加する。gradleファイルでは、以下のリポジトリと依存関係のエントリを追加します

 

Expand
titleGradle の設定を表示するためにクリックしてください。
Code Block
languagegroovy
repositories {
    mavenCentral()
}

dependencies {
	// other dependencies
	// ...
	compile 'com.belladati:sdk-android:0.9.5'
}
手動設定

ダウンロードして、プロジェクトに次のライブラリを追加する。

サーバー設定

BellaDatiからのデータにアクセスするには、ドメイン内のAPIアクセスを有効にする必要がある。これを行うには、ドメインの設定を開いて、「OAuth Settings」下の「Configure」をクリックする。BellaDatiからのデータにアクセスするには、ドメイン内のAPIアクセスを有効にする必要があります。そうするために、ドメインの設定を開いて、「Oauth設定」下の「構成」をクリックします。

このダイアログでは、コンシューマキーとコンシューマシークレットを入力する。これらは、SDKの認証時に使用される。

このダイアログでは、コンシューマキーとコンシューマシークレットを入力します。これらは、SDKの認証時に使用されます。

必要に応じてユーザがOAuthリクエストを承認したときに開かれるコールバックURLを設定できる。詳細は以下の例をご参考してください。最後、アプリケーション環境は、認証のためのWebブラウザを使用することを許可しない場合、クライアントアプリケーション内からユーザ名とパスワードでの認証するためXAUTHを有効にすることができる。

ユーザーがOAuthリクエストを正常に承認したときに開かれるコールバックURLを任意設定できます。詳細は以下の例をご参考してください。最後、アプリケーション環境は認証のためのWebブラウザを使用することを許可しない場合、クライアントアプリケーション内からユーザ名とパスワードで認証するためXAUTHを有効にすることができます。

使用例

この例では、ユーザに見えるいくつかのデータを取得し、xAuthまたはOAuthを使用する方法で認証することでためにSDKを使用する。この例では、SDKを使用してOAuthまたはxAuthを使用して認証し、サンプルユーザーに表示されるデータを取得します。

認証

SDKを介してデータを読み取ることができる前に、有効なユーザとして認証する必要がある。この例では、コンシューマキーのSDKを介してデータを読み取ることができる前に、有効なユーザとして認証する必要があります。この例では、コンシューマキーsdkKeyとコンシューマシークレットsdkSecretでドメインを設定していると仮定しましょう。最初のステップは、サーバーに接続することです。を使用してドメインを設定したと仮定します。最初のステップは、サーバーに接続することです。

Code Block
languagejava
BellaDatiConnection connection = BellaDati.connect(); // connect to the BellaDati cloud server

代わりに、使用できるあるいは、使用できます:

Code Block
languagejava
BellaDatiConnection connection = BellaDati.connect("https://belladati.example.com"); // connect to a custom BellaDati server

OAuth

認証の推奨形式は、OAuthのです。このプロトコルを使用することで、SDKはユーザが自分のWebブラウザを使用して承認する必要があるサーバーからトークンを要求する。このメカニズムの利点は、ユーザがSDKを実行しているコンピュータ上で制限させるリスクを低減し、サーバーに直接に資格情報を送信することです。

認証の推奨フォームはOAuthです。このプロトコルを使用すると、SDKは、ユーザーがWebブラウザを使用して承認する必要のあるサーバーからトークンを要求します。このメカニズムの利点は、ユーザがSDKを実行しているコンピュータ上で制限させるリスクを低減し、サーバーに直接に資格情報を送信することです。 

最初のステップでは、SDKにサーバからのリクエストトークンを取得させます。最初のステップでは、SDKにサーバからのリクエストトークンを取得させる。

Code Block
languagejava
OAuthRequest oauth = connection.oAuth("sdkKey", "sdkSecret"); // request an OAuth request token

Now, we need to ask our user to authorize this token:今、私たちはこのトークンを許可するユーザーに依頼する必要があります。

Code Block
languagejava
System.out.println("Please open the following URL in your browser and authenticate: "
   + oauth.getAuthorizationUrl()); // ask the user to authorize our request using their browser

ここは上記のようにURLがコールバックところです:あなたはWebアプリケーションを作成する場合は、アクセスを許可した後にあなたのアプリケーションに戻るユーザをリダイレクトするためにコールバックを使用できる。

ここは上記のようにコールバックURLが入るところです: Webアプリケーションを記述する場合は、コールバックを使用して、アクセスを承認した後にユーザーをアプリケーションにリダイレクトすることができます。 

ユーザがアプリケーションを正常に認可された後、サーバーからのアクセスを要求できます。ユーザがアプリケーションを正常に認可された後、サーバーからのアクセスを要求できる。

Code Block
languagejava
BellaDatiService service = oauth.requestAccess(); // request access from the server

xAuth

いくつかのアプリケーションでは、認証のためにウェブブラウザを使用することが可能または不可能です。このような状況では、次のようにユーザが自分のアプリケーションに直接資格情報を入力し、それらを使用できるようにするには、XAUTHを使用できる。いくつかのアプリケーションでは、認証のためにウェブブラウザを使用することが可能または不可能です。このような状況では、xAuthを使用すると、ユーザーがアプリケーションに直接資格情報を入力し、次のように使用できるようになります。

Code Block
languagejava
BellaDatiService service = connection.xAuth(
  "sdkKey", "sdkSecret", "user@example.com", "reallysecurepassword"); // directly request access using xAuth

データの取得

認証が成功した後、今BellaDatiServiceインタフェースのインスタンスを持っている。このインターフェイスは、サーバーからデータを取得するためにいくつかの方法を提供している。この例では、まずは、サムネイル画像がユーザに表示するとともにレポートのリストを取得してみましょう。インタフェースのインスタンスを持っています。このインターフェイスは、サーバーからデータを取得するためにいくつかの方法を提供しています。この例では、最初にサムネイル画像とともにレポートのリストを取得してユーザーに表示しましょう。

Code Block
languagejava
PaginatedList<ReportInfo> reports = service.getReportInfo().load(); // load an overview of all reports

この呼び出しは、複数のステップで構成されている。この呼び出しは、複数のステップで構成されています。getReportInfo()は最初が空でレポートのPaginatedList(特に、PaginatedIdList)を提供する。レポートの最初ページフェッチ、サーバーへを問い合わせるためload()呼び出す。特にPaginatedIdListを提供します。サーバーに問い合わせload()を呼び出し、レポートの最初のページをフェッチします。PaginatedListIterableであり、でありその内容について調べるためにsize(),  get(),contains()などの方法を提供するととも他ページネーション自体で動作するように、その内容だけでなく、いくつかの方法について調べる。最後、ご利用の場合は通常のなどのメソッドとともにページネーション自体を操作するいくつかの方法を提供しています。最後、ご利用の場合は通常のListを必要とすれば、簡単にtoList()呼び出すことによってそれを変換できる。呼び出すことによってそれを変換できます。

リストに内にリストの内にReportInfoオブジェクトは、名前、説明、所有者などレポートに関する一般的な情報が含まれている。サムネイルをロードするために、我々はロードしたい各レポートのサーバーへの個別の要求を行う必要がる。これらの要求は、サーバーの待ち時間に応じていくつかの時間がかかる場合がありますので、当社のサムネイルを並行してロードする。例えば:オブジェクトは、名前、説明、所有者などレポートに関する一般的な情報が含まれています。サムネイルをロードするために、我々はロードしたい各レポートのサーバーへ個別の要求を行う必要がります。これらの要求は、サーバーの待ち時間に応じていくつかの時間がかかる場合がありますので、当社のサムネイルを並行してロードしたいです。例えば:

Code Block
languagejava
ExecutorService executor = Executors.newCachedThreadPool();
final Map<String, BufferedImage> thumbnails = Collections.synchronizedMap(new HashMap<String, BufferedImage>());
for (final ReportInfo reportInfo : reports) {
    executor.submit(new Runnable() {
        @Override
        public void run() {
            try {
                // load a thumbnail and store it in our map of thumbnails
                thumbnails.put(reportInfo.getId(), (BufferedImage) reportInfo.loadThumbnail());
            } catch (IOException e) {
                // handle exception
            }
        }
    });
}
executor.shutdown();
executor.awaitTermination(1, TimeUnit.MINUTES);

loadThumbnailは、上記の例でBufferedImageにキャストされているObjectを返却します。異なる実装をサポートし、代わりにAndroidでのBitmapAndroidを取得します(BufferedImageを持っていない) 

いくつかの状況では、おそらくWebアプリケーションで最初のレポート自体をロードすることなく、与えられたレポートにIDのサムネイルをロードできます。これを行うには、代わりに使用できます。()が上記の例でのBufferedImageにキャストされたオブジェクトを返すことがある。異なる実装をサポートし、代わりにAndroidでのBitmapAndroidを取得する(BufferedImageを持っていない)いくつかの状況では、おそらくWebアプリケーションで、最初のレポート自体をロードすることなく、与えられたレポートにIDのサムネイルをロードできる。これを行うには、代わりに使用できる

Code Block
languagejava
service.loadReportThumbnail("my_report_id"); // directly load thumbnail

今、我々は、彼らが見たい1つを選択することを求めて、私たちのユーザに示すことができるサムネイル画像を含むレポートのリストを持っている。

次に、ユーザーに表示できるサムネイル画像を含むレポートのリストを表示し、どの画像を表示するかを選択するよう求めます。 

ユーザーがリストの3番目のレポートを選択したとします。 私たちはその内容を得ることができます:ユーザがリストからの第3目のレポートを選択していると仮定する。その内容を取得できる:

Code Block
languagejava
Report report = reports.get(2).loadDetails(); // load details of a specific report

このレポートオブジェクトは、、レポートについての詳細、特にそのViewsのリストが含まれている。レポート内の各チャート、テーブル、KPIなどは、このようなViewによって表される。ビューを反復処理し、それらを表示できる。このReportオブジェクトは、、レポートについての詳細、特にそのViewsのリストが含まれています。レポート内の各チャート、テーブル、KPIなどは、このようなViewによって表されます。ビューを繰り返して表示することができます。

Code Block
languagejava
for (View view : report.getViews()) {
    switch (view.getType()) {
    case CHART: // this means we're getting a JSON chart
        displayChart((JsonNode) view.loadContent());
        break;
    case KPI: // this means we're getting JSON KPI
        displayKPI((JsonNode) view.loadContent());
        break;
    case TEXT: // this means we're getting JSON text
        displayText((JsonNode) view.loadContent());
        break;
    case TABLE: // this tells us that we're getting a Table object
        displayTable((TableView.Table) view.loadContent());
        break;
    }
}

ご覧のように、ビューは異なるレンダリングされた異なるタイプを持つことができる。ほとんどのビューは、ジャクソンライブラリからJsonNodeとして返却されるJSONコンテンツが含まれます。しかし、テーブルオブジェクトを含むテーブルがテーブルの内容を追加ロードするための3つの方法がある。テーブルをロードする方法の詳細については、TableViewをご参照してください。 

この例では、時間がかかることがあり、単一のスレッドによってすべてのビューをロードしています。簡単に上記のサムネイル画像にしたものと同様のメカニズムを使用することで並行して行われますが、明確にするためにここでそれを省略することに決定できます。として返されるJSONコンテンツが含まれている。しかし、テーブルオブジェクトを含むテーブルがテーブルの内容を追加ロードするための3つの方法がある。テーブルをロードする方法の詳細については、TableViewを参照できる。この例では、時間がかかることがあり、単一のスレッドによってべてのビューをロードしている。簡単に上記のサムネイル画像にしたものと同様のメカニズムを使用することで並行して行われますが、明確にするためにここでそれを省略することに決定できる。

一般的助言

ユーザのために長いロード時間を発生しないようにするシーケンス内のサーバーに多くのコールをしないようにしてみてください。複数の項目をロードする場合、それらを並行してロードすることを検討してください。これは、より良い並列で実行されるべき方法を認識するのは簡単です:loadSomething

ユーザーの読み込み時間が長くなることを避けるために、サーバーを何度も呼び出さないようにしてください。複数の項目をロードする場合、それらを並行してロードすることを検討してください。これは、より良い並列で実行されるべき方法を認識するのは簡単です:loadSomething()

という名前の任意の方法は、サーバーへの呼び出しを行っている。

という名前の任意の方法は、サーバーへの呼び出しを行っています。 

BellaDatiService

インターフェイスを使用すると、そのIDを知っているときに、オブジェクトへ直接アクセスを与えることができるいくつかのショートカットの方法を提供している。たとえば、最初のレポート一覧または最初にそのレポートをロードしなくビューを取得せずにレポートをロードできる。

インターフェイスを使用すると、そのIDを知っているときに、オブジェクトに直接アクセスできるいくつかのショートカットメソッドが用意されています。たとえば、レポートリストを最初に取得したり、最初にレポートをロードせずにレポートをロードすることができます。 

BellaDatiServiceインスタンスをシリアライズし、アプリケーションに格納することにより、後で使用するために、ユーザのアクティブなセッションを保存できる。ユーザがアプリケーションで作業を継続したい場合は、インスタンスを復元することができ、ユーザはSDKが使用するアクセストークンの有効期限が切れるまで再び認証する必要はない。インスタンスをシリアル化してアプリケーションに保存することで、後で使用できるようにユーザーのアクティブなセッションを保存できます。ユーザがアプリケーションで作業を継続したい場合は、インスタンスを復元することができ、SDKで使用されるアクセストークンが期限切れになるまでユーザーは再度認証する必要はありません。

 

SDKはいくつかの部分で構成されています。