Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file modified mvnw
100644 → 100755
Empty file.
9 changes: 7 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@

<properties>
<compiler-plugin.version>3.8.1</compiler-plugin.version>
<kotlin.version>1.7.10</kotlin.version>
<kotlin.version>1.7.21</kotlin.version>
<lombok.version>1.18.24</lombok.version>
<maven.compiler.release>17</maven.compiler.release>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<quarkus.platform.version>2.12.1.Final</quarkus.platform.version>
<quarkus.platform.version>2.15.1.Final</quarkus.platform.version>
<skipITs>true</skipITs>
<surefire-plugin.version>3.0.0-M7</surefire-plugin.version>
<failsafe-plugin.version>3.0.0-M7</failsafe-plugin.version>
Expand Down Expand Up @@ -69,6 +69,11 @@
<groupId>io.quarkus</groupId>
<artifactId>quarkus-cache</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-kotlin</artifactId>
<version>2.14.1</version>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-junit5</artifactId>
Expand Down
3 changes: 2 additions & 1 deletion src/main/kotlin/org/kravbank/domain/Code.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,10 @@ import javax.persistence.*
@Entity
class Code : PanacheEntity() {

@Column(columnDefinition="TEXT")
lateinit var title: String

@Column(columnDefinition="TEXT")
lateinit var description: String

@Column(unique = true)
Expand All @@ -22,7 +24,6 @@ class Code : PanacheEntity() {
)
@JsonManagedReference(value = "value-codes")
@JsonIgnore
@JoinColumn(name = "codelist_id_fk")
var codelist: Codelist? = null

}
Expand Down
3 changes: 2 additions & 1 deletion src/main/kotlin/org/kravbank/domain/Codelist.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@ import javax.persistence.*
@Entity
class Codelist : PanacheEntity() {

@Column(columnDefinition="TEXT")
lateinit var title: String

@Column(columnDefinition="TEXT")
lateinit var description: String

@Column(unique = true)
Expand All @@ -31,6 +33,5 @@ class Codelist : PanacheEntity() {
)
@JsonManagedReference(value = "val-codelist")
@JsonIgnore
@JoinColumn(name = "project_id_fk")
var project: Project? = null
}
3 changes: 2 additions & 1 deletion src/main/kotlin/org/kravbank/domain/Need.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@ import javax.persistence.*
@Entity
class Need : PanacheEntity() {

@Column(columnDefinition="TEXT")
lateinit var title: String

@Column(columnDefinition="TEXT")
lateinit var description: String

@Column(unique = true)
Expand All @@ -23,7 +25,6 @@ class Need : PanacheEntity() {
)
@JsonManagedReference(value = "val-need-project")
@JsonIgnore
@JoinColumn(name = "project_id_fk")
var project: Project? = null

@OneToMany(
Expand Down
4 changes: 2 additions & 2 deletions src/main/kotlin/org/kravbank/domain/Product.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,10 @@ import javax.persistence.*
@Where(clause = "deletedDate is null")
class Product : SoftDeletable() {

@Column(columnDefinition="TEXT")
lateinit var title: String

@Column(columnDefinition="TEXT")
lateinit var description: String

override var deletedDate: LocalDateTime? = null
Expand All @@ -26,7 +28,6 @@ class Product : SoftDeletable() {
)
@JsonManagedReference(value = "product")
@JsonIgnore
@JoinColumn(name = "project_id_fk")
var project: Project? = null

@ManyToOne(
Expand All @@ -35,6 +36,5 @@ class Product : SoftDeletable() {
)
@JsonManagedReference(value = "val-reqvariant-product")
@JsonIgnore
@JoinColumn(name = "requirementvariant_id_fk")
var requirementvariant: RequirementVariant? = null
}
5 changes: 1 addition & 4 deletions src/main/kotlin/org/kravbank/domain/Project.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,7 @@ class Project : SoftDeletable() {

lateinit var description: String

@Column(
unique = true,
name = "ref"
)
@Column(unique = true)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unikhet skal være innenfor prosjekt, ikke på tvers av prosjekter.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Men det her er vel ref-en til selve prosjektet. Om den ikke er unik på toppnivå så vil vi ikke kunne hente prosjekter basert på ref?

var ref: String = UUID.randomUUID().toString()

override var deletedDate: LocalDateTime? = null
Expand Down
2 changes: 1 addition & 1 deletion src/main/kotlin/org/kravbank/domain/Publication.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import javax.persistence.*
@Where(clause = "deletedDate is null")
class Publication : SoftDeletable() {

@Column(columnDefinition="TEXT")
lateinit var comment: String

var date: LocalDateTime = LocalDateTime.now()
Expand All @@ -28,7 +29,6 @@ class Publication : SoftDeletable() {
)
@JsonManagedReference(value = "val-publication")
@JsonIgnore
@JoinColumn(name = "project_id_fk")
var project: Project? = null

}
4 changes: 2 additions & 2 deletions src/main/kotlin/org/kravbank/domain/Requirement.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@ import javax.persistence.*
@Entity
class Requirement : PanacheEntity() {

@Column(columnDefinition="TEXT")
var title: String = ""

@Column(columnDefinition="TEXT")
var description: String = ""

@OneToMany(
Expand All @@ -31,7 +33,6 @@ class Requirement : PanacheEntity() {
)
@JsonManagedReference(value = "val-requirement")
@JsonIgnore
@JoinColumn(name = "project_id_fk")
var project: Project? = null

@ManyToOne(
Expand All @@ -40,6 +41,5 @@ class Requirement : PanacheEntity() {
)
@JsonManagedReference(value = "val-need-requirement")
@JsonIgnore
@JoinColumn(name = "need_id_fk")
var need: Need? = null
}
1 change: 0 additions & 1 deletion src/main/kotlin/org/kravbank/domain/RequirementVariant.kt
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ class RequirementVariant : PanacheEntity() {
)
@JsonManagedReference(value = "val-requirementVariant")
@JsonIgnore
@JoinColumn(name = "requirement_id_fk")
var requirement: Requirement? = null

@OneToMany(
Expand Down
207 changes: 207 additions & 0 deletions src/main/kotlin/org/kravbank/domain/frontend/FrontendTypes.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,207 @@
package org.kravbank.domain.frontend

import com.fasterxml.jackson.annotation.JsonProperty

typealias Banks = List<Bank>

data class Bank(
val id: String,
val title: String,
val description: String,
val needs: List<Need>,
val codelist: List<Codelist>,
val products: List<Product>,
val publications: List<Publication>,
val tags: List<Tag>,
val version: Long,
val publishedDate: String?,
val type: String,
val inheritedBanks: List<Any?>,
val sourceOriginal: Any?,
val sourceRel: Any?,
val projectId: String?,
val deletedDate: Any?,
)

data class Need(
val id: String,
val title: String,
val description: String,
val requirements: List<Requirement>,
val type: String,
val parent: String,
val sourceOriginal: String?,
val sourceRel: Any?,
)

data class Requirement(
val id: String,
val title: String,
val description: String,
val needId: String,
val type: String,
val variants: List<Variant>,
val tags: List<Any?>?,
val sourceOriginal: String?,
val sourceRel: Any?,
val weight: Long?,
@JsonProperty("requirement_Type")
val requirementType: String?,
)

data class Variant(
val id: String,
val requirementText: String,
val instruction: String,
val useProduct: Boolean,
// Input data has misspelled field name
@JsonProperty("useSpesification")
val useSpecification: Boolean,
val useQualification: Boolean,
val products: List<String>,
val questions: List<Question>,
val type: String?,
val description: String?,
)

data class Question(
val id: String,
val type: String,
val config: Config?,
val answer: Answer?,
val sourceRel: Any?,
val sourceOriginal: Any?,
)

data class Config(
val min: Long?,
val max: Long?,
val step: Double?,
val unit: String?,
val defaultPoint: Long?,
val scoreValues: List<ScoreValue>?,
val fromBoundary: Any?,
val toBoundary: Any?,
val isPeriod: Boolean?,
val periodMin: Long?,
val periodMax: Long?,
val dateScores: List<DateScore>?,
val periodMinutes: Long?,
val periodHours: Long?,
val timeScores: List<TimeScore>?,
val pointsUnconfirmed: Long?,
// Input data has misspelled field name
@JsonProperty("pointsNonPrefered")
val pointsNonPreferred: Long?,
@JsonProperty("preferedAlternative")
val preferredAlternative: Boolean?,
@JsonProperty("discountNonPrefered")
val discountNonPreferred: Long?,
@JsonProperty("discountPrefered")
val discountPreferred: Long?,
val defaultDiscount: Long?,
val mandatoryCodes: List<Any?>?,
val optionalCodes: List<Any?>?,
val codelist: String?,
val codes: List<Any?>?,
val optionalCodeMinAmount: Long?,
val optionalCodeMaxAmount: Long?,
val template: Any?,
val uploadInSpec: Boolean?,
val allowMultipleFiles: Boolean?,
val fileEndings: List<Any?>?,
val specMin: Long?,
val specMax: Long?,
val fromDate: String?,
val toDate: String?,
val multipleSelect: Boolean?,
val fromTime: String?,
val toTime: String?,
val discountValues: List<Any?>?,
val duration: Long?,
val weekdays: List<Any?>?,
val discount: Long?,
)

data class ScoreValue(
val score: Long,
val value: Long,
)

data class DateScore(
val date: Any?,
val score: Long,
)

data class TimeScore(
val time: Any?,
val score: Long,
)

data class Answer(
val point: Long?,
val value: Any?,
val fromDate: Any?,
val toDate: Any?,
val fromTime: Any?,
val toTime: Any?,
val discount: Long?,
val text: String?,
val codes: List<Any?>?,
val files: List<String>?,
)

data class Codelist(
val id: String,
val title: String,
val description: String,
val codes: List<Code>,
val type: String,
val sourceOriginal: String?,
val sourceRel: Any?,
)

data class Code(
val id: String,
val title: String,
val description: String,
val type: String,
val sourceOriginal: String?,
val sourceRel: Any?,
val parent: String?,
)

data class Product(
val id: String,
val title: String,
val description: String,
val type: String,
val parent: String,
val sourceOriginal: String?,
val sourceRel: Any?,
val deletedDate: String?,
val unit: String?,
val requirements: List<Requirement>?,
)

data class Publication(
val id: String,
val bankId: String,
val comment: String,
val date: String,
val type: String,
val version: Long,
val sourceOriginal: Any?,
val sourceRel: Any?,
val deletedDate: String?,
)

data class Tag(
val id: String,
val title: String,
val description: String?,
val type: String,
val parent: String,
val sourceOriginal: String,
val sourceRel: Any?,
)
4 changes: 2 additions & 2 deletions src/main/kotlin/org/kravbank/repository/CodeRepository.kt
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,15 @@ class CodeRepository : BackendRepository<Code>() {
fun findByRef(codelistId: Long, ref: String): Code {
val code =
find(
"ref = ?1 and codelist_id_fk = ?2",
"ref = ?1 and codelist.id = ?2",
ref,
codelistId
).firstResult<Code>()
return Optional.ofNullable(code).orElseThrow { NotFoundException(CODE_NOTFOUND) }
}

fun listAllCodes(id: Long): List<Code> {
return find("codelist_id_fk", id).stream<Code>().toList()
return find("codelist.id", id).stream<Code>().toList()
}

@Throws(BackendException::class)
Expand Down
Loading