ZGIS / smart-owc-geojson

Owc Context GeoJSON Encoding for Play
Apache License 2.0
1 stars 1 forks source link

tagging an undefined "rel" per default as "alternate" #7

Open allixender opened 7 years ago

allixender commented 7 years ago

There is a bug in the Owc GeoJson Scala Play JSON lib, that tags an undefined rel default as "alternate". Actually we don't need the rel attribute immediately in the JSON encoding, and we can use the uuid to store and easily distinguish which OwcLink goes into what List (contentByRef, ResourceMetadata and similar), but for e.g. for a subsequent parallel support of OGC OWC ATOM encoding we also need to keep the rels proper:

It needs to be added to the OwcContext and OwcResource JSON parsers, to send default "rel" depending for which JSON path they are parsing: some Pseudo code here:

case OwcContext => {
        val specReference = owcContext.specReference.map(o => changeRelForOwcLink(o, "profile")) // links.profiles[] and rel=profile
        val contextMetadata = owcContext.contextMetadata.map(o => changeRelForOwcLink(o, "via")) // aka links.via[] & rel=via
        owcContext.copy(specReference = specReference, contextMetadata = contextMetadata)
}
case OwcResource => {
        val contentDescription = owcResource.contentDescription.map(o => changeRelForOwcLink(o, "alternate")) // links.alternates[] and rel=alternate
        val preview = owcResource.preview.map(o => changeRelForOwcLink(o, "icon")) // aka links.previews[] and rel=icon (atom)
        val contentByRef = owcResource.contentByRef.map(o => changeRelForOwcLink(o, "enclosure")) // aka links.data[] and rel=enclosure (atom)
        val resourceMetadata = owcResource.resourceMetadata.map(o => changeRelForOwcLink(o, "via")) // aka links.via[] & rel=via
        owcResource.copy(contentDescription = contentDescription, preview = preview,
          contentByRef = contentByRef, resourceMetadata = resourceMetadata).asInstanceOf[OwcResource]
}