From 91134f1e6cfe203cc97aba18407640d58674829b Mon Sep 17 00:00:00 2001 From: Alexander Myltsev Date: Wed, 9 Nov 2016 14:42:26 +0300 Subject: [PATCH] #90: rename `kind` to `matchType` --- .../resolver/api/NamestringsProtocols.scala | 24 ++++++++--------- .../returns_records_for_known_names.conf | 2 +- .../name_strings/modifiers/ns/request.conf | 2 +- .../test_data/name_strings/paging/page1.conf | 10 +++---- .../test_data/name_strings/paging/page2.conf | 8 +++--- .../returns_a_record_if_found.conf | 26 +++++++++---------- .../vernaculars/returns_vernaculars.conf | 4 +-- .../globalnames/resolver/Materializer.scala | 6 ++--- .../org/globalnames/resolver/Resolver.scala | 9 ++++--- .../org/globalnames/resolver/model.scala | 14 +++++----- .../resolver/ResolverIntegrationSpec.scala | 8 +++--- 11 files changed, 57 insertions(+), 56 deletions(-) diff --git a/api/src/main/scala/org/globalnames/resolver/api/NamestringsProtocols.scala b/api/src/main/scala/org/globalnames/resolver/api/NamestringsProtocols.scala index be664c7..aefc0c2 100644 --- a/api/src/main/scala/org/globalnames/resolver/api/NamestringsProtocols.scala +++ b/api/src/main/scala/org/globalnames/resolver/api/NamestringsProtocols.scala @@ -6,7 +6,7 @@ import java.util.UUID import akka.http.scaladsl.unmarshalling.Unmarshaller import Resolver.NameRequest -import model.{DataSource, Kind, Matches, NameStringIndex, LocalId} +import model.{DataSource, MatchType, Matches, NameStringIndex, LocalId} import spray.json.{DefaultJsonProtocol, _} trait NamestringsProtocols extends DefaultJsonProtocol with NullOptions { @@ -35,7 +35,7 @@ trait NamestringsProtocols extends DefaultJsonProtocol with NullOptions { classificationPath: Option[String], classificationPathIds: Option[String], classificationPathRanks: Option[String], vernaculars: Seq[VernacularResponse], - kind: Kind) + matchType: MatchType) def result(matches: Matches, page: Int, perPage: Int): Response = { val items = matches.matches.map { m => @@ -53,7 +53,7 @@ trait NamestringsProtocols extends DefaultJsonProtocol with NullOptions { m.nameStringIndex.classificationPath, m.nameStringIndex.classificationPathIds, m.nameStringIndex.classificationPathRanks, vernaculars, - m.kind) + m.matchType) } Response(page, perPage, matches.total, matches.localId, matches.suppliedNameString, items) } @@ -69,18 +69,18 @@ trait NamestringsProtocols extends DefaultJsonProtocol with NullOptions { case x => deserializationError("Expected UUID as JsString, but got " + x) } } - implicit def kindFormat: JsonFormat[Kind] = new JsonFormat[Kind] { - def write(x: Kind): JsString = JsString(x.toString) + implicit def matchTypeFormat: JsonFormat[MatchType] = new JsonFormat[MatchType] { + def write(x: MatchType): JsString = JsString(x.toString) - def read(value: JsValue): Kind = value match { + def read(value: JsValue): MatchType = value match { case JsString(js) => js match { - case "None" => Kind.None - case "Fuzzy" => Kind.Fuzzy - case "ExactNameMatchByUUID" => Kind.ExactNameMatchByUUID - case "ExactCanonicalNameMatchByUUID" => Kind.ExactCanonicalNameMatchByUUID - case x => deserializationError("Expected Kind as JsString, but got " + x) + case "None" => MatchType.None + case "Fuzzy" => MatchType.Fuzzy + case "ExactNameMatchByUUID" => MatchType.ExactNameMatchByUUID + case "ExactCanonicalNameMatchByUUID" => MatchType.ExactCanonicalNameMatchByUUID + case x => deserializationError("Expected MatchType as JsString, but got " + x) } - case x => deserializationError("Expected Kind as JsString, but got " + x) + case x => deserializationError("Expected MatchType as JsString, but got " + x) } } implicit val nameStringIndexFormat = jsonFormat12(NameStringIndex.apply) diff --git a/api/src/test/resources/test_data/name_resolvers/access_by_names_parameter/returns_records_for_known_names.conf b/api/src/test/resources/test_data/name_resolvers/access_by_names_parameter/returns_records_for_known_names.conf index 7b3d2c0..9dfdd6a 100644 --- a/api/src/test/resources/test_data/name_resolvers/access_by_names_parameter/returns_records_for_known_names.conf +++ b/api/src/test/resources/test_data/name_resolvers/access_by_names_parameter/returns_records_for_known_names.conf @@ -40,7 +40,7 @@ response { "vernaculars": [ ], - "kind": "ExactNameMatchByUUID", + "matchType": "ExactNameMatchByUUID", "dataSourceTitle": "Index to Organism Names", "canonicalNameUuid": "b701ec9e-efb0-5d5b-bf03-b920c00d0a77" } diff --git a/api/src/test/resources/test_data/name_strings/modifiers/ns/request.conf b/api/src/test/resources/test_data/name_strings/modifiers/ns/request.conf index 98bf4c6..5d7abf9 100644 --- a/api/src/test/resources/test_data/name_strings/modifiers/ns/request.conf +++ b/api/src/test/resources/test_data/name_strings/modifiers/ns/request.conf @@ -30,7 +30,7 @@ response { "surrogate": null, "taxonId": "7232908", "canonicalName": null, - "kind": "None", + "matchType": "None", "dataSourceTitle": "GBIF Backbone Taxonomy", "canonicalNameUuid": null } diff --git a/api/src/test/resources/test_data/name_strings/paging/page1.conf b/api/src/test/resources/test_data/name_strings/paging/page1.conf index d0b6422..4363428 100644 --- a/api/src/test/resources/test_data/name_strings/paging/page1.conf +++ b/api/src/test/resources/test_data/name_strings/paging/page1.conf @@ -32,7 +32,7 @@ response { "vernaculars": [ ], - "kind": "None", + "matchType": "None", "dataSourceTitle": "Catalogue of Life", "canonicalNameUuid": "ee4558c2-dcf9-5831-a53f-4c3ac03d364f" }, @@ -50,7 +50,7 @@ response { "vernaculars": [ ], - "kind": "None", + "matchType": "None", "dataSourceTitle": "ITIS", "canonicalNameUuid": "ee4558c2-dcf9-5831-a53f-4c3ac03d364f" }, @@ -68,7 +68,7 @@ response { "vernaculars": [ ], - "kind": "None", + "matchType": "None", "dataSourceTitle": "Interim Register of Marine and Nonmarine Genera", "canonicalNameUuid": "ee4558c2-dcf9-5831-a53f-4c3ac03d364f" }, @@ -86,7 +86,7 @@ response { "vernaculars": [ ], - "kind": "None", + "matchType": "None", "dataSourceTitle": "WoRMS", "canonicalNameUuid": "ee4558c2-dcf9-5831-a53f-4c3ac03d364f" }, @@ -104,7 +104,7 @@ response { "vernaculars": [ ], - "kind": "None", + "matchType": "None", "dataSourceTitle": "GBIF Backbone Taxonomy", "canonicalNameUuid": "ee4558c2-dcf9-5831-a53f-4c3ac03d364f" } diff --git a/api/src/test/resources/test_data/name_strings/paging/page2.conf b/api/src/test/resources/test_data/name_strings/paging/page2.conf index 9f63a0b..91d459b 100644 --- a/api/src/test/resources/test_data/name_strings/paging/page2.conf +++ b/api/src/test/resources/test_data/name_strings/paging/page2.conf @@ -33,7 +33,7 @@ response { "surrogate": false, "taxonId": "33255784", "canonicalName": "Pododesmus rudis", - "kind": "None", + "matchType": "None", "dataSourceTitle": "EOL", "canonicalNameUuid": "ee4558c2-dcf9-5831-a53f-4c3ac03d364f" }, @@ -51,7 +51,7 @@ response { "surrogate": false, "taxonId": "36507198", "canonicalName": "Pododesmus rudis", - "kind": "None", + "matchType": "None", "dataSourceTitle": "EOL", "canonicalNameUuid": "ee4558c2-dcf9-5831-a53f-4c3ac03d364f" }, @@ -69,7 +69,7 @@ response { "surrogate": false, "taxonId": "131877663", "canonicalName": "Pododesmus rudis", - "kind": "None", + "matchType": "None", "dataSourceTitle": "nlbif", "canonicalNameUuid": "ee4558c2-dcf9-5831-a53f-4c3ac03d364f" }, @@ -87,7 +87,7 @@ response { "surrogate": false, "taxonId": "94118348", "canonicalName": "Pododesmus rudis", - "kind": "None", + "matchType": "None", "dataSourceTitle": "uBio NameBank", "canonicalNameUuid": "ee4558c2-dcf9-5831-a53f-4c3ac03d364f" } diff --git a/api/src/test/resources/test_data/name_strings/returns_a_record_if_found.conf b/api/src/test/resources/test_data/name_strings/returns_a_record_if_found.conf index eb3c5d6..984650c 100644 --- a/api/src/test/resources/test_data/name_strings/returns_a_record_if_found.conf +++ b/api/src/test/resources/test_data/name_strings/returns_a_record_if_found.conf @@ -30,7 +30,7 @@ response { "vernacular": [ ], - "kind": "None", + "matchType": "None", "dataSourceTitle": "uBio NameBank", "canonicalNameUuid": "16f235a0-e4a3-529c-9b83-bd15fe722110" }, @@ -48,7 +48,7 @@ response { "vernacular": [ ], - "kind": "None", + "matchType": "None", "dataSourceTitle": "nlbif", "canonicalNameUuid": "16f235a0-e4a3-529c-9b83-bd15fe722110" }, @@ -66,7 +66,7 @@ response { "vernacular": [ ], - "kind": "None", + "matchType": "None", "dataSourceTitle": "BioLib.cz", "canonicalNameUuid": "16f235a0-e4a3-529c-9b83-bd15fe722110" }, @@ -84,7 +84,7 @@ response { "vernacular": [ "Human" ], - "kind": "None", + "matchType": "None", "dataSourceTitle": "IUCN Red List of Threatened Species", "canonicalNameUuid": "16f235a0-e4a3-529c-9b83-bd15fe722110" }, @@ -102,7 +102,7 @@ response { "vernacular": [ "智人" ], - "kind": "None", + "matchType": "None", "dataSourceTitle": "The National Checklist of Taiwan", "canonicalNameUuid": "16f235a0-e4a3-529c-9b83-bd15fe722110" }, @@ -120,7 +120,7 @@ response { "vernacular": [ "man" ], - "kind": "None", + "matchType": "None", "dataSourceTitle": "EOL", "canonicalNameUuid": "16f235a0-e4a3-529c-9b83-bd15fe722110" }, @@ -138,7 +138,7 @@ response { "vernacular": [ "human" ], - "kind": "None", + "matchType": "None", "dataSourceTitle": "EOL", "canonicalNameUuid": "16f235a0-e4a3-529c-9b83-bd15fe722110" }, @@ -156,7 +156,7 @@ response { "vernacular": [ ], - "kind": "None", + "matchType": "None", "dataSourceTitle": "EOL", "canonicalNameUuid": "16f235a0-e4a3-529c-9b83-bd15fe722110" }, @@ -340,7 +340,7 @@ response { "Muntu", "Адæймаг" ], - "kind": "None", + "matchType": "None", "dataSourceTitle": "GBIF Backbone Taxonomy", "canonicalNameUuid": "16f235a0-e4a3-529c-9b83-bd15fe722110" }, @@ -358,7 +358,7 @@ response { "vernacular": [ ], - "kind": "None", + "matchType": "None", "dataSourceTitle": "Interim Register of Marine and Nonmarine Genera", "canonicalNameUuid": "16f235a0-e4a3-529c-9b83-bd15fe722110" }, @@ -376,7 +376,7 @@ response { "vernacular": [ ], - "kind": "None", + "matchType": "None", "dataSourceTitle": "Union 4", "canonicalNameUuid": "16f235a0-e4a3-529c-9b83-bd15fe722110" }, @@ -394,7 +394,7 @@ response { "vernacular": [ "human" ], - "kind": "None", + "matchType": "None", "dataSourceTitle": "ITIS", "canonicalNameUuid": "16f235a0-e4a3-529c-9b83-bd15fe722110" }, @@ -412,7 +412,7 @@ response { "vernacular": [ ], - "kind": "None", + "matchType": "None", "dataSourceTitle": "Catalogue of Life", "canonicalNameUuid": "16f235a0-e4a3-529c-9b83-bd15fe722110" } diff --git a/api/src/test/resources/test_data/name_strings/vernaculars/returns_vernaculars.conf b/api/src/test/resources/test_data/name_strings/vernaculars/returns_vernaculars.conf index fc6915a..1c9e4ab 100644 --- a/api/src/test/resources/test_data/name_strings/vernaculars/returns_vernaculars.conf +++ b/api/src/test/resources/test_data/name_strings/vernaculars/returns_vernaculars.conf @@ -34,7 +34,7 @@ response { "surrogate": false, "taxonId": "12965815", "canonicalName": "Pododesmus rudis", - "kind": "None", + "matchType": "None", "dataSourceTitle": "Catalogue of Life", "canonicalNameUuid": "ee4558c2-dcf9-5831-a53f-4c3ac03d364f" }, @@ -62,7 +62,7 @@ response { "surrogate": false, "taxonId": "79794", "canonicalName": "Pododesmus rudis", - "kind": "None", + "matchType": "None", "dataSourceTitle": "ITIS", "canonicalNameUuid": "ee4558c2-dcf9-5831-a53f-4c3ac03d364f" } diff --git a/resolver/src/main/scala/org/globalnames/resolver/Materializer.scala b/resolver/src/main/scala/org/globalnames/resolver/Materializer.scala index 4c10223..5c717ad 100644 --- a/resolver/src/main/scala/org/globalnames/resolver/Materializer.scala +++ b/resolver/src/main/scala/org/globalnames/resolver/Materializer.scala @@ -68,7 +68,7 @@ trait Materializer { } yield { Matches(count, portion.zip(vernaculars).map { case ((ns, nsi, ds), vs) => - Match(ns, ds, nsi, vs, parameters.kind) + Match(ns, ds, nsi, vs, parameters.matchType) }, suppliedNameString = parameters.query) } @@ -89,7 +89,7 @@ trait Materializer { val l = vernacularsGet(portion, parameters).map { vss => Matches(count, portion.zip(vss).map { case ((ns, nsi, ds), vs) => - Match(ns, ds, nsi, vs, parameters.kind) + Match(ns, ds, nsi, vs, parameters.matchType) }, localId = parameters.localId, suppliedNameString = parameters.query) @@ -106,7 +106,7 @@ object Materializer { case class Parameters(page: Int, perPage: Int, withSurrogates: Boolean, withVernaculars: Boolean, query: String = "", - localId: Option[LocalId] = None, kind: Kind = Kind.None) { + localId: Option[LocalId] = None, matchType: MatchType = MatchType.None) { val take: Int = perPage.min(1000).max(0) val drop: Int = (page * perPage).max(0) } diff --git a/resolver/src/main/scala/org/globalnames/resolver/Resolver.scala b/resolver/src/main/scala/org/globalnames/resolver/Resolver.scala index 4124e25..31b0da4 100644 --- a/resolver/src/main/scala/org/globalnames/resolver/Resolver.scala +++ b/resolver/src/main/scala/org/globalnames/resolver/Resolver.scala @@ -68,7 +68,7 @@ class Resolver(val db: Database, matcher: Matcher) extends Materializer { ns.canonicalUuid.inSetBind(candUuids) } val params = parameters.copy(query = verbatim, perPage = fuzzyNameStringsMaxCount, - kind = Kind.Fuzzy) + matchType = MatchType.Fuzzy) (ns, params) }) @@ -144,9 +144,10 @@ class Resolver(val db: Database, matcher: Matcher) extends Materializer { .filter { m => dataSourceIds.isEmpty || dataSourceIds.contains(m.nameStringIndex.dataSourceId) }.map { m => - val k: Kind = if (m.nameString.name.id == sn.input.id) Kind.ExactNameMatchByUUID - else Kind.ExactCanonicalNameMatchByUUID - m.copy(kind = k) + val mt: MatchType = + if (m.nameString.name.id == sn.input.id) MatchType.ExactNameMatchByUUID + else MatchType.ExactCanonicalNameMatchByUUID + m.copy(matchType = mt) } mtch.copy(matches = ms, localId = localId) } diff --git a/resolver/src/main/scala/org/globalnames/resolver/model.scala b/resolver/src/main/scala/org/globalnames/resolver/model.scala index e3a0e98..9569d6f 100644 --- a/resolver/src/main/scala/org/globalnames/resolver/model.scala +++ b/resolver/src/main/scala/org/globalnames/resolver/model.scala @@ -3,19 +3,19 @@ package resolver package object model { - sealed trait Kind - object Kind { - case object None extends Kind - case object ExactNameMatchByUUID extends Kind - case object ExactCanonicalNameMatchByUUID extends Kind - case object Fuzzy extends Kind + sealed trait MatchType + object MatchType { + case object None extends MatchType + case object ExactNameMatchByUUID extends MatchType + case object ExactCanonicalNameMatchByUUID extends MatchType + case object Fuzzy extends MatchType } type LocalId = Int case class Match(nameString: NameString, dataSource: DataSource, nameStringIndex: NameStringIndex, vernacularStrings: Seq[(VernacularString, VernacularStringIndex)], - kind: Kind = Kind.None) + matchType: MatchType = MatchType.None) case class Matches(total: Long, matches: Seq[Match], suppliedNameString: String = "", localId: Option[LocalId] = None) diff --git a/resolver/src/test/scala/org/globalnames/resolver/ResolverIntegrationSpec.scala b/resolver/src/test/scala/org/globalnames/resolver/ResolverIntegrationSpec.scala index a3501b3..33fd46f 100644 --- a/resolver/src/test/scala/org/globalnames/resolver/ResolverIntegrationSpec.scala +++ b/resolver/src/test/scala/org/globalnames/resolver/ResolverIntegrationSpec.scala @@ -3,7 +3,7 @@ package resolver import java.util.UUID -import model.{Kind, NameStrings} +import model.{MatchType, NameStrings} import slick.driver.PostgresDriver.api._ import scala.concurrent.Await @@ -43,7 +43,7 @@ class ResolverIntegrationSpec extends SpecConfig { res should have size 1 res.head.matches.head.nameString.name.id shouldBe UUID.fromString("405b2394-d89f-52df-a5bd-efd195f3b33f") - res.head.matches.head.kind shouldBe Kind.ExactNameMatchByUUID + res.head.matches.head.matchType shouldBe MatchType.ExactNameMatchByUUID } } @@ -52,7 +52,7 @@ class ResolverIntegrationSpec extends SpecConfig { res should have size 1 res.head.matches.head.nameString.canonicalName.value.id shouldBe UUID.fromString("9669d573-ff19-59fa-87c3-258a9058d6d2") - res.head.matches.head.kind shouldBe Kind.ExactCanonicalNameMatchByUUID + res.head.matches.head.matchType shouldBe MatchType.ExactCanonicalNameMatchByUUID } } @@ -60,7 +60,7 @@ class ResolverIntegrationSpec extends SpecConfig { whenReady(resolver.resolveStrings(Seq("Pteroplatus arrogaxx"), parameters)) { res => res should have size 1 res.head.matches.head.nameString.canonicalName.value.value shouldBe "Pteroplatus arrogans" - res.head.matches.head.kind shouldBe Kind.Fuzzy + res.head.matches.head.matchType shouldBe MatchType.Fuzzy } }