Skip to content

Commit c412650

Browse files
chore: create azure dt client
1 parent 157ca05 commit c412650

File tree

1 file changed

+48
-13
lines changed

1 file changed

+48
-13
lines changed

src/main/kotlin/infrastructure/digitaltwins/AzureDTClient.kt

Lines changed: 48 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,29 +9,64 @@
99
package infrastructure.digitaltwins
1010

1111
import application.controller.manager.HealthProfessionalDigitalTwinsManager
12-
import application.controller.manager.UserDigitalTwinsManager
12+
import com.azure.digitaltwins.core.BasicDigitalTwin
13+
import com.azure.digitaltwins.core.BasicRelationship
14+
import com.azure.digitaltwins.core.DigitalTwinsClientBuilder
15+
import com.azure.digitaltwins.core.implementation.models.ErrorResponseException
16+
import com.azure.identity.DefaultAzureCredentialBuilder
1317
import entity.healthprofessional.HealthProfessionalData.HealthProfessional
14-
import entity.user.User
18+
import infrastructure.digitaltwins.adtpresenter.HealthProfessionalAdt.toDigitalTwin
1519

1620
/**
1721
* The Azure Digital Twins Client.
1822
* It contains the implementation of Digital Twins operations.
1923
*/
20-
class AzureDTClient : UserDigitalTwinsManager, HealthProfessionalDigitalTwinsManager {
24+
class AzureDTClient : HealthProfessionalDigitalTwinsManager {
2125

22-
override fun createUser(user: User) {
23-
TODO("Not yet implemented")
26+
init {
27+
checkNotNull(System.getenv("AZURE_CLIENT_ID")) {
28+
"Azure Client App Id required!"
29+
}
30+
checkNotNull(System.getenv("AZURE_TENANT_ID")) {
31+
"Azure Tenant Id required!"
32+
}
33+
checkNotNull(System.getenv("AZURE_CLIENT_SECRET")) {
34+
"Azure Client Secret required!"
35+
}
36+
checkNotNull(System.getenv("AZURE_DT_ENDPOINT")) {
37+
"Azure Digital Twin Endpoint required!"
38+
}
2439
}
2540

26-
override fun createHealthProfessional(healthProfessional: HealthProfessional) {
27-
TODO("Not yet implemented")
28-
}
41+
private val client = DigitalTwinsClientBuilder()
42+
.credential(DefaultAzureCredentialBuilder().build())
43+
.endpoint(System.getenv("AZURE_DT_ENDPOINT"))
44+
.buildClient()
2945

30-
override fun deleteUser(userId: String) {
31-
TODO("Not yet implemented")
46+
override fun createHealthProfessional(healthProfessional: HealthProfessional): Boolean {
47+
with(healthProfessional.toDigitalTwin()) {
48+
try {
49+
client.createOrReplaceDigitalTwin(this.id, this, BasicDigitalTwin::class.java)
50+
return true
51+
} catch (e: ErrorResponseException) {
52+
println(e)
53+
return false
54+
}
55+
}
3256
}
3357

34-
override fun deleteHealthProfessional(healthProfessionalId: String) {
35-
TODO("Not yet implemented")
36-
}
58+
override fun deleteHealthProfessional(healthProfessionalId: String): Boolean =
59+
try {
60+
client.listIncomingRelationships(healthProfessionalId).forEach {
61+
client.deleteRelationship(it.sourceId, it.relationshipId)
62+
}
63+
client.listRelationships(healthProfessionalId, BasicRelationship::class.java).forEach {
64+
client.deleteRelationship(it.sourceId, it.id)
65+
}
66+
client.deleteDigitalTwin(healthProfessionalId)
67+
true
68+
} catch (e: ErrorResponseException) {
69+
println(e)
70+
false
71+
}
3772
}

0 commit comments

Comments
 (0)