Skip to content

Commit

Permalink
feat: käytä velhon metadataa kuntiin, maakuntiin, elyihin ja liikenne…
Browse files Browse the repository at this point in the history
…vastuu-elyihin. Käytä ympäristökeskuksen tietoja vain ruotsinkielisiin käännöksiin.
  • Loading branch information
haapamakim committed Feb 17, 2023
1 parent 002a3b3 commit 3c78746
Show file tree
Hide file tree
Showing 13 changed files with 294 additions and 296 deletions.
4 changes: 2 additions & 2 deletions backend/src/ilmoitustauluSyote/ilmoitusKuulutus.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ export type IlmoitusKuulutus = {
maakunnat?: number[];
vaylamuoto?: string[];
date: string;
elyt?: number[];
lelyt?: number[];
elyt?: string[];
lelyt?: string[];
};
14 changes: 9 additions & 5 deletions backend/src/ilmoitustauluSyote/ilmoitustauluSyoteAdapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import { linkAloituskuulutus, linkHyvaksymisPaatos, linkSuunnitteluVaihe } from
import { parseDate } from "../util/dateUtil";
import { kuntametadata } from "../../../common/kuntametadata";
import { assertIsDefined } from "../util/assertions";
import { sortedUniq } from "lodash";

class IlmoitustauluSyoteAdapter {
adaptAloitusKuulutusJulkaisu(
Expand Down Expand Up @@ -128,11 +129,14 @@ class IlmoitustauluSyoteAdapter {
assertIsDefined(velho.kunnat);
assertIsDefined(velho.vaylamuoto);
const maakunnat = velho.maakunnat;
const elyt = maakunnat
?.map(kuntametadata.maakuntaForMaakuntaId)
.map((maakunta) => maakunta?.ely)
.filter((m) => !!m) as number[];
const lelyt = elyt?.map(kuntametadata.liikennevastuuElyIdFromElyId).filter((m) => !!m) as number[];
let elyt = velho.kunnat
?.map(kuntametadata.kuntaForKuntaId)
.map((kunta) => kunta?.ely)
.filter((m) => !!m) as string[];
if (elyt) {
elyt = sortedUniq(elyt);
}
const lelyt = velho.kunnat?.map(kuntametadata.liikennevastuuElyIdFromKuntaId).filter((m) => !!m) as string[];
return {
oid,
kunnat: velho.kunnat,
Expand Down
4 changes: 2 additions & 2 deletions backend/src/ilmoitustauluSyote/ilmoitustauluSyoteHandler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class IlmoitustauluSyoteHandler {
if (ely) {
if (elyId) {
terms.push({
term: { elyt: elyId },
term: { "elyt.keyword": elyId },
});
} else {
throw new NotFoundError("ELY " + ely + " on tuntematon");
Expand All @@ -33,7 +33,7 @@ class IlmoitustauluSyoteHandler {
if (lely) {
if (lelyId) {
terms.push({
term: { lelyt: lelyId },
term: { "lelyt.keyword": lelyId },
});
} else {
throw new NotFoundError("Liikenne-ELY " + lely + " on tuntematon");
Expand Down
15 changes: 13 additions & 2 deletions backend/src/velho/velhoAdapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ function getKunnat(data: ProjektiProjekti): number[] | undefined {
if (data.ominaisuudet.kunta) {
const kunnat: number[] = [];
data.ominaisuudet.kunta.forEach((kuntaVelhoKey) => {
const kuntaId = kuntametadata.parseNumberIdFromVelhoKey(kuntaVelhoKey as unknown as string);
const kuntaId = parseNumberIdFromVelhoKey(kuntaVelhoKey as unknown as string);
if (!kuntametadata.kuntaForKuntaId(kuntaId)) {
log.warn("Velhosta saatua kuntaa ei löydy: " + kuntaId);
} else {
Expand All @@ -178,7 +178,7 @@ function getMaakunnat(data: ProjektiProjekti) {
if (data.ominaisuudet.maakunta) {
const maakunnat: number[] = [];
data.ominaisuudet.maakunta.forEach((maakuntaVelhoKey) => {
const maakuntaId = kuntametadata.parseNumberIdFromVelhoKey(maakuntaVelhoKey as unknown as string);
const maakuntaId = parseNumberIdFromVelhoKey(maakuntaVelhoKey as unknown as string);
if (!kuntametadata.maakuntaForMaakuntaId(maakuntaId)) {
log.warn("Velhosta saatua maakuntaa ei löydy: " + maakuntaId);
} else {
Expand Down Expand Up @@ -363,3 +363,14 @@ function objectToString<T>(s: unknown): T | undefined {
// eslint-disable-next-line @typescript-eslint/ban-types
return s as unknown as T;
}

function parseNumberIdFromVelhoKey(key: string): number {
const match = key.match(/\w+\/[a-z]+(\d+)/);
if (match && match.length == 2) {
const val = Number.parseInt(match[1]);
if (!isNaN(val)) {
return val;
}
}
throw new Error("Could not parse number from key:" + key);
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@ Array [
Object {
"date": "2022-03-28T14:28:00+03:00",
"elyt": Array [
1001,
1019,
"ely/ely07",
],
"kieli": "SUOMI",
"kunnat": Array [
Expand All @@ -15,8 +14,9 @@ Array [
740,
],
"lelyt": Array [
1001,
1019,
"ely/ely08",
"ely/ely08",
"ely/ely08",
],
"maakunnat": Array [
1,
Expand All @@ -33,8 +33,7 @@ Array [
Object {
"date": "2022-03-28T14:28:00+03:00",
"elyt": Array [
1001,
1019,
"ely/ely07",
],
"kieli": "RUOTSI",
"kunnat": Array [
Expand All @@ -43,8 +42,9 @@ Array [
740,
],
"lelyt": Array [
1001,
1019,
"ely/ely08",
"ely/ely08",
"ely/ely08",
],
"maakunnat": Array [
1,
Expand All @@ -61,16 +61,14 @@ Array [
Object {
"date": "2022-06-20T11:54:00+03:00",
"elyt": Array [
1001,
1019,
"ely/ely01",
],
"kieli": "SUOMI",
"kunnat": Array [
245,
],
"lelyt": Array [
1001,
1019,
"ely/ely01",
],
"maakunnat": Array [
1,
Expand All @@ -87,16 +85,14 @@ Array [
Object {
"date": "2022-06-20T11:54:00+03:00",
"elyt": Array [
1001,
1019,
"ely/ely01",
],
"kieli": "RUOTSI",
"kunnat": Array [
245,
],
"lelyt": Array [
1001,
1019,
"ely/ely01",
],
"maakunnat": Array [
1,
Expand All @@ -113,15 +109,16 @@ Array [
Object {
"date": "2022-06-09T00:00:00+03:00",
"elyt": Array [
1001,
"ely/ely01",
],
"kieli": "SUOMI",
"kunnat": Array [
91,
92,
],
"lelyt": Array [
1001,
"ely/ely01",
"ely/ely01",
],
"maakunnat": Array [
1,
Expand All @@ -137,15 +134,16 @@ Array [
Object {
"date": "2022-06-09T00:00:00+03:00",
"elyt": Array [
1001,
"ely/ely01",
],
"kieli": "RUOTSI",
"kunnat": Array [
91,
92,
],
"lelyt": Array [
1001,
"ely/ely01",
"ely/ely01",
],
"maakunnat": Array [
1,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,7 @@ Array [
Object {
"date": "2022-03-28T14:28:00+03:00",
"elyt": Array [
1001,
1019,
"ely/ely07",
],
"kieli": "SUOMI",
"kunnat": Array [
Expand All @@ -113,8 +112,9 @@ Array [
740,
],
"lelyt": Array [
1001,
1019,
"ely/ely08",
"ely/ely08",
"ely/ely08",
],
"maakunnat": Array [
1,
Expand All @@ -134,8 +134,7 @@ Array [
Object {
"date": "2022-03-28T14:28:00+03:00",
"elyt": Array [
1001,
1019,
"ely/ely07",
],
"kieli": "RUOTSI",
"kunnat": Array [
Expand All @@ -144,8 +143,9 @@ Array [
740,
],
"lelyt": Array [
1001,
1019,
"ely/ely08",
"ely/ely08",
"ely/ely08",
],
"maakunnat": Array [
1,
Expand Down
17 changes: 11 additions & 6 deletions common/kuntametadata.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ describe("Metadata", () => {
const tampere = kuntametadata.kuntaForKuntaId(837);
expect(tampere).to.not.be.undefined;
expect(tampere).to.eql({
elyId: 5,
ely: "ely/ely05",
id: 837,
liikennevastuuElyId: 5,
maakuntaId: 6,
liikennevastuuEly: "ely/ely05",
maakunta: "maakunta/maakunta06",
nimi: {
SUOMI: "Tampere",
RUOTSI: "Tammerfors",
Expand All @@ -20,19 +20,24 @@ describe("Metadata", () => {

const pirkanmaa = kuntametadata.maakuntaForMaakuntaId(6);
expect(pirkanmaa).to.eql({
id: 6,
ely: 1019,
id: "maakunta/maakunta06",
koodi: "06",
nimi: {
RUOTSI: "Birkaland",
SUOMI: "Pirkanmaa",
},
});

expect(tampere!.maakuntaId).to.eq(pirkanmaa!.id);
expect(tampere!.maakunta).to.eq(pirkanmaa!.id);
});

it("should tolerate upper-, and lowercase variations", () => {
const joroinen = kuntametadata.idForKuntaName("JOROINEN");
expect(joroinen).to.eq(171);
});

it("should handle ely lyhenne to ely successfully", () => {
const uud = kuntametadata.elyIdFromKey("UUD");
expect(uud).to.eq("ely/ely01");
});
});
Loading

0 comments on commit 3c78746

Please sign in to comment.