Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add value objects to list routes - old and new (DEV-65) #1917

Merged
merged 35 commits into from Oct 29, 2021
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
8d5741d
refactor: fix filename
mpro7 Oct 7, 2021
cd2aef5
feat: add create list payload & value objects
mpro7 Oct 8, 2021
9d7e32b
feat: add update list payload & value objects + update routes & respo…
mpro7 Oct 13, 2021
faf93a9
test: update test data
mpro7 Oct 13, 2021
c909a8e
many things happened, mainly add ChangeNodeInfoPayloadADM
mpro7 Oct 14, 2021
b95f566
update NodeCreatePayloadADM class
mpro7 Oct 14, 2021
aa2672a
refactor list payloads
mpro7 Oct 14, 2021
18e2d92
WIP - fix tests
mpro7 Oct 14, 2021
1f6b136
fix tests
mpro7 Oct 14, 2021
327bb8a
separate root and child nodes creation
mpro7 Oct 15, 2021
812683f
WIP: fix tests
mpro7 Oct 18, 2021
d2745d1
bring back ListChildNodeInfoADM non-optional comments
mpro7 Oct 20, 2021
e1c3c66
fix tests
mpro7 Oct 20, 2021
0d0cbde
update tests
mpro7 Oct 20, 2021
e8645cc
Merge branch 'main' into wip/DEV-65
mpro7 Oct 20, 2021
2eab17f
refactor list value objects + add tests
mpro7 Oct 20, 2021
e32fe49
remove redundant fields from RootNodeCreatePayloadADM
mpro7 Oct 22, 2021
51347b7
refactor list naming + remove redundand request type
mpro7 Oct 22, 2021
3579003
fix test
mpro7 Oct 22, 2021
47a7513
add ProjectIRI value object
mpro7 Oct 22, 2021
3aad90a
add CustomID value object
mpro7 Oct 22, 2021
983f396
add ListIRI value object
mpro7 Oct 22, 2021
c8abba6
add RootNodeIRI value object
mpro7 Oct 22, 2021
40a0938
fix tests
mpro7 Oct 25, 2021
2b5b607
update value objects + add unit tests
mpro7 Oct 26, 2021
f46eed2
update value objects
mpro7 Oct 27, 2021
a1a66de
remove RootNodeIRI value object
mpro7 Oct 27, 2021
2f12998
add more checks to value objects + update tests
mpro7 Oct 27, 2021
833a6d9
remove redundand tests
mpro7 Oct 27, 2021
9f9bc9c
fix optional comments creating child node
mpro7 Oct 27, 2021
5f30f4a
Merge branch 'main' into wip/DEV-65
mpro7 Oct 28, 2021
7aaffcf
clenup
mpro7 Oct 28, 2021
6df00c4
Merge branch 'main' into wip/DEV-65
mpro7 Oct 29, 2021
c1ea8f1
review fixes
mpro7 Oct 29, 2021
34c555c
minor improvements
mpro7 Oct 29, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -5,7 +5,7 @@

package org.knora.webapi.messages.admin.responder.listsmessages

