Skip to content

Commit

Permalink
refacto: first reorganisation in temporal/entities/discovery/common
Browse files Browse the repository at this point in the history
  • Loading branch information
thomasBousselin authored and bobeal committed Aug 11, 2024
1 parent 7426cb5 commit fd62885
Show file tree
Hide file tree
Showing 110 changed files with 909 additions and 725 deletions.
20 changes: 12 additions & 8 deletions search-service/config/detekt/baseline.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,25 @@
<ID>LongMethod:EntityAccessControlHandler.kt$EntityAccessControlHandler$@PostMapping("/{subjectId}/attrs", consumes = [MediaType.APPLICATION_JSON_VALUE, JSON_LD_CONTENT_TYPE]) suspend fun addRightsOnEntities( @RequestHeader httpHeaders: HttpHeaders, @PathVariable subjectId: String, @RequestBody requestBody: Mono&lt;String&gt; ): ResponseEntity&lt;*&gt;</ID>
<ID>LongMethod:PatchAttributeTests.kt$PatchAttributeTests.Companion$@JvmStatic fun mergePatchProvider(): Stream&lt;Arguments&gt;</ID>
<ID>LongMethod:PatchAttributeTests.kt$PatchAttributeTests.Companion$@JvmStatic fun partialUpdatePatchProvider(): Stream&lt;Arguments&gt;</ID>
<ID>LongMethod:QueryServiceTests.kt$QueryServiceTests$@Test fun `it should query temporal entities as requested by query params`()</ID>
<ID>LongMethod:QueryServiceTests.kt$QueryServiceTests$@Test fun `it should return an empty list for an attribute if it has no temporal values`()</ID>
<ID>LongMethod:TemporalQueryServiceTests.kt$TemporalQueryServiceTests$@Test fun `it should query temporal entities as requested by query params`()</ID>
<ID>LongMethod:TemporalQueryServiceTests.kt$TemporalQueryServiceTests$@Test fun `it should return an empty list for an attribute if it has no temporal values`()</ID>
<ID>LongMethod:TemporalScopeBuilderTests.kt$TemporalScopeBuilderTests$@Test fun `it should build an aggregated temporal representation of scopes`()</ID>
<ID>LongMethod:V0_29__JsonLd_migration.kt$V0_29__JsonLd_migration$override fun migrate(context: Context)</ID>
<ID>LongParameterList:AttributeInstance.kt$AttributeInstance.Companion$( temporalEntityAttribute: UUID, instanceId: URI = generateRandomInstanceId(), timeAndProperty: Pair&lt;ZonedDateTime, TemporalProperty&gt;, value: Triple&lt;String?, Double?, WKTCoordinates?&gt;, payload: ExpandedAttributeInstance, sub: String? )</ID>
<ID>LongParameterList:AttributeInstance.kt$AttributeInstance.Companion$( temporalEntityAttribute: UUID, instanceId: URI = generateRandomInstanceId(), timeProperty: TemporalProperty? = TemporalProperty.OBSERVED_AT, modifiedAt: ZonedDateTime? = null, attributeMetadata: AttributeMetadata, payload: ExpandedAttributeInstance, time: ZonedDateTime, sub: String? = null )</ID>
<ID>LongParameterList:EntityAttributeService.kt$EntityAttributeService$( entityId: URI, attributeName: ExpandedTerm, attributeMetadata: AttributeMetadata, createdAt: ZonedDateTime, attributePayload: ExpandedAttributeInstance, sub: Sub? )</ID>
<ID>LongParameterList:EntityAttributeService.kt$EntityAttributeService$( entityUri: URI, ngsiLdAttributes: List&lt;NgsiLdAttribute&gt;, expandedAttributes: ExpandedAttributes, createdAt: ZonedDateTime, observedAt: ZonedDateTime?, sub: Sub? )</ID>
<ID>LongParameterList:EntityAttributeService.kt$EntityAttributeService$( entityUri: URI, ngsiLdAttributes: List&lt;NgsiLdAttribute&gt;, expandedAttributes: ExpandedAttributes, disallowOverwrite: Boolean, createdAt: ZonedDateTime, sub: Sub? )</ID>
<ID>LongParameterList:EntityAttributeService.kt$EntityAttributeService$( tea: TemporalEntityAttribute, attributeName: ExpandedTerm, attributeMetadata: AttributeMetadata, mergedAt: ZonedDateTime, observedAt: ZonedDateTime?, attributePayload: ExpandedAttributeInstance, sub: Sub? )</ID>
<ID>LongParameterList:EntityAttributeService.kt$EntityAttributeService$( temporalEntityAttribute: TemporalEntityAttribute, ngsiLdAttribute: NgsiLdAttribute, attributeMetadata: AttributeMetadata, createdAt: ZonedDateTime, attributePayload: ExpandedAttributeInstance, sub: Sub? )</ID>
<ID>LongParameterList:EntityEventService.kt$EntityEventService$( updatedDetails: UpdatedDetails, sub: String?, tenantName: String, entityId: URI, entityTypesAndPayload: Pair&lt;List&lt;ExpandedTerm&gt;, String&gt;, serializedAttribute: Pair&lt;ExpandedTerm, String&gt;, overwrite: Boolean )</ID>
<ID>LongParameterList:TemporalEntityAttributeService.kt$TemporalEntityAttributeService$( entityId: URI, attributeName: ExpandedTerm, attributeMetadata: AttributeMetadata, createdAt: ZonedDateTime, attributePayload: ExpandedAttributeInstance, sub: Sub? )</ID>
<ID>LongParameterList:TemporalEntityAttributeService.kt$TemporalEntityAttributeService$( entityUri: URI, ngsiLdAttributes: List&lt;NgsiLdAttribute&gt;, expandedAttributes: ExpandedAttributes, createdAt: ZonedDateTime, observedAt: ZonedDateTime?, sub: Sub? )</ID>
<ID>LongParameterList:TemporalEntityAttributeService.kt$TemporalEntityAttributeService$( entityUri: URI, ngsiLdAttributes: List&lt;NgsiLdAttribute&gt;, expandedAttributes: ExpandedAttributes, disallowOverwrite: Boolean, createdAt: ZonedDateTime, sub: Sub? )</ID>
<ID>LongParameterList:TemporalEntityAttributeService.kt$TemporalEntityAttributeService$( tea: TemporalEntityAttribute, attributeName: ExpandedTerm, attributeMetadata: AttributeMetadata, mergedAt: ZonedDateTime, observedAt: ZonedDateTime?, attributePayload: ExpandedAttributeInstance, sub: Sub? )</ID>
<ID>LongParameterList:TemporalEntityAttributeService.kt$TemporalEntityAttributeService$( temporalEntityAttribute: TemporalEntityAttribute, ngsiLdAttribute: NgsiLdAttribute, attributeMetadata: AttributeMetadata, createdAt: ZonedDateTime, attributePayload: ExpandedAttributeInstance, sub: Sub? )</ID>
<ID>LongParameterList:V0_29__JsonLd_migration.kt$V0_29__JsonLd_migration$( entityId: URI, attributeName: ExpandedTerm, datasetId: URI?, attributePayload: ExpandedAttributeInstance, ngsiLdAttributeInstance: NgsiLdAttributeInstance, defaultCreatedAt: ZonedDateTime )</ID>
<ID>MaxLineLength:TemporalEntityHandlerTests.kt$TemporalEntityHandlerTests$coEvery { temporalQueryService.queryTemporalEntities(any(), any()) } returns Either.Right(Triple(emptyList(), 2, null))</ID>
<ID>MaxLineLength:TemporalEntityOperationsHandlerTests.kt$TemporalEntityOperationsHandlerTests$coEvery { temporalQueryService.queryTemporalEntities(any(), any()) } returns Either.Right(Triple(emptyList(), 2, null))</ID>
<ID>MaximumLineLength:TemporalEntityHandlerTests.kt$TemporalEntityHandlerTests$ </ID>
<ID>MaximumLineLength:TemporalEntityOperationsHandlerTests.kt$TemporalEntityOperationsHandlerTests$ </ID>
<ID>NestedBlockDepth:V0_29__JsonLd_migration.kt$V0_29__JsonLd_migration$override fun migrate(context: Context)</ID>
<ID>SwallowedException:EntitiesQueryUtils.kt$e: IllegalArgumentException</ID>
<ID>SwallowedException:TemporalQueryUtils.kt$e: IllegalArgumentException</ID>
<ID>TooManyFunctions:EntityPayloadService.kt$EntityPayloadService</ID>
</CurrentIssues>
</SmellBaseline>
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import org.springframework.boot.context.properties.ConfigurationPropertiesScan
import org.springframework.boot.runApplication

