diff --git a/search-service/config/detekt/baseline.xml b/search-service/config/detekt/baseline.xml
index cfdb28675..a8fcbc64e 100644
--- a/search-service/config/detekt/baseline.xml
+++ b/search-service/config/detekt/baseline.xml
@@ -16,8 +16,8 @@
LongMethod:TemporalQueryServiceTests.kt$TemporalQueryServiceTests$@Test fun `it should return an empty list for an attribute if it has no temporal values`()
LongMethod:TemporalScopeBuilderTests.kt$TemporalScopeBuilderTests$@Test fun `it should build an aggregated temporal representation of scopes`()
LongMethod:V0_29__JsonLd_migration.kt$V0_29__JsonLd_migration$override fun migrate(context: Context)
- LongParameterList:AttributeInstance.kt$AttributeInstance.Companion$( attribute: UUID, instanceId: URI = generateRandomInstanceId(), timeAndProperty: Pair<ZonedDateTime, TemporalProperty>, value: Triple<String?, Double?, WKTCoordinates?>, payload: ExpandedAttributeInstance, sub: String? )
- LongParameterList:AttributeInstance.kt$AttributeInstance.Companion$( attribute: UUID, instanceId: URI = generateRandomInstanceId(), timeProperty: TemporalProperty? = TemporalProperty.OBSERVED_AT, modifiedAt: ZonedDateTime? = null, attributeMetadata: AttributeMetadata, payload: ExpandedAttributeInstance, time: ZonedDateTime, sub: String? = null )
+ LongParameterList:AttributeInstance.kt$AttributeInstance.Companion$( attributeUuid: UUID, instanceId: URI = generateRandomInstanceId(), timeAndProperty: Pair<ZonedDateTime, TemporalProperty>, value: Triple<String?, Double?, WKTCoordinates?>, payload: ExpandedAttributeInstance, sub: String? )
+ LongParameterList:AttributeInstance.kt$AttributeInstance.Companion$( attributeUuid: UUID, instanceId: URI = generateRandomInstanceId(), timeProperty: TemporalProperty? = TemporalProperty.OBSERVED_AT, modifiedAt: ZonedDateTime? = null, attributeMetadata: AttributeMetadata, payload: ExpandedAttributeInstance, time: ZonedDateTime, sub: String? = null )
LongParameterList:EntityAttributeService.kt$EntityAttributeService$( attribute: Attribute, attributeName: ExpandedTerm, attributeMetadata: AttributeMetadata, mergedAt: ZonedDateTime, observedAt: ZonedDateTime?, attributePayload: ExpandedAttributeInstance, sub: Sub? )
LongParameterList:EntityAttributeService.kt$EntityAttributeService$( attribute: Attribute, ngsiLdAttribute: NgsiLdAttribute, attributeMetadata: AttributeMetadata, createdAt: ZonedDateTime, attributePayload: ExpandedAttributeInstance, sub: Sub? )
LongParameterList:EntityAttributeService.kt$EntityAttributeService$( entityId: URI, attributeName: ExpandedTerm, attributeMetadata: AttributeMetadata, createdAt: ZonedDateTime, attributePayload: ExpandedAttributeInstance, sub: Sub? )
diff --git a/search-service/src/main/kotlin/com/egm/stellio/search/entity/service/EntityAttributeService.kt b/search-service/src/main/kotlin/com/egm/stellio/search/entity/service/EntityAttributeService.kt
index 58b25b17c..e4e7f02e7 100644
--- a/search-service/src/main/kotlin/com/egm/stellio/search/entity/service/EntityAttributeService.kt
+++ b/search-service/src/main/kotlin/com/egm/stellio/search/entity/service/EntityAttributeService.kt
@@ -10,9 +10,14 @@ import arrow.fx.coroutines.parMap
import com.egm.stellio.search.common.util.*
import com.egm.stellio.search.entity.model.*
import com.egm.stellio.search.entity.model.Attribute
+import com.egm.stellio.search.entity.util.guessAttributeValueType
+import com.egm.stellio.search.entity.util.mergePatch
+import com.egm.stellio.search.entity.util.partialUpdatePatch
+import com.egm.stellio.search.entity.util.prepareAttributes
+import com.egm.stellio.search.entity.util.toAttributeMetadata
+import com.egm.stellio.search.entity.util.toExpandedAttributeInstance
import com.egm.stellio.search.temporal.model.AttributeInstance
import com.egm.stellio.search.temporal.service.AttributeInstanceService
-import com.egm.stellio.search.temporal.util.*
import com.egm.stellio.shared.model.*
import com.egm.stellio.shared.util.*
import com.egm.stellio.shared.util.AttributeType
@@ -121,7 +126,7 @@ class EntityAttributeService(
* To be removed at some point later.
*/
@Transactional
- suspend fun createEntityAttributes(
+ suspend fun createAttributes(
payload: String,
contexts: List,
sub: String? = null
@@ -131,12 +136,12 @@ class EntityAttributeService(
val ngsiLdEntity = expandedEntity.toNgsiLdEntity().bind()
ngsiLdEntity.prepareAttributes()
.map {
- createEntityAttributes(ngsiLdEntity, expandedEntity, it, createdAt, sub).bind()
+ createAttributes(ngsiLdEntity, expandedEntity, it, createdAt, sub).bind()
}.bind()
}
@Transactional
- suspend fun createEntityAttributes(
+ suspend fun createAttributes(
ngsiLdEntity: NgsiLdEntity,
expandedEntity: ExpandedEntity,
attributesMetadata: List>,
@@ -190,7 +195,7 @@ class EntityAttributeService(
create(attribute).bind()
val attributeInstance = AttributeInstance(
- attribute = attribute.id,
+ attributeUuid = attribute.id,
timeProperty = AttributeInstance.TemporalProperty.CREATED_AT,
time = createdAt,
attributeMetadata = attributeMetadata,
@@ -201,7 +206,7 @@ class EntityAttributeService(
if (attributeMetadata.observedAt != null) {
val attributeObservedAtInstance = AttributeInstance(
- attribute = attribute.id,
+ attributeUuid = attribute.id,
time = attributeMetadata.observedAt,
attributeMetadata = attributeMetadata,
payload = attributePayload
@@ -233,7 +238,7 @@ class EntityAttributeService(
).bind()
val attributeInstance = AttributeInstance(
- attribute = attribute.id,
+ attributeUuid = attribute.id,
timeProperty = AttributeInstance.TemporalProperty.MODIFIED_AT,
time = createdAt,
attributeMetadata = attributeMetadata,
@@ -244,7 +249,7 @@ class EntityAttributeService(
if (attributeMetadata.observedAt != null) {
val attributeObservedAtInstance = AttributeInstance(
- attribute = attribute.id,
+ attributeUuid = attribute.id,
time = attributeMetadata.observedAt,
attributeMetadata = attributeMetadata,
payload = attributePayload
@@ -286,7 +291,7 @@ class EntityAttributeService(
}
@Transactional
- suspend fun deleteTemporalAttributesOfEntity(entityId: URI): Either {
+ suspend fun deleteAttributes(entityId: URI): Either {
val uuids = databaseClient.sql(
"""
DELETE FROM temporal_entity_attribute
@@ -305,7 +310,7 @@ class EntityAttributeService(
}
@Transactional
- suspend fun deleteTemporalAttribute(
+ suspend fun deleteAttribute(
entityId: URI,
attributeName: String,
datasetId: URI?,
@@ -315,15 +320,15 @@ class EntityAttributeService(
logger.debug("Deleting attribute {} from entity {} (all: {})", attributeName, entityId, deleteAll)
if (deleteAll) {
attributeInstanceService.deleteAllInstancesOfAttribute(entityId, attributeName).bind()
- deleteTemporalAttributeAllInstancesReferences(entityId, attributeName).bind()
+ deleteAllInstances(entityId, attributeName).bind()
} else {
attributeInstanceService.deleteInstancesOfAttribute(entityId, attributeName, datasetId).bind()
- deleteTemporalAttributeReferences(entityId, attributeName, datasetId).bind()
+ deleteSpecificInstance(entityId, attributeName, datasetId).bind()
}
}
@Transactional
- suspend fun deleteTemporalAttributeReferences(
+ suspend fun deleteSpecificInstance(
entityId: URI,
attributeName: String,
datasetId: URI?
@@ -345,7 +350,7 @@ class EntityAttributeService(
.execute()
@Transactional
- suspend fun deleteTemporalAttributeAllInstancesReferences(
+ suspend fun deleteAllInstances(
entityId: URI,
attributeName: String
): Either =
@@ -360,7 +365,7 @@ class EntityAttributeService(
.bind("attribute_name", attributeName)
.execute()
- suspend fun getForTemporalEntities(
+ suspend fun getForEntities(
entitiesIds: List,
entitiesQuery: EntitiesQuery
): List {
@@ -540,7 +545,7 @@ class EntityAttributeService(
}
@Transactional
- suspend fun appendEntityAttributes(
+ suspend fun appendAttributes(
entityUri: URI,
ngsiLdAttributes: List,
expandedAttributes: ExpandedAttributes,
@@ -605,7 +610,7 @@ class EntityAttributeService(
}.fold({ it.left() }, { updateResultFromDetailedResult(it).right() })
@Transactional
- suspend fun updateEntityAttributes(
+ suspend fun updateAttributes(
entityUri: URI,
ngsiLdAttributes: List,
expandedAttributes: ExpandedAttributes,
@@ -660,7 +665,7 @@ class EntityAttributeService(
}.fold({ it.left() }, { updateResultFromDetailedResult(it).right() })
@Transactional
- suspend fun partialUpdateEntityAttribute(
+ suspend fun partialUpdateAttribute(
entityId: URI,
expandedAttribute: ExpandedAttribute,
modifiedAt: ZonedDateTime,
@@ -721,7 +726,7 @@ class EntityAttributeService(
}
@Transactional
- suspend fun upsertEntityAttributes(
+ suspend fun upsertAttributes(
entityUri: URI,
ngsiLdAttribute: NgsiLdAttribute,
expandedAttributes: ExpandedAttributes,
@@ -764,7 +769,7 @@ class EntityAttributeService(
}
@Transactional
- suspend fun mergeEntityAttributes(
+ suspend fun mergeAttributes(
entityUri: URI,
ngsiLdAttributes: List,
expandedAttributes: ExpandedAttributes,
@@ -822,7 +827,7 @@ class EntityAttributeService(
}.fold({ it.left() }, { updateResultFromDetailedResult(it).right() })
@Transactional
- suspend fun replaceEntityAttribute(
+ suspend fun replaceAttribute(
entityId: URI,
ngsiLdAttribute: NgsiLdAttribute,
expandedAttribute: ExpandedAttribute,
@@ -924,7 +929,7 @@ class EntityAttributeService(
Pair(modifiedAt, AttributeInstance.TemporalProperty.MODIFIED_AT)
return AttributeInstance(
- attribute = attribute.id,
+ attributeUuid = attribute.id,
timeAndProperty = timeAndProperty,
value = value,
payload = expandedAttributeInstance,
diff --git a/search-service/src/main/kotlin/com/egm/stellio/search/entity/service/EntityOperationService.kt b/search-service/src/main/kotlin/com/egm/stellio/search/entity/service/EntityOperationService.kt
index 1e2bdc2b7..9e02b26f7 100644
--- a/search-service/src/main/kotlin/com/egm/stellio/search/entity/service/EntityOperationService.kt
+++ b/search-service/src/main/kotlin/com/egm/stellio/search/entity/service/EntityOperationService.kt
@@ -234,7 +234,7 @@ class EntityOperationService(
sub: Sub?
): Either = either {
val (jsonLdEntity, ngsiLdEntity) = entity
- entityAttributeService.deleteTemporalAttributesOfEntity(ngsiLdEntity.id).bind()
+ entityAttributeService.deleteAttributes(ngsiLdEntity.id).bind()
entityService.appendAttributes(
ngsiLdEntity.id,
jsonLdEntity.getModifiableMembers(),
diff --git a/search-service/src/main/kotlin/com/egm/stellio/search/entity/service/EntityService.kt b/search-service/src/main/kotlin/com/egm/stellio/search/entity/service/EntityService.kt
index fdebc1681..91516ee86 100644
--- a/search-service/src/main/kotlin/com/egm/stellio/search/entity/service/EntityService.kt
+++ b/search-service/src/main/kotlin/com/egm/stellio/search/entity/service/EntityService.kt
@@ -9,8 +9,8 @@ import com.egm.stellio.search.common.util.*
import com.egm.stellio.search.entity.model.*
import com.egm.stellio.search.entity.model.Attribute
import com.egm.stellio.search.entity.model.OperationType.*
+import com.egm.stellio.search.entity.util.prepareAttributes
import com.egm.stellio.search.scope.ScopeService
-import com.egm.stellio.search.temporal.util.prepareAttributes
import com.egm.stellio.shared.model.*
import com.egm.stellio.shared.util.*
import com.egm.stellio.shared.util.AuthContextModel.SpecificAccessPolicy
@@ -47,7 +47,7 @@ class EntityService(
logger.debug("Creating entity {}", ngsiLdEntity.id)
createEntityPayload(ngsiLdEntity, expandedEntity, createdAt, sub = sub).bind()
- entityAttributeService.createEntityAttributes(
+ entityAttributeService.createAttributes(
ngsiLdEntity,
expandedEntity,
attributesMetadata,
@@ -96,7 +96,7 @@ class EntityService(
val mergedAt = ngsiLdDateTime()
val coreUpdateResult = updateCoreAttributes(entityId, coreAttrs, mergedAt, MERGE_ENTITY).bind()
- val attrsUpdateResult = entityAttributeService.mergeEntityAttributes(
+ val attrsUpdateResult = entityAttributeService.mergeAttributes(
entityId,
otherAttrs.toMap().toNgsiLdAttributes().bind(),
expandedAttributes,
@@ -125,10 +125,10 @@ class EntityService(
val attributesMetadata = ngsiLdEntity.prepareAttributes().bind()
logger.debug("Replacing entity {}", ngsiLdEntity.id)
- entityAttributeService.deleteTemporalAttributesOfEntity(entityId)
+ entityAttributeService.deleteAttributes(entityId)
replaceEntityPayload(ngsiLdEntity, expandedEntity, replacedAt, sub).bind()
- entityAttributeService.createEntityAttributes(
+ entityAttributeService.createAttributes(
ngsiLdEntity,
expandedEntity,
attributesMetadata,
@@ -481,7 +481,7 @@ class EntityService(
if (disallowOverwrite) APPEND_ATTRIBUTES
else APPEND_ATTRIBUTES_OVERWRITE_ALLOWED
val coreUpdateResult = updateCoreAttributes(entityUri, coreAttrs, createdAt, operationType).bind()
- val attrsUpdateResult = entityAttributeService.appendEntityAttributes(
+ val attrsUpdateResult = entityAttributeService.appendAttributes(
entityUri,
otherAttrs.toMap().toNgsiLdAttributes().bind(),
expandedAttributes,
@@ -510,7 +510,7 @@ class EntityService(
val createdAt = ngsiLdDateTime()
val coreUpdateResult = updateCoreAttributes(entityUri, coreAttrs, createdAt, UPDATE_ATTRIBUTES).bind()
- val attrsUpdateResult = entityAttributeService.updateEntityAttributes(
+ val attrsUpdateResult = entityAttributeService.updateAttributes(
entityUri,
otherAttrs.toMap().toNgsiLdAttributes().bind(),
expandedAttributes,
@@ -534,7 +534,7 @@ class EntityService(
sub: Sub?
): Either = either {
val modifiedAt = ngsiLdDateTime()
- val updateResult = entityAttributeService.partialUpdateEntityAttribute(
+ val updateResult = entityAttributeService.partialUpdateAttribute(
entityId,
expandedAttribute,
modifiedAt,
@@ -560,7 +560,7 @@ class EntityService(
val jsonLdAttribute = mapOf(attributeName to listOf(expandedAttributeInstance))
val ngsiLdAttribute = jsonLdAttribute.toNgsiLdAttributes().bind()[0]
- entityAttributeService.upsertEntityAttributes(
+ entityAttributeService.upsertAttributes(
entityId,
ngsiLdAttribute,
jsonLdAttribute,
@@ -585,7 +585,7 @@ class EntityService(
val ngsiLdAttribute = listOf(expandedAttribute).toMap().toNgsiLdAttributes().bind()[0]
val replacedAt = ngsiLdDateTime()
- val updateResult = entityAttributeService.replaceEntityAttribute(
+ val updateResult = entityAttributeService.replaceAttribute(
entityId,
ngsiLdAttribute,
expandedAttribute,
@@ -675,7 +675,7 @@ class EntityService(
}
.bind()
- entityAttributeService.deleteTemporalAttributesOfEntity(entityId).bind()
+ entityAttributeService.deleteAttributes(entityId).bind()
scopeService.deleteHistory(entityId).bind()
entity
}
@@ -695,7 +695,7 @@ class EntityService(
attributeName,
datasetId
).bind()
- entityAttributeService.deleteTemporalAttribute(
+ entityAttributeService.deleteAttribute(
entityId,
attributeName,
datasetId,
diff --git a/search-service/src/main/kotlin/com/egm/stellio/search/temporal/util/AttributeInstanceUtils.kt b/search-service/src/main/kotlin/com/egm/stellio/search/entity/util/AttributeUtils.kt
similarity index 55%
rename from search-service/src/main/kotlin/com/egm/stellio/search/temporal/util/AttributeInstanceUtils.kt
rename to search-service/src/main/kotlin/com/egm/stellio/search/entity/util/AttributeUtils.kt
index d0262c2db..32d2c2c35 100644
--- a/search-service/src/main/kotlin/com/egm/stellio/search/temporal/util/AttributeInstanceUtils.kt
+++ b/search-service/src/main/kotlin/com/egm/stellio/search/entity/util/AttributeUtils.kt
@@ -1,4 +1,4 @@
-package com.egm.stellio.search.temporal.util
+package com.egm.stellio.search.entity.util
import arrow.core.Either
import arrow.core.left
@@ -7,17 +7,23 @@ import arrow.core.right
import com.egm.stellio.search.common.util.deserializeAsMap
import com.egm.stellio.search.common.util.valueToDoubleOrNull
import com.egm.stellio.search.entity.model.Attribute
-import com.egm.stellio.search.entity.model.Attribute.AttributeValueType
import com.egm.stellio.search.entity.model.AttributeMetadata
-import com.egm.stellio.shared.model.*
-import com.egm.stellio.shared.util.JsonLdUtils.JSONLD_LANGUAGE
-import com.egm.stellio.shared.util.JsonLdUtils.NGSILD_JSONPROPERTY_VALUE
-import com.egm.stellio.shared.util.JsonLdUtils.NGSILD_LANGUAGEPROPERTY_VALUE
-import com.egm.stellio.shared.util.JsonLdUtils.NGSILD_PROPERTY_VALUE
-import com.egm.stellio.shared.util.JsonLdUtils.NGSILD_VOCABPROPERTY_VALUE
-import com.egm.stellio.shared.util.JsonLdUtils.logger
+import com.egm.stellio.shared.model.APIException
+import com.egm.stellio.shared.model.BadRequestDataException
+import com.egm.stellio.shared.model.ExpandedAttributeInstance
+import com.egm.stellio.shared.model.NgsiLdAttributeInstance
+import com.egm.stellio.shared.model.NgsiLdEntity
+import com.egm.stellio.shared.model.NgsiLdGeoPropertyInstance
+import com.egm.stellio.shared.model.NgsiLdJsonPropertyInstance
+import com.egm.stellio.shared.model.NgsiLdLanguagePropertyInstance
+import com.egm.stellio.shared.model.NgsiLdPropertyInstance
+import com.egm.stellio.shared.model.NgsiLdRelationshipInstance
+import com.egm.stellio.shared.model.NgsiLdVocabPropertyInstance
+import com.egm.stellio.shared.model.WKTCoordinates
+import com.egm.stellio.shared.model.getPropertyValue
+import com.egm.stellio.shared.util.JsonLdUtils
+import com.egm.stellio.shared.util.JsonUtils
import com.egm.stellio.shared.util.JsonUtils.deserializeAsMap
-import com.egm.stellio.shared.util.JsonUtils.serializeObject
import com.savvasdalkitsis.jsonmerger.JsonMerger
import io.r2dbc.postgresql.codec.Json
import java.time.LocalDate
@@ -46,36 +52,36 @@ fun NgsiLdAttributeInstance.toAttributeMetadata(): Either
Triple(
Attribute.AttributeType.Relationship,
- AttributeValueType.URI,
+ Attribute.AttributeValueType.URI,
Triple(this.objectId.toString(), null, null)
)
is NgsiLdGeoPropertyInstance ->
Triple(
Attribute.AttributeType.GeoProperty,
- AttributeValueType.GEOMETRY,
+ Attribute.AttributeValueType.GEOMETRY,
Triple(null, null, this.coordinates)
)
is NgsiLdJsonPropertyInstance ->
Triple(
Attribute.AttributeType.JsonProperty,
- AttributeValueType.JSON,
- Triple(serializeObject(this.json), null, null)
+ Attribute.AttributeValueType.JSON,
+ Triple(JsonUtils.serializeObject(this.json), null, null)
)
is NgsiLdLanguagePropertyInstance ->
Triple(
Attribute.AttributeType.LanguageProperty,
- AttributeValueType.ARRAY,
- Triple(serializeObject(this.languageMap), null, null)
+ Attribute.AttributeValueType.ARRAY,
+ Triple(JsonUtils.serializeObject(this.languageMap), null, null)
)
is NgsiLdVocabPropertyInstance ->
Triple(
Attribute.AttributeType.VocabProperty,
- AttributeValueType.ARRAY,
- Triple(serializeObject(this.vocab), null, null)
+ Attribute.AttributeValueType.ARRAY,
+ Triple(JsonUtils.serializeObject(this.vocab), null, null)
)
}
if (attributeValue == Triple(null, null, null)) {
- logger.warn("Unable to get a value from attribute: $this")
+ JsonLdUtils.logger.warn("Unable to get a value from attribute: $this")
return BadRequestDataException("Unable to get a value from attribute: $this").left()
}
@@ -93,36 +99,36 @@ fun NgsiLdAttributeInstance.toAttributeMetadata(): Either
guessPropertyValueType(expandedAttributeInstance.getPropertyValue()!!).first
- Attribute.AttributeType.Relationship -> AttributeValueType.URI
- Attribute.AttributeType.GeoProperty -> AttributeValueType.GEOMETRY
- Attribute.AttributeType.JsonProperty -> AttributeValueType.JSON
- Attribute.AttributeType.LanguageProperty -> AttributeValueType.ARRAY
- Attribute.AttributeType.VocabProperty -> AttributeValueType.ARRAY
+ Attribute.AttributeType.Relationship -> Attribute.AttributeValueType.URI
+ Attribute.AttributeType.GeoProperty -> Attribute.AttributeValueType.GEOMETRY
+ Attribute.AttributeType.JsonProperty -> Attribute.AttributeValueType.JSON
+ Attribute.AttributeType.LanguageProperty -> Attribute.AttributeValueType.ARRAY
+ Attribute.AttributeType.VocabProperty -> Attribute.AttributeValueType.ARRAY
}
fun guessPropertyValueType(
ngsiLdPropertyInstance: NgsiLdPropertyInstance
-): Pair> =
+): Pair> =
guessPropertyValueType(ngsiLdPropertyInstance.value)
fun guessPropertyValueType(
value: Any
-): Pair> =
+): Pair> =
when (value) {
- is Double -> Pair(AttributeValueType.NUMBER, Triple(null, valueToDoubleOrNull(value), null))
- is Int -> Pair(AttributeValueType.NUMBER, Triple(null, valueToDoubleOrNull(value), null))
- is Map<*, *> -> Pair(AttributeValueType.OBJECT, Triple(serializeObject(value), null, null))
- is List<*> -> Pair(AttributeValueType.ARRAY, Triple(serializeObject(value), null, null))
- is String -> Pair(AttributeValueType.STRING, Triple(value, null, null))
- is Boolean -> Pair(AttributeValueType.BOOLEAN, Triple(value.toString(), null, null))
- is LocalDate -> Pair(AttributeValueType.DATE, Triple(value.toString(), null, null))
- is ZonedDateTime -> Pair(AttributeValueType.DATETIME, Triple(value.toString(), null, null))
- is LocalTime -> Pair(AttributeValueType.TIME, Triple(value.toString(), null, null))
- else -> Pair(AttributeValueType.STRING, Triple(value.toString(), null, null))
+ is Double -> Pair(Attribute.AttributeValueType.NUMBER, Triple(null, valueToDoubleOrNull(value), null))
+ is Int -> Pair(Attribute.AttributeValueType.NUMBER, Triple(null, valueToDoubleOrNull(value), null))
+ is Map<*, *> -> Pair(Attribute.AttributeValueType.OBJECT, Triple(JsonUtils.serializeObject(value), null, null))
+ is List<*> -> Pair(Attribute.AttributeValueType.ARRAY, Triple(JsonUtils.serializeObject(value), null, null))
+ is String -> Pair(Attribute.AttributeValueType.STRING, Triple(value, null, null))
+ is Boolean -> Pair(Attribute.AttributeValueType.BOOLEAN, Triple(value.toString(), null, null))
+ is LocalDate -> Pair(Attribute.AttributeValueType.DATE, Triple(value.toString(), null, null))
+ is ZonedDateTime -> Pair(Attribute.AttributeValueType.DATETIME, Triple(value.toString(), null, null))
+ is LocalTime -> Pair(Attribute.AttributeValueType.TIME, Triple(value.toString(), null, null))
+ else -> Pair(Attribute.AttributeValueType.STRING, Triple(value.toString(), null, null))
}
fun Json.toExpandedAttributeInstance(): ExpandedAttributeInstance =
@@ -133,7 +139,7 @@ fun partialUpdatePatch(
update: ExpandedAttributeInstance
): Pair {
val target = source.plus(update)
- return Pair(serializeObject(target), target)
+ return Pair(JsonUtils.serializeObject(target), target)
}
fun mergePatch(
@@ -145,7 +151,11 @@ fun mergePatch(
if (!source.containsKey(attrName)) {
target[attrName] = attrValue
} else if (
- listOf(NGSILD_JSONPROPERTY_VALUE, NGSILD_VOCABPROPERTY_VALUE, NGSILD_PROPERTY_VALUE).contains(attrName)
+ listOf(
+ JsonLdUtils.NGSILD_JSONPROPERTY_VALUE,
+ JsonLdUtils.NGSILD_VOCABPROPERTY_VALUE,
+ JsonLdUtils.NGSILD_PROPERTY_VALUE
+ ).contains(attrName)
) {
if (attrValue.size > 1) {
// a Property holding an array of value or a JsonPropery holding an array of JSON objects
@@ -154,18 +164,18 @@ fun mergePatch(
} else {
target[attrName] = listOf(
JsonMerger().merge(
- serializeObject(source[attrName]!![0]),
- serializeObject(attrValue[0])
+ JsonUtils.serializeObject(source[attrName]!![0]),
+ JsonUtils.serializeObject(attrValue[0])
).deserializeAsMap()
)
}
- } else if (listOf(NGSILD_LANGUAGEPROPERTY_VALUE).contains(attrName)) {
+ } else if (listOf(JsonLdUtils.NGSILD_LANGUAGEPROPERTY_VALUE).contains(attrName)) {
val sourceLangEntries = source[attrName] as List