Javaを利用して、Firestoreのコレクション値を取得しました。
今回は、SpringBoot2を利用しています。
以下がコンストラクタのソースコード(初期化部分)になります。
今回はローカルで動作させたため、権限用のjsonファイルから初期化しています。
public SampleController() throws Exception {
// initialize firestore.
InputStream json = new FileInputStream("権限用のjsonファイルパス");
GoogleCredentials credentials = GoogleCredentials.fromStream(json);
FirebaseOptions options = new FirebaseOptions.Builder().setCredentials(credentials).build();
FirebaseApp.initializeApp(options);
}
また、以下がコレクション取得部分のソースコード(Controller)になります。
@RequestMapping(value = "/", method = RequestMethod.POST)
public ModelAndView getCollection(@RequestParam("collectionName") String collectionName, ModelAndView mv)
throws Exception {
// get collection.
Firestore db = FirestoreClient.getFirestore();
ApiFuture chatFutures = db.collection(collectionName).get();
QuerySnapshot chatSnapshot = chatFutures.get();
List chatDocuments = chatSnapshot.getDocuments();
List displayDocuments = new ArrayList<>();
for (QueryDocumentSnapshot chatDocument : chatDocuments) {
DocumentContents contents = new DocumentContents(chatDocument.getId(), chatDocument.get("text").toString());
displayDocuments.add(contents);
}
// add display objects.
mv.addObject("documents", displayDocuments);
// set display view name.
mv.setViewName("index");
return mv;
}
DocumentContentsクラスは、Documentの値を設定するための単なるクラスです。
入力パラメータとして受け取ったコレクション名に基づいて、コレクションの値を取得します。
最後に、表示部分になります(Thymeleafテンプレートを利用しています)。
<table th:if="${documents} != null" border="1">
<tr>
<th>ID</th>
<th>値</th>
</tr>
<tr th:each="obj:${documents}">
<td th:text="${obj.id}"></td>
<td th:text="${obj.text}"></td>
</tr>
</table>
また、Gradle用のbuild.gradleは以下のようになっています。
plugins {
id 'org.springframework.boot' version '2.1.5.RELEASE'
id 'java'
}
apply plugin: 'io.spring.dependency-management'
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'com.google.firebase:firebase-admin:5.10.0'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}