@SpringBootApplication(scanBasePackages = ["com.egm.stellio.search", "com.egm.stellio.shared"])
@ConfigurationPropertiesScan("com.egm.stellio.search.config", "com.egm.stellio.shared.config")
@ConfigurationPropertiesScan("com.egm.stellio.search.common.config", "com.egm.stellio.shared.config")
class SearchServiceApplication

@Suppress("SpreadOperator")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
package com.egm.stellio.search.listener
package com.egm.stellio.search.authorization.listener

import arrow.core.Either
import arrow.core.flattenOption
import arrow.core.left
import arrow.core.raise.either
import arrow.core.right
import com.egm.stellio.search.authorization.EntityAccessRightsService
import com.egm.stellio.search.authorization.SubjectReferential
import com.egm.stellio.search.authorization.SubjectReferentialService
import com.egm.stellio.search.authorization.toSubjectInfo
import com.egm.stellio.search.config.SearchProperties
import com.egm.stellio.search.service.EntityEventService
import com.egm.stellio.search.service.EntityPayloadService
import com.egm.stellio.search.authorization.model.SubjectReferential
import com.egm.stellio.search.authorization.model.toSubjectInfo
import com.egm.stellio.search.authorization.service.EntityAccessRightsService
import com.egm.stellio.search.authorization.service.SubjectReferentialService
import com.egm.stellio.search.common.config.SearchProperties
import com.egm.stellio.search.entity.service.EntityEventService
import com.egm.stellio.search.entity.service.EntityPayloadService
import com.egm.stellio.shared.model.*
import com.egm.stellio.shared.util.AuthContextModel.AUTH_TERM_IS_MEMBER_OF
import com.egm.stellio.shared.util.AuthContextModel.AUTH_TERM_ROLES
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.egm.stellio.search.authorization
package com.egm.stellio.search.authorization.model