object ListsMessagesUtilADM {
object ListsErrorMessagesADM {
val LIST_IRI_MISSING_ERROR = "List IRI cannot be empty."
val LIST_IRI_INVALID_ERROR = "List IRI cannot be empty."
val LIST_NODE_IRI_MISSING_ERROR = "List node IRI cannot be empty."
Expand Down
Expand Up @@ -11,7 +11,7 @@ import org.knora.webapi._
import org.knora.webapi.exceptions.BadRequestException
import org.knora.webapi.feature.FeatureFactoryConfig
import org.knora.webapi.messages.StringFormatter
import org.knora.webapi.messages.admin.responder.listsmessages.ListsMessagesUtilADM._
import org.knora.webapi.messages.admin.responder.listsmessages.ListsErrorMessagesADM._
import org.knora.webapi.messages.admin.responder.listsmessages.NodeCreatePayloadADM.ChildNodeCreatePayloadADM
import org.knora.webapi.messages.admin.responder.usersmessages._
import org.knora.webapi.messages.admin.responder.{KnoraRequestADM, KnoraResponseADM}
Expand Down Expand Up @@ -764,7 +764,21 @@ case class ListChildNodeADM(
position: Int,
hasRootNode: IRI,
children: Seq[ListChildNodeADM]
) extends ListNodeADM(id, name, labels, comments.get, children) {
) extends ListNodeADM(
id,
name,
labels,
comments = comments match {
Copy link
Collaborator

Choose a reason for hiding this comment

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

tip: you could use .getOrElse(StringLiteralSequenceV2(Vector.empty[StringLiteralV2])) instead of the match

case Some(value) => value
case None => StringLiteralSequenceV2(Vector.empty[StringLiteralV2])
},
children
) {

private val maybeComments = comments match {
case Some(value) => Some(value)
case None => None
}

/**
* Sorts the whole hierarchy.
Expand All @@ -776,7 +790,7 @@ case class ListChildNodeADM(
id = id,
name = name,
labels = labels.sortByStringValue,
comments = comments.map(_.sortByStringValue),
comments = maybeComments,
position = position,
hasRootNode = hasRootNode,
children = children.sortBy(_.position).map(_.sorted)
Expand All @@ -789,14 +803,17 @@ case class ListChildNodeADM(
val stringFormatter: StringFormatter = StringFormatter.getGeneralInstance

val unescapedLabels = stringFormatter.unescapeStringLiteralSeq(labels)
val unescapedComments = stringFormatter.unescapeStringLiteralSeq(comments.get)
val unescapedComments = comments match {
case Some(value) => Some(stringFormatter.unescapeStringLiteralSeq(value))
case None => None
}

val unescapedName: Option[String] = name match {
case None => None
case Some(value) => Some(stringFormatter.fromSparqlEncodedString(value))
case None => None
}

copy(name = unescapedName, labels = unescapedLabels, comments = Some(unescapedComments))
copy(name = unescapedName, labels = unescapedLabels, comments = unescapedComments)
}

/**
Expand All @@ -817,7 +834,10 @@ case class ListChildNodeADM(
* @return the comment in the preferred language.
*/
def getCommentInPreferredLanguage(userLang: String, fallbackLang: String): Option[String] =
comments.get.getPreferredLanguage(userLang, fallbackLang)
comments match {
case Some(value) => value.getPreferredLanguage(userLang, fallbackLang)
case None => None
}
}

/**
Expand Down Expand Up @@ -1015,11 +1035,16 @@ trait ListADMJsonProtocol extends SprayJsonSupport with DefaultJsonProtocol with
)

case child: ListChildNodeADM =>
val maybeComments: StringLiteralSequenceV2 = child.comments match {
case Some(value) => value
case None => StringLiteralSequenceV2(Vector.empty[StringLiteralV2])
}

JsObject(
"id" -> child.id.toJson,
"name" -> child.name.toJson,
"labels" -> JsArray(child.labels.stringLiterals.map(_.toJson)),
"comments" -> JsArray(child.comments.get.stringLiterals.map(_.toJson)),
"comments" -> JsArray(maybeComments.stringLiterals.map(_.toJson)),
"position" -> child.position.toJson,
"hasRootNode" -> child.hasRootNode.toJson,
"children" -> JsArray(child.children.map(write).toVector)
Expand Down
Expand Up @@ -2,7 +2,7 @@ package org.knora.webapi.messages.admin.responder.valueObjects

import org.knora.webapi.exceptions.BadRequestException
import org.knora.webapi.messages.StringFormatter
import org.knora.webapi.messages.admin.responder.listsmessages.ListsMessagesUtilADM.{
import org.knora.webapi.messages.admin.responder.listsmessages.ListsErrorMessagesADM.{
COMMENT_INVALID_ERROR,
COMMENT_MISSING_ERROR,
INVALID_POSITION,
Expand Down
Expand Up @@ -10,7 +10,7 @@ import org.knora.webapi.feature.FeatureFactoryConfig
import org.knora.webapi.messages.IriConversions._
import org.knora.webapi.messages.admin.responder.listsmessages._
import org.knora.webapi.messages.admin.responder.usersmessages.UserADM
import org.knora.webapi.messages.store.triplestoremessages.StringLiteralSequenceV2
import org.knora.webapi.messages.store.triplestoremessages.{StringLiteralSequenceV2, StringLiteralV2}
import org.knora.webapi.messages.util.rdf
import org.knora.webapi.messages.util.rdf._
import org.knora.webapi.messages.v2.responder.{KnoraJsonLDResponseV2, KnoraRequestV2}
Expand Down Expand Up @@ -89,8 +89,13 @@ case class ListGetResponseV2(list: ListADM, userLang: String, fallbackLang: Stri

val label: Map[IRI, JsonLDString] =
makeMapIriToJSONLDString(OntologyConstants.Rdfs.Label, node.labels, userLang, fallbackLang)
val comment: Map[IRI, JsonLDString] =
makeMapIriToJSONLDString(OntologyConstants.Rdfs.Comment, node.comments.get, userLang, fallbackLang)
val comment: Map[IRI, JsonLDString] = {
val maybeComment = node.comments match {
case Some(value) => value
case None => StringLiteralSequenceV2(Vector.empty[StringLiteralV2])
}
makeMapIriToJSONLDString(OntologyConstants.Rdfs.Comment, maybeComment, userLang, fallbackLang)
}

val position: Map[IRI, JsonLDInt] = Map(
OntologyConstants.KnoraBase.ListNodePosition.toSmartIri.toOntologySchema(ApiV2Complex).toString -> JsonLDInt(
Expand Down
Expand Up @@ -12,7 +12,7 @@ import org.knora.webapi._
import org.knora.webapi.exceptions._
import org.knora.webapi.feature.FeatureFactoryConfig
import org.knora.webapi.messages.IriConversions._
import org.knora.webapi.messages.admin.responder.listsmessages.ListsMessagesUtilADM._
import org.knora.webapi.messages.admin.responder.listsmessages.ListsErrorMessagesADM._
import org.knora.webapi.messages.admin.responder.listsmessages.NodeCreatePayloadADM.ChildNodeCreatePayloadADM
import org.knora.webapi.messages.admin.responder.listsmessages._
import org.knora.webapi.messages.admin.responder.projectsmessages.{ProjectADM, ProjectGetADM, ProjectIdentifierADM}
Expand Down
Expand Up @@ -14,7 +14,7 @@ import javax.ws.rs.Path
import org.knora.webapi.IRI
import org.knora.webapi.exceptions.{BadRequestException, ForbiddenException}
import org.knora.webapi.feature.{Feature, FeatureFactoryConfig}
import org.knora.webapi.messages.admin.responder.listsmessages.ListsMessagesUtilADM.LIST_CREATE_PERMISSION_ERROR
import org.knora.webapi.messages.admin.responder.listsmessages.ListsErrorMessagesADM.LIST_CREATE_PERMISSION_ERROR
import org.knora.webapi.messages.admin.responder.listsmessages.NodeCreatePayloadADM.{
ChildNodeCreatePayloadADM,
ListCreatePayloadADM
Expand Down
Expand Up @@ -14,7 +14,7 @@ import javax.ws.rs.Path
import org.knora.webapi.IRI
import org.knora.webapi.exceptions.{BadRequestException, ForbiddenException}
import org.knora.webapi.feature.{Feature, FeatureFactoryConfig}
import org.knora.webapi.messages.admin.responder.listsmessages.ListsMessagesUtilADM.{
import org.knora.webapi.messages.admin.responder.listsmessages.ListsErrorMessagesADM.{
LIST_CREATE_PERMISSION_ERROR,
LIST_NODE_CREATE_PERMISSION_ERROR
}
Expand Down
Expand Up @@ -9,7 +9,7 @@ import java.util.UUID
import com.typesafe.config.ConfigFactory
import org.knora.webapi.CoreSpec
import org.knora.webapi.exceptions.BadRequestException
import org.knora.webapi.messages.admin.responder.listsmessages.ListsMessagesUtilADM._
import org.knora.webapi.messages.admin.responder.listsmessages.ListsErrorMessagesADM._
import org.knora.webapi.messages.admin.responder.listsmessages.NodeCreatePayloadADM.ChildNodeCreatePayloadADM
import org.knora.webapi.messages.admin.responder.valueObjects.{Comments, Labels, ListIRI, ProjectIRI, Position}
import org.knora.webapi.messages.store.triplestoremessages.{StringLiteralSequenceV2, StringLiteralV2}
Expand Down
Expand Up @@ -20,7 +20,7 @@
package org.knora.webapi.messages.admin.responder.valueObjects

import org.knora.webapi.exceptions.BadRequestException
import org.knora.webapi.messages.admin.responder.listsmessages.ListsMessagesUtilADM.{
import org.knora.webapi.messages.admin.responder.listsmessages.ListsErrorMessagesADM.{
COMMENT_INVALID_ERROR,
COMMENT_MISSING_ERROR,
INVALID_POSITION,
Expand Down