Hi Daniele,
The way the builder works now that it is required that the counts of the
mappings match in order to know which URL to map to which protocol
inside each OnlineResource. If you want to programmatically add an extra
OnlineResource, you need to add an extra protocol mapping as well.
However, I am 99% sure you could just give one of the items a NULL
value, and then it would end up not creating a node for it. This could
be used for the non-required protocol element.
You could change the builder to let go of that condition, but then you
need a well-defined strategy. For example, you could fill the missing
values at the end of the list with NULL values and not create nodes for
them.
Kind Regards
Niels
On 24-09-15 15:55, Daniele Romagnoli wrote:
Hi again list,
I'm doing some investigations on the first option (update the mapping
before creating the feature) for this task.
As you know, we need to add new entries in records containing the
DownloadLinks.
That means, adding:
- additional references
<http://dublincore.org/documents/dcmi-terms/#terms-references> elements in
the DublinCore format
- additional OnlineReference
<http://www.isotc211.org/2005/gmd/citation.xsd> elements in ISOTC211
I say /additional/ since the default properties already contain these
static mappings:
*DC records.*
references.scheme='OGC:WMS'
references.value=strConcat('${url.wms}?service=WMS&request=GetMap&layers=',
prefixedName)
*ISOTC211 metadata.*
distributionInfo.MD_Distribution.transferOptions.MD_DigitalTransferOptions.onLine.CI_OnlineResource%*.linkage.**URL=list('${url.wfs}','${url.wms}')*
distributionInfo.MD_Distribution.transferOptions.MD_DigitalTransferOptions.onLine.CI_OnlineResource%*.protocol.CharacterString=**list('OGC:WFS','OGC:WMS')*
distributionInfo.MD_Distribution.transferOptions.MD_DigitalTransferOptions.onLine.CI_OnlineResource%.name.CharacterString=name
So, I need to add more references.value / linkage.URL entries to the
feature.
What I would like to do is adding elements to the RecordBuilder in the
CatalogStoreFeatureIterator.mapProperties before it creates the feature.
I have checked the underlying treeNodes structure and I'm having some
issues in understanding how should I add these new entries to the
builder for the existing mappings.
One Idea I have is checking the mappingKey and, in case it matches a
specific value (as "references.value" or whatelse), adds more values
to the elements array to be provided to the builder. (I would setup
some mappingCustomizer which does this: updating the elements array in
case the resource has the DirectDownload capability enabled).
However, it seems to me that the underlying TreeNode structure + path
splitting doesn't allow to add elements not having the same tree
structure. I mean: in case I add a OnlineResource.linkage.URL value,
the builder will complain since it notices that the current
OnlineResource tree has 2 leaves (the previously created
OnlineResource for wfs and wms protocol) whilst the URL array has now
3 elements throwing an IllegalArgumentException due to number not
matching.
I'm wondering if I should delay the addElement invokations once I have
all the elements ready for all mappings OR if I should relax somehow
these cardinality checks. Still need to understand how, since the
treeNodes are progressively added to the tree. Moreover, "linkage" is
the only mandatory element of CI_OnlineResource so some treeNodes may
have less leaves (as an instance, the optional "protocol" element).
Feedbacks are very welcome.
Cheers,
Daniele
(Sorry Niels if I have put you on CC but I would like to get some
hints from you being the one with top experience on the topic).
On Wed, Sep 23, 2015 at 11:30 AM, Daniele Romagnoli
<[email protected]
<mailto:[email protected]>> wrote:
Hi List,
we are back working on the "Direct Download links from CSW" topic
started by Andrea some months ago.
We would like to share some opinions on it in order to collect
couple of feedbacks.
Summarizing the main concept and restoring previous discussions:
For a Layer, we would like to enable a "DirectDownload" capability.
(We can consider adding a checkBox on wicket in the layer config
panel,as well as a Global option to enable/disable this operation).
Then, for that layer we would like to provide a DirectDownload of
the raw data as part of a CSW record/metadata, something like:
http://host:port/geoserver/ows?service=CSW&version=2.0.1&request=DirectDownload&resourceId=<layerName>
As you know, an ImageMosaic based layer may refer to multiple
files so we will show several links (1 for each file composing the
mosaic) with summarizing details on dimensions ranges for that
file. Something like this:
http://host:port/geoserver/ows?service=CSW&version=2.0.1&request=DirectDownload&resourceId=<layerName>:<fileName>&time=from/to&elevation=from/to&bbox=xmin,ymin,xmax,ymax&custDim=from/to
At the moment, CSW entries are built through a static mapping
based on property file which allows to populate CSW keys from
internal GeoServer Catalog elements.
As an instance, quoting some entries from
Record.default.properties mapping file:
/title.value=if_then_else(isNull(title), name, title)/
/creator.value='GeoServer Catalog'/
/subject.value=keywords/
/abstract.value=abstract/
/
/
CatalogStoreMappingElements are Key,Expression pairs.
Adding a new entry to the mapping for this new capability could be
an option but I'm a bit against that since it depends on status of
global Download enabled.
Moreover, it could be tricky to encode the mapping as an
Expression (to be supported by a FilterFunction).
Therefore, we are thinking about 2 alternative options:
1) Adding a way to change the mappings before they are applied.
We could think about adding a mechanism which checks if the layer
has the DirectDownload capability enabled and then add a new
mapping element which queries the underlying store to return the
associated files to be used to setup the link.
2) Setting up a plugin (something like a FeatureCustomizer) which
customizes the feature being built by the RecordBuilder, in order
to add the download link.
What do you think about it?
Any feedback will be appreciated.
Cheers,
Daniele
/
/
/
/
--
==
GeoServer Professional Services from the experts! Visit
http://goo.gl/it488V for more information.
==
Ing. Daniele Romagnoli
Senior Software Engineer
GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313 <tel:%2B39%200584%20962313>
fax: +39 0584 1660272 <tel:%2B39%200584%201660272>
http://www.geo-solutions.it
http://twitter.com/geosolutions_it
-------------------------------------------------------
*AVVERTENZE AI SENSI DEL D.Lgs. 196/2003*
Le informazioni contenute in questo messaggio di posta elettronica
e/o nel/i file/s allegato/i sono da considerarsi strettamente
riservate. Il loro utilizzo è consentito esclusivamente al
destinatario del messaggio, per le finalità indicate nel messaggio
stesso. Qualora riceviate questo messaggio senza esserne il
destinatario, Vi preghiamo cortesemente di darcene notizia via
e-mail e di procedere alla distruzione del messaggio stesso,
cancellandolo dal Vostro sistema. Conservare il messaggio stesso,
divulgarlo anche in parte, distribuirlo ad altri soggetti,
copiarlo, od utilizzarlo per finalità diverse, costituisce
comportamento contrario ai principi dettati dal D.Lgs. 196/2003.
The information in this message and/or attachments, is intended
solely for the attention and use of the named addressee(s) and may
be confidential or proprietary in nature or covered by the
provisions of privacy act (Legislative Decree June, 30 2003,
no.196 - Italy's New Data Protection Code).Any use not in accord
with its purpose, any disclosure, reproduction, copying,
distribution, or either dissemination, either whole or partial, is
strictly forbidden except previous formal approval of the named
addressee(s). If you are not the intended recipient, please
contact immediately the sender by telephone, fax or e-mail and
delete the information in this message that has been received in
error. The sender does not give any warranty or accept liability
as the content, accuracy or completeness of sent messages and
accepts no responsibility for changes made after they were sent
or for other risks which arise as a result of e-mail transmission,
viruses, etc.
--
==
GeoServer Professional Services from the experts! Visit
http://goo.gl/it488V for more information.
==
Ing. Daniele Romagnoli
Senior Software Engineer
GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
http://www.geo-solutions.it
http://twitter.com/geosolutions_it
-------------------------------------------------------
*AVVERTENZE AI SENSI DEL D.Lgs. 196/2003*
Le informazioni contenute in questo messaggio di posta elettronica e/o
nel/i file/s allegato/i sono da considerarsi strettamente riservate.
Il loro utilizzo è consentito esclusivamente al destinatario del
messaggio, per le finalità indicate nel messaggio stesso. Qualora
riceviate questo messaggio senza esserne il destinatario, Vi preghiamo
cortesemente di darcene notizia via e-mail e di procedere alla
distruzione del messaggio stesso, cancellandolo dal Vostro sistema.
Conservare il messaggio stesso, divulgarlo anche in parte,
distribuirlo ad altri soggetti, copiarlo, od utilizzarlo per finalità
diverse, costituisce comportamento contrario ai principi dettati dal
D.Lgs. 196/2003.
The information in this message and/or attachments, is intended solely
for the attention and use of the named addressee(s) and may be
confidential or proprietary in nature or covered by the provisions of
privacy act (Legislative Decree June, 30 2003, no.196 - Italy's New
Data Protection Code).Any use not in accord with its purpose, any
disclosure, reproduction, copying, distribution, or either
dissemination, either whole or partial, is strictly forbidden except
previous formal approval of the named addressee(s). If you are not the
intended recipient, please contact immediately the sender by
telephone, fax or e-mail and delete the information in this message
that has been received in error. The sender does not give any warranty
or accept liability as the content, accuracy or completeness of sent
messages and accepts no responsibility for changes made after they
were sent or for other risks which arise as a result of e-mail
transmission, viruses, etc.
------------------------------------------------------------------------------
_______________________________________________
Geoserver-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geoserver-devel