import com.egm.stellio.shared.model.ExpandedAttributeInstances
import com.egm.stellio.shared.model.ExpandedTerm
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.egm.stellio.search.authorization
package com.egm.stellio.search.authorization.model

import com.egm.stellio.shared.util.AuthContextModel.AUTH_PROP_NAME
import com.egm.stellio.shared.util.AuthContextModel.AUTH_REL_IS_MEMBER_OF
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.egm.stellio.search.authorization
package com.egm.stellio.search.authorization.model

import com.egm.stellio.shared.util.AccessRight
import java.net.URI
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.egm.stellio.search.authorization
package com.egm.stellio.search.authorization.model

import com.egm.stellio.search.util.deserializeAsMap
import com.egm.stellio.search.common.util.deserializeAsMap
import com.egm.stellio.shared.util.GlobalRole
import com.egm.stellio.shared.util.JsonLdUtils.JSONLD_VALUE_TERM
import com.egm.stellio.shared.util.JsonUtils
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.egm.stellio.search.authorization
package com.egm.stellio.search.authorization.model

import com.egm.stellio.shared.util.AuthContextModel.AUTH_PROP_FAMILY_NAME
import com.egm.stellio.shared.util.AuthContextModel.AUTH_PROP_GIVEN_NAME
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.egm.stellio.search.authorization
package com.egm.stellio.search.authorization.service

import arrow.core.Either
import arrow.core.Option
import com.egm.stellio.search.model.EntitiesQuery
import com.egm.stellio.search.entity.model.EntitiesQuery
import com.egm.stellio.shared.model.APIException
import com.egm.stellio.shared.model.ExpandedEntity
import com.egm.stellio.shared.util.Sub
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package com.egm.stellio.search.authorization
package com.egm.stellio.search.authorization.service

import arrow.core.Either
import arrow.core.Option
import arrow.core.right
import com.egm.stellio.search.model.EntitiesQuery
import com.egm.stellio.search.entity.model.EntitiesQuery
import com.egm.stellio.shared.model.APIException
import com.egm.stellio.shared.model.ExpandedEntity
import com.egm.stellio.shared.util.Sub
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package com.egm.stellio.search.authorization
package com.egm.stellio.search.authorization.service

import arrow.core.*
import arrow.core.raise.either
import arrow.fx.coroutines.parMap
import com.egm.stellio.search.model.EntitiesQuery
import com.egm.stellio.search.entity.model.EntitiesQuery
import com.egm.stellio.shared.model.APIException
import com.egm.stellio.shared.model.AccessDeniedException
import com.egm.stellio.shared.model.ExpandedEntity
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package com.egm.stellio.search.authorization
package com.egm.stellio.search.authorization.service

