ks-no / fiks-arkiv

4 stars 0 forks source link

Enums får "Period" der hvor det er en . i navnet på enumeration #91

Closed jarleborsheim closed 2 years ago

jarleborsheim commented 2 years ago

Dette gjelder f.eks. sok.xsd og "sokFelt":

<xs:simpleType name="sokFelt">
        <xs:restriction base="xs:string">
            <xs:enumeration value="mappe.eksternId"/>
            <xs:enumeration value="mappe.tittel"/>
            <xs:enumeration value="mappe.opprettetDato"/>
            <xs:enumeration value="mappe.beskrivelse"/>
...

Dette blir da eksempelvis generert til MappePeriodEksternId og MappePeriodTittel osv.

Vi har noen valg for å fikse det:

  1. Vi kan gå tilbake xsd.exe som tilsynelatende ikke gjør dette, men da miste en del fordeler ved å bruke XmlSchemaClassGenerator. En av fordelene er at det er et nuget bibliotek med massevis av konfigurasjonsmuligheter og har gjort det lettere for oss å generere ny kode som en del av build-pipeline.

  2. Vi endrer navnene til noe som er gyldig. F.eks. mappe_eksternId. Se eksempel på hvordan det blir generert med forskjellige separatorer:

    
    public enum SokFelt
    {
    
        [System.Xml.Serialization.XmlEnumAttribute("mappeEksternId")]
        MappeEksternId,
    
        [System.Xml.Serialization.XmlEnumAttribute("mappe_tittel")]
        Mappe_Tittel,
    
        [System.Xml.Serialization.XmlEnumAttribute("mappe-opprettetDato")]
        Mappe_OpprettetDato,
    
        [System.Xml.Serialization.XmlEnumAttribute("mappe.beskrivelse")]
        MappePeriodBeskrivelse,


Underscore ser ut til å bli best.

3. Vi legger til konfigurasjonsmulighet for navn-replace listen i XmlSchemaClassGenerator og ber om å få det inn i opensource prosjektet. Dette kan dessverre ta litt tid. 

Kildekode for generatoren hvor dette utspiller seg: 
https://github.com/mganss/XmlSchemaClassGenerator/blob/master/XmlSchemaClassGenerator/NamingProvider.cs
https://github.com/mganss/XmlSchemaClassGenerator/blob/dd2313e7f724516d3f44493e45429bf706dd1db8/XmlSchemaClassGenerator/NamingExtensions.cs

Jeg anbefaler at vi går for nr 2 og endrer verdier til å ha _ i stedet for punktum som separator.
sturtzel commented 2 years ago

Ordet period er ikke bra. Jeg holder en knapp på camel case. Må det være skilletegn går jeg for underscore.

jarleborsheim commented 2 years ago

Ja, jeg er enig med camel case hvis det ikke trengs å være noe skilletegn for å vise hvilken forelder det er for attributtet. Vi kan ta en kjapp diskusjon rundt dette på møtet i dag.

sturtzel commented 2 years ago

Jeg regner med at alle uansett må ha en mappingtabell mellom Fiks Arkiv og intern datamodell. Så da bør det gå greit med CamelCase.

jarleborsheim commented 2 years ago

Vi går for CamelCase. Altså vi tar bort . som separator.

jarleborsheim commented 2 years ago

Fikset i siste versjon av nuget pakken KS.Fiks.Arkiv.Models.V1. Stenger issue