自己投資としてチャレンジしている内容を Blog で公開しています。今回は Ubuntu 上で Visual Studio Code を利用し Maven for Java で Java のコードを書いてみたいと思います。
————————————
▼1. Visual Studio Code を利用して Maven for Java で Java のコードを書いてみる
————————————
pom.xml を利用しライブラリーを指定することで必要なライブラリーを自動でダウンロードすることができます。手動でライブラリーをダウンロードし設定する必要がありません。IntelliJ IDEA 同様、VS Code でも Maven を利用して Java のコードを書きたいと思います。
今回は以前紹介した下記の Cosmos DB – SQL API へのデータの書き込みと参照方法を利用します。Java Azure Cosmos DB (SQL API) データの参照方法 No.15
Java CSV ファイルのデータを Azure Cosmos DB (SQL API) に入れる No.20
————————————
▼2. 事前準備
————————————
2-1. Visual Studio Code のインストール等
Java – Visual Studio Code の利用 No.24
2-2. Extension Pack for Java のインストール
Java build tools in VS Code
Maven and Gradle support for Java in Visual Studio Code
2-3. VS Code 上で Ctrl + Shift + P を押し、”Java: Create Java Project…” をクリックし、次に “Maven create from archetype provided by Maven for Java” をクリックします。その後、”maven-architypes-quickstart” をクリックし、現在最新の 1.4 のバージョンを選択します。
2-4. 以下のように groupId を入力し Enter を押し、続いて artifactId を入力し Enter を押します。その後、プロジェクトを作成するフォルダを選択します。
(例)
groupId com.example
artifactId democosmosdb
2-5. Terminal で version を聞かれるので、今回は 1.0 と入れます。 その後 Summary が表示されるので、Y を入力してウィザードを進めます。
2-6. App.java や pom.xml ファイルが作成されている事を確認します。
————————————
▼3. Maven を利用し Cosmos DB へのデータを登録し参照する Java コードの実装
————————————
3-1. item を生成し Cosmos DB に insert したのち、item を参照します。
既定で App.java が作成されているので削除して InsertCosmosDBv4.java のファイルを作成します。
(例) InsertCosmosDBv4 .java
package com.example;
import com.azure.cosmos.*;
import com.azure.cosmos.models.*;
import com.azure.cosmos.util.CosmosPagedIterable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Collections;
import java.util.stream.Collectors;
import java.lang.System;
import java.util.Random;
public class InsertCosmosDBv4 {
protected static final Logger log = LoggerFactory.getLogger(InsertCosmosDBv4.class);
public static class Family{
public String id;
public String lastName;
public boolean isRegistered;
public String getId(){
return id;
}
public String getLastName(){
return lastName;
}
public Family(){}
public Family(String idv,String lastnamev, boolean isv){
id=idv;
lastName=lastnamev;
isRegistered=isv;
}
}
public static void main(String... args) {
String databaseName = "DatabaseName";
String end_point = "https://cosmosdbaccountname.documents.azure.com:443";
String master_key = "key";
String containerName = "collection";
// Create random string
String randchar = "1234567890";
StringBuilder rdc = new StringBuilder();
Random rnd = new Random();
while (rdc.length() < 3) { // length of the random string.
int index = (int) (rnd.nextFloat() * randchar.length());
rdc.append(randchar.charAt(index));
}
String rdcStr = rdc.toString();
// Prepare for records to insert data into Cosmos DB
Family family2 = new Family(rdcStr,"k"+rdcStr,false);
//Connect to Cosmos DB and execute Insert and Select on Cosmos DB
try (CosmosClient cosmosClient = new CosmosClientBuilder().endpoint(end_point).key(master_key).gatewayMode(GatewayConnectionConfig.getDefaultConfig()).consistencyLevel(ConsistencyLevel.SESSION).connectionSharingAcrossClientsEnabled(true).contentResponseOnWriteEnabled(true).userAgentSuffix("Application-clienttest").preferredRegions(Collections.singletonList("West US")).buildClient()){
log.info("The connection to Cosmos DB succeeded.");
log.info("Set Databse");
CosmosDatabase database = cosmosClient.getDatabase(databaseName);
log.info("Set Container");
CosmosContainer container = database.getContainer(containerName);
log.info("Set some common query options");
CosmosQueryRequestOptions queryOptions = new CosmosQueryRequestOptions();
CosmosPagedIterable<Family> familiesPagedIterable = container.queryItems("select * from c",queryOptions,Family.class);
log.info("Create item using container. Use lastName as partitionKey for the item");
CosmosItemRequestOptions cosmosItemRequestOptions = new CosmosItemRequestOptions();
log.info("insert data into items");
CosmosItemResponse<Family> item = container.createItem(family2, new PartitionKey(family2.getLastName()),cosmosItemRequestOptions);
log.info("Read data");
System.out.println("===========================");
familiesPagedIterable.iterableByPage(10).forEach(cosmosItemPropertiesFeedResponse ->
{System.out.println("Got results " + cosmosItemPropertiesFeedResponse.getResults().size() + " items(s)"
+ " | Item Ids " + cosmosItemPropertiesFeedResponse.getResults().stream().map(Family::getId).collect(Collectors.toList())
+ " | request charge of " + cosmosItemPropertiesFeedResponse.getRequestCharge()
+ " | request ActivityId " + cosmosItemPropertiesFeedResponse.getActivityId());
System.out.println("===========================");
});
}catch(CosmosException e){
e.printStackTrace();
}
}
} (例) pom.xml (一部)
xxx
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>15</maven.compiler.source>
<maven.compiler.target>15</maven.compiler.target>
</properties>
<dependencies>
xxx
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.30</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-cosmos</artifactId>
<version>4.14.0</version>
</dependency>
</dependencies>
xxx 3-2. VS Code の UI 上で “Debug Java” を押して実行した結果 (一部) は以下となります。
[main] INFO com.example.InsertCosmosDBv4 - The connection to Cosmos DB succeeded. [main] INFO com.example.InsertCosmosDBv4 - Set Databse [main] INFO com.example.InsertCosmosDBv4 - Set Container [main] INFO com.example.InsertCosmosDBv4 - Set some common query options [main] INFO com.example.InsertCosmosDBv4 - Create item using container. Use lastName as partitionKey for the item [main] INFO com.example.InsertCosmosDBv4 - insert data into items [reactor-http-epoll-3] INFO com.azure.cosmos.implementation.SessionContainer - Registering a new collection resourceId [abcdefg=] in SessionTokens [main] INFO com.example.InsertCosmosDBv4 - Read data =========================== Got results 5 items(s) | Item Ids [7, 8, 1, 2, 270] | request charge of 2.34 | request ActivityId abcdefg-132f3-124bdf-derd-xxxxxx =========================== [main] INFO com.azure.cosmos.implementation.RxDocumentClientImpl - Attempting to close client 0 [main] INFO com.azure.cosmos.implementation.RxDocumentClientImpl - Shutting down ... [main] INFO com.azure.cosmos.implementation.RxDocumentClientImpl - Closing Global Endpoint Manager ... [main] INFO com.azure.cosmos.implementation.RxDocumentClientImpl - Closing StoreClientFactory ... [main] INFO com.azure.cosmos.implementation.RxDocumentClientImpl - Shutting down reactorHttpClient ... [main] INFO com.azure.cosmos.implementation.http.SharedGatewayHttpClient - closing one reference to the shared HttpClient, the number of remaining references is 1 [main] INFO com.azure.cosmos.implementation.RxDocumentClientImpl - Shutting down CpuMonitor ... [main] INFO com.azure.cosmos.implementation.RxDocumentClientImpl - Shutting down completed.
以上です。参考になりましたら幸いです。