import arrow.core.*
import arrow.core.raise.either
import com.egm.stellio.search.authorization.EntityAccessRights.SubjectRightInfo
import com.egm.stellio.search.service.EntityPayloadService
import com.egm.stellio.search.util.*
import com.egm.stellio.search.authorization.model.EntityAccessRights
import com.egm.stellio.search.authorization.model.EntityAccessRights.SubjectRightInfo
import com.egm.stellio.search.common.util.*
import com.egm.stellio.search.entity.service.EntityPayloadService
import com.egm.stellio.shared.config.ApplicationProperties
import com.egm.stellio.shared.model.*
import com.egm.stellio.shared.util.*
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
package com.egm.stellio.search.authorization
package com.egm.stellio.search.authorization.service

import arrow.core.Either
import arrow.core.Option
import arrow.core.Some
import arrow.core.getOrElse
import com.egm.stellio.search.util.*
import com.egm.stellio.search.authorization.model.Group
import com.egm.stellio.search.authorization.model.SubjectReferential
import com.egm.stellio.search.authorization.model.User
import com.egm.stellio.search.common.util.*
import com.egm.stellio.shared.model.APIException
import com.egm.stellio.shared.model.AccessDeniedException
import com.egm.stellio.shared.util.*
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
package com.egm.stellio.search.web
package com.egm.stellio.search.authorization.web

import arrow.core.*
import arrow.core.raise.either
import com.egm.stellio.search.authorization.*
import com.egm.stellio.search.model.*
import com.egm.stellio.search.service.EntityPayloadService
import com.egm.stellio.search.util.composeEntitiesQuery
import com.egm.stellio.search.authorization.service.AuthorizationService
import com.egm.stellio.search.authorization.service.EntityAccessRightsService
import com.egm.stellio.search.entity.model.NotUpdatedDetails
import com.egm.stellio.search.entity.model.UpdateAttributeResult
import com.egm.stellio.search.entity.model.UpdateOperationResult
import com.egm.stellio.search.entity.model.updateResultFromDetailedResult
import com.egm.stellio.search.entity.service.EntityPayloadService
import com.egm.stellio.search.entity.util.composeEntitiesQuery
import com.egm.stellio.shared.config.ApplicationProperties
import com.egm.stellio.shared.model.*
import com.egm.stellio.shared.util.*
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.egm.stellio.search.config
package com.egm.stellio.search.common.config

import org.springframework.boot.autoconfigure.kafka.ConcurrentKafkaListenerContainerFactoryConfigurer
import org.springframework.context.annotation.Bean
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.egm.stellio.search.config
package com.egm.stellio.search.common.config

import org.springframework.boot.context.properties.ConfigurationProperties

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.egm.stellio.search.config
package com.egm.stellio.search.common.config

import org.springframework.context.annotation.Configuration
import org.springframework.http.codec.ServerCodecConfigurer
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.egm.stellio.search.model
package com.egm.stellio.search.common.model

import arrow.core.Either
import arrow.core.left
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.egm.stellio.search.support
package com.egm.stellio.search.common.support

import com.egm.stellio.search.authorization.SubjectReferential
import com.egm.stellio.search.authorization.SubjectReferentialService
import com.egm.stellio.search.authorization.model.SubjectReferential
import com.egm.stellio.search.authorization.service.SubjectReferentialService
import com.egm.stellio.shared.util.GlobalRole
import com.egm.stellio.shared.util.SubjectType
import io.r2dbc.postgresql.codec.Json
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.egm.stellio.search.tenant
package com.egm.stellio.search.common.tenant

import com.egm.stellio.shared.config.ApplicationProperties
import jakarta.annotation.PostConstruct
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.egm.stellio.search.tenant
package com.egm.stellio.search.common.tenant

import com.egm.stellio.shared.config.ApplicationProperties
import io.r2dbc.spi.ConnectionFactories
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.egm.stellio.search.tenant
package com.egm.stellio.search.common.tenant

import com.egm.stellio.shared.config.ApplicationProperties
import com.egm.stellio.shared.model.NonexistentTenantException
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.egm.stellio.search.util
package com.egm.stellio.search.common.util

import com.egm.stellio.shared.model.ExpandedAttributeInstance
import com.egm.stellio.shared.util.JsonUtils.deserializeAsMap
Expand Down Expand Up @@ -33,3 +33,17 @@ fun Json.deserializeExpandedPayload(): Map<String, List<Any>> = this.asString().
fun Json.deserializeAsMap(): Map<String, Any> = this.asString().deserializeAsMap()

fun ExpandedAttributeInstance.toJson(): Json = Json.of(serializeObject(this))

fun valueToDoubleOrNull(value: Any): Double? =
when (value) {
is Double -> value
is Int -> value.toDouble()
else -> null
}

fun valueToStringOrNull(value: Any): String? =
when (value) {
is String -> value
is Boolean -> value.toString()
else -> null
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.egm.stellio.search.util
package com.egm.stellio.search.common.util

import arrow.core.Either
import arrow.core.left
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.egm.stellio.search.model
package com.egm.stellio.search.discovery.model

import java.net.URI

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.egm.stellio.search.model
package com.egm.stellio.search.discovery.model

import com.egm.stellio.shared.util.toUri
import java.net.URI
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.egm.stellio.search.model
package com.egm.stellio.search.discovery.model

import java.net.URI

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.egm.stellio.search.model
package com.egm.stellio.search.discovery.model

import java.net.URI

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.egm.stellio.search.model
package com.egm.stellio.search.discovery.model

import java.net.URI

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.egm.stellio.search.model
package com.egm.stellio.search.discovery.model

import com.egm.stellio.shared.util.toUri
import java.net.URI
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
package com.egm.stellio.search.service
package com.egm.stellio.search.discovery.service

import arrow.core.Either
import arrow.core.flatten
import arrow.core.left
import arrow.core.right
import com.egm.stellio.search.model.AttributeDetails
import com.egm.stellio.search.model.AttributeList
import com.egm.stellio.search.model.AttributeType
import com.egm.stellio.search.model.AttributeTypeInfo
import com.egm.stellio.search.util.allToMappedList
import com.egm.stellio.search.util.toInt
import com.egm.stellio.search.util.toList
import com.egm.stellio.search.util.toUri
import com.egm.stellio.search.common.util.allToMappedList
import com.egm.stellio.search.common.util.toInt
import com.egm.stellio.search.common.util.toList
import com.egm.stellio.search.common.util.toUri
import com.egm.stellio.search.discovery.model.AttributeDetails
import com.egm.stellio.search.discovery.model.AttributeList
import com.egm.stellio.search.discovery.model.AttributeType
import com.egm.stellio.search.discovery.model.AttributeTypeInfo
import com.egm.stellio.shared.model.APIException
import com.egm.stellio.shared.model.ExpandedTerm
import com.egm.stellio.shared.model.ResourceNotFoundException
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package com.egm.stellio.search.service
package com.egm.stellio.search.discovery.service

import arrow.core.Either
import arrow.core.left
import arrow.core.right
import com.egm.stellio.search.model.*
import com.egm.stellio.search.util.allToMappedList
import com.egm.stellio.search.util.toInt
import com.egm.stellio.search.util.toUri
import com.egm.stellio.search.common.util.allToMappedList
import com.egm.stellio.search.common.util.toInt
import com.egm.stellio.search.common.util.toUri
import com.egm.stellio.search.discovery.model.*
import com.egm.stellio.shared.model.APIException
import com.egm.stellio.shared.model.ExpandedTerm
import com.egm.stellio.shared.model.ResourceNotFoundException
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.egm.stellio.search.web
package com.egm.stellio.search.discovery.web

import arrow.core.raise.either
import com.egm.stellio.search.service.AttributeService
import com.egm.stellio.search.discovery.service.AttributeService
import com.egm.stellio.shared.config.ApplicationProperties
import com.egm.stellio.shared.util.*
import com.egm.stellio.shared.util.JsonLdUtils.expandJsonLdTerm
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.egm.stellio.search.web
package com.egm.stellio.search.discovery.web

import arrow.core.raise.either
import com.egm.stellio.search.service.EntityTypeService
import com.egm.stellio.search.discovery.service.EntityTypeService
import com.egm.stellio.shared.config.ApplicationProperties
import com.egm.stellio.shared.util.*
import com.egm.stellio.shared.util.JsonLdUtils.expandJsonLdTerm
Expand Down
Loading

0 comments on commit fd62885

Please sign in to comment.