diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c6262ea --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +target +*.swp diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..21d4218 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,193 @@ +# Apache License + +_Version 2.0, January 2004_ +_<>_ + +### Terms and Conditions for use, reproduction, and distribution + +#### 1. Definitions + +“License” shall mean the terms and conditions for use, reproduction, and +distribution as defined by Sections 1 through 9 of this document. + +“Licensor” shall mean the copyright owner or entity authorized by the copyright +owner that is granting the License. + +“Legal Entity” shall mean the union of the acting entity and all other entities +that control, are controlled by, or are under common control with that entity. +For the purposes of this definition, “control” means **(i)** the power, direct +or indirect, to cause the direction or management of such entity, whether by +contract or otherwise, or **(ii)** ownership of fifty percent (50%) or more of +the outstanding shares, or **(iii)** beneficial ownership of such entity. + +“You” (or “Your”) shall mean an individual or Legal Entity exercising +permissions granted by this License. + +“Source” form shall mean the preferred form for making modifications, including +but not limited to software source code, documentation source, and configuration +files. + +“Object” form shall mean any form resulting from mechanical transformation or +translation of a Source form, including but not limited to compiled object code, +generated documentation, and conversions to other media types. + +“Work” shall mean the work of authorship, whether in Source or Object form, made +available under the License, as indicated by a copyright notice that is included +in or attached to the work (an example is provided in the Appendix below). + +“Derivative Works” shall mean any work, whether in Source or Object form, that +is based on (or derived from) the Work and for which the editorial revisions, +annotations, elaborations, or other modifications represent, as a whole, an +original work of authorship. For the purposes of this License, Derivative Works +shall not include works that remain separable from, or merely link (or bind by +name) to the interfaces of, the Work and Derivative Works thereof. + +“Contribution” shall mean any work of authorship, including the original version +of the Work and any modifications or additions to that Work or Derivative Works +thereof, that is intentionally submitted to Licensor for inclusion in the Work +by the copyright owner or by an individual or Legal Entity authorized to submit +on behalf of the copyright owner. For the purposes of this definition, +“submitted” means any form of electronic, verbal, or written communication sent +to the Licensor or its representatives, including but not limited to +communication on electronic mailing lists, source code control systems, and +issue tracking systems that are managed by, or on behalf of, the Licensor for +the purpose of discussing and improving the Work, but excluding communication +that is conspicuously marked or otherwise designated in writing by the copyright +owner as “Not a Contribution.” + +“Contributor” shall mean Licensor and any individual or Legal Entity on behalf +of whom a Contribution has been received by Licensor and subsequently +incorporated within the Work. + +#### 2. Grant of Copyright License + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable copyright license to reproduce, prepare Derivative Works of, +publicly display, publicly perform, sublicense, and distribute the Work and such +Derivative Works in Source or Object form. + +#### 3. Grant of Patent License + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable (except as stated in this section) patent license to make, have +made, use, offer to sell, sell, import, and otherwise transfer the Work, where +such license applies only to those patent claims licensable by such Contributor +that are necessarily infringed by their Contribution(s) alone or by combination +of their Contribution(s) with the Work to which such Contribution(s) was +submitted. If You institute patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Work or a +Contribution incorporated within the Work constitutes direct or contributory +patent infringement, then any patent licenses granted to You under this License +for that Work shall terminate as of the date such litigation is filed. + +#### 4. Redistribution + +You may reproduce and distribute copies of the Work or Derivative Works thereof +in any medium, with or without modifications, and in Source or Object form, +provided that You meet the following conditions: + +* **(a)** You must give any other recipients of the Work or Derivative Works a + copy of this License; and +* **(b)** You must cause any modified files to carry prominent notices stating + that You changed the files; and +* **(c)** You must retain, in the Source form of any Derivative Works that You + distribute, all copyright, patent, trademark, and attribution notices from the + Source form of the Work, excluding those notices that do not pertain to any + part of the Derivative Works; and +* **(d)** If the Work includes a “NOTICE” text file as part of its distribution, + then any Derivative Works that You distribute must include a readable copy of + the attribution notices contained within such NOTICE file, excluding those + notices that do not pertain to any part of the Derivative Works, in at least + one of the following places: within a NOTICE text file distributed as part of + the Derivative Works; within the Source form or documentation, if provided + along with the Derivative Works; or, within a display generated by the + Derivative Works, if and wherever such third-party notices normally appear. + The contents of the NOTICE file are for informational purposes only and do not + modify the License. You may add Your own attribution notices within Derivative + Works that You distribute, alongside or as an addendum to the NOTICE text from + the Work, provided that such additional attribution notices cannot be + construed as modifying the License. + +You may add Your own copyright statement to Your modifications and may provide +additional or different license terms and conditions for use, reproduction, or +distribution of Your modifications, or for any such Derivative Works as a whole, +provided Your use, reproduction, and distribution of the Work otherwise complies +with the conditions stated in this License. + +#### 5. Submission of Contributions + +Unless You explicitly state otherwise, any Contribution intentionally submitted +for inclusion in the Work by You to the Licensor shall be under the terms and +conditions of this License, without any additional terms or conditions. +Notwithstanding the above, nothing herein shall supersede or modify the terms of +any separate license agreement you may have executed with Licensor regarding +such Contributions. + +#### 6. Trademarks + +This License does not grant permission to use the trade names, trademarks, +service marks, or product names of the Licensor, except as required for +reasonable and customary use in describing the origin of the Work and +reproducing the content of the NOTICE file. + +#### 7. Disclaimer of Warranty + +Unless required by applicable law or agreed to in writing, Licensor provides the +Work (and each Contributor provides its Contributions) on an “AS IS” BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, +including, without limitation, any warranties or conditions of TITLE, +NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are +solely responsible for determining the appropriateness of using or +redistributing the Work and assume any risks associated with Your exercise of +permissions under this License. + +#### 8. Limitation of Liability + +In no event and under no legal theory, whether in tort (including negligence), +contract, or otherwise, unless required by applicable law (such as deliberate +and grossly negligent acts) or agreed to in writing, shall any Contributor be +liable to You for damages, including any direct, indirect, special, incidental, +or consequential damages of any character arising as a result of this License or +out of the use or inability to use the Work (including but not limited to +damages for loss of goodwill, work stoppage, computer failure or malfunction, or +any and all other commercial damages or losses), even if such Contributor has +been advised of the possibility of such damages. + +#### 9. Accepting Warranty or Additional Liability + +While redistributing the Work or Derivative Works thereof, You may choose to +offer, and charge a fee for, acceptance of support, warranty, indemnity, or +other liability obligations and/or rights consistent with this License. However, +in accepting such obligations, You may act only on Your own behalf and on Your +sole responsibility, not on behalf of any other Contributor, and only if You +agree to indemnify, defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason of your +accepting any such warranty or additional liability. + +_END OF TERMS AND CONDITIONS_ + +### APPENDIX: How to apply the Apache License to your work + +To apply the Apache License to your work, attach the following boilerplate +notice, with the fields enclosed by brackets `[]` replaced with your own +identifying information. (Don't include the brackets!) The text should be +enclosed in the appropriate comment syntax for the file format. We also +recommend that a file or class name and description of purpose be included on +the same “printed page” as the copyright notice for easier identification within +third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/NOTICE b/NOTICE new file mode 100644 index 0000000..468d069 --- /dev/null +++ b/NOTICE @@ -0,0 +1,56 @@ +Copyright (C) 2016 con terra GmbH + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + +========================================================================= +== Apache Notice == +========================================================================= + +This product includes software developed by +The Apache Software Foundation (http://www.apache.org/). + +========================================================================= +== Spring Notice == +========================================================================= + +This product includes software developed by +the Apache Software Foundation (http://www.apache.org). + +This product also includes software developed by +Clinton Begin (http://www.ibatis.com). + +The end-user documentation included with a redistribution, if any, +must include the following acknowledgement: + + "This product includes software developed by the Spring Framework + Project (http://www.springframework.org)." + +Alternately, this acknowledgement may appear in the software itself, +if and wherever such third-party acknowledgements normally appear. + +The names "Spring" and "Spring Framework" must not be used to +endorse or promote products derived from this software without +prior written permission. For written permission, please contact +rod.johnson@interface21.com or juergen.hoeller@interface21.com. + +========================================================================= +== H2 Notice == +========================================================================= + +This software contains unmodified binary redistributions for +H2 database engine (http://www.h2database.com/), +which is dual licensed and available under the MPL 2.0 +(Mozilla Public License) or under the EPL 1.0 (Eclipse Public License). +An original copy of the license agreement can be found at: +http://www.h2database.com/html/license.html diff --git a/README.md b/README.md new file mode 100644 index 0000000..91a4d3f --- /dev/null +++ b/README.md @@ -0,0 +1,110 @@ +# open.nrw-fassaden (Version: 0.9.0-SNAPSHOT) +Facades for open.nrw: Provide CKAN data to the catalog service of the Geoportal and vice versa. + +##### Overview + +* Provides an OAI-PMH interface to harvest ISO 19139 metadata from CSW (INSPIRE catalogs) and returns it in DCAT-AP schema +* Provides an OAI-PMH interface to harvest DCAT-AP metadata from CKAN and returns it in ISO 19139 schema (STILL WORK IN PROGRESS) +* Deployed as a web application in Java servlet container +* Implementation is based on Apache Camel + +##### Requirements + +* JRE 8 +* Tomcat 8 + +##### Building with Apache Maven + +1. cd to the root folder of this project (the folder that contains the pom.xml and this readme) +2. from the command line run + + > mvn clean package + +##### Deployment + +Use your preferred method to deploy the webapp in Tomcat, e.g.: + +* Copy the war file to the Tomcat webapps folder +* Create a context file in the Tomcat host folder + +##### Configuration + +Logging can be configured with the log4j framework (see http://logging.apache.org/log4j/1.2/). +By default a logfile is created here: tomcat/logs/open-nrw-ci-fassaden.log. + +If you build with the env-dev profile, you can set your parameters during build, by including a build.poperties +file in the modile base directory. Please check the pom.xml +to see how parameters are set. The parameters can be changed after deployment in the file +camel-oai-pmh.properties. The available parameters are: + +* oai-pmh.base.url.external: URL that external clients use to access the OAI-PMH interface web application +* db.item.csw.TYPE: should be one of inspire, inspireSoap11 or inspireSoap11, depending on the protocol of the Geoportal +* db.item.csw.URL: GetRecords URL of the geoportal to be harvested +* db.item.ckan.TYPE: currently only ckan is supported +* db.item.ckan.URL: CKAN catalog URL to be harvested + +Note on HTTPS: There are a few catalogs that use HTTPS connections. However, some use self-signed certificates, or +certificates from a CA that is not trusted by the JVM per default. In order to allow integration of such catalogs, +the Facades trusts all server certificates. Of course this is insecure, as it makes the harvester vulnerable +to man-in-the-middle attacks. But the same is true for catalogs that are connected via plain HTTP (ca. 90% of +catalogs), so this vulnerability is inherent as long as HTTP connections are allowed. +If you require trusted connections via HTTPS, just remove the bean +eu.odp.harvest.geo.oai.http.AllowAllHttpClientConfig from the Apache Camel Spring configuration +(/WEB-INF/classes/camel-oai-pmh.xml). + +## Usage + +##### OAI-PMH + +Each Facades is exposed by a distinct HTTP endpoint. The endpoints are reached with this URL pattern: + + /omdf/?& + +So for example if tomcat-base-url is "http://localhost:8080", webapp-path is "/" and +you have a harvester "gp-csw" for the Geoportal, you can reach it with this URL: + + http://localhost:8080/omdf/gp-csw + +a harvester "gp-ckan" for the NRW open data portal: + + http://localhost:8080/omdf/gp-ckan + +You can issue OAI-PMH requests to all of the available endpoints. All endpoints support the same set of operations. + +Supported operations: +* ListIdentifiers: This verb is used to retrieve the identifiers of records that can be harvested from a repository. Optional arguments permit selectivity of the identifiers - based on their membership in a specific Set in the repository or based on their modification, creation, or deletion within a specific date range. +* ListRecords: This verb is used to harvest records from a repository. Optional arguments permit selective harvesting of records based on set membership and/or datestamp. Depending on the repository's support for deletions, a returned header may have a status attribute of "deleted" if a record matching the arguments specified in the request has been deleted. No metadata will be present for records with deleted status. +* GetRecord: This verb is used to retrieve an individual metadata record from a repository. Required arguments specify the identifier of the item from which the record is requested and the format of the metadata that should be included in the record. Depending on the level at which a repository tracks deletions, a header with a "deleted" value for the status attribute may be returned, in case the metadata format specified by the metadataPrefix is no longer available from the repository or from the specified item. + +Operations arguments: +* ListIdentifiers + * from an OPTIONAL argument with a date value, which specifies that only the unique identifiers of records with a datestamp that is more recent than or equal to the specified date should be returned. + * until an OPTIONAL argument with a date value, which specifies that only the unique identifiers of records with a datestamp older than or equal to the specified date should be returned. + * resumptionToken an EXCLUSIVE argument with a value that is the flow control token returned by a previous ListIdentifiers request that issued a partial response. + * Example:
+ http://localhost:8080/omdf/gp-csw?verb=ListIdentifiers&from=2018-06-26&until=2018-07-01
+ http://localhost:8080/omdf/gp-ckan?verb=ListIdentifiers&from=2018-06-26 + +* ListRecords + * from an optional argument with a UTCdatetime value, which specifies a lower bound for datestamp-based selective harvesting. + * until an optional argument with a UTCdatetime value, which specifies a upper bound for datestamp-based selective harvesting. + * resumptionToken an EXCLUSIVE argument with a value that is the flow control token returned by a previous ListIdentifiers request that issued a partial response. + * Example:
+ http://localhost:8080/omdf/gp-csw?verb=ListRecords&from=2018-06-26&until=2018-07-01
+ http://localhost:8080/omdf/gp-ckan?verb=ListRecords&from=2018-06-26 + +* GetRecord + * identifier a required argument that specifies the unique identifier of the item in the repository from which the record must be disseminated. + * Example:
+ http://localhost:8080/omdf/gp-csw?verb=GetRecord&identifier=2c0b2365-347e-44aa-a1c8-a67b7ca5328e
+ http://localhost:8080/omdf/gp-ckan?verb=GetRecord&identifier=d04a7b1e-3e60-4591-b04c-94912ac54afe + + +##### Further Reading + +* http://www.openarchives.org/OAI/openarchivesprotocol.html +* http://www.w3.org/TR/vocab-dcat/ +* https://joinup.ec.europa.eu/asset/dcat_application_profile/description +* https://joinup.ec.europa.eu/asset/dcat_application_profile/asset_release/geodcat-ap-v10 +* http://camel.apache.org/ + diff --git a/build.properties.sample b/build.properties.sample new file mode 100644 index 0000000..e945ca9 --- /dev/null +++ b/build.properties.sample @@ -0,0 +1,7 @@ +oai-pmh.base.url.external=http://localhost:8080/omdf + +db.item.csw.TYPE=inspire +db.item.csw.URL=https://localhost:8080/soapServices/CSWStartup + +db.item.ckan.TYPE=ckan +db.item.ckan.URL=https://localhost:9090 \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..af0bda4 --- /dev/null +++ b/pom.xml @@ -0,0 +1,197 @@ + + 4.0.0 + de.conterra.eu.odp + oai-pmh-geo-harvest + war + EU ODP Geo-Harvesting via OAI-PMH + 0.9.0-SNAPSHOT + This is the web application of the harvest service + + + + Udo Einspanier + uei + u.einspanier@conterra.de + + + + con terra GmbH + http://www.conterra.de + + + + junit + junit + 4.10 + test + + + log4j + log4j + 1.2.17 + + + org.slf4j + slf4j-log4j12 + 1.7.5 + + + org.apache.camel + camel-spring + ${camel.version} + + + org.apache.camel + camel-core + ${camel.version} + + + org.apache.camel + camel-servlet + ${camel.version} + + + org.apache.camel + camel-sql + ${camel.version} + + + org.apache.camel + camel-jaxb + ${camel.version} + + + + org.apache.camel + camel-http4 + ${camel.version} + + + org.springframework + spring-web + ${spring.version} + + + xalan + xalan + 2.7.1 + + + + + + src/main/resources + true + + + + + org.apache.maven.plugins + maven-compiler-plugin + 2.3.2 + + 1.6 + 1.6 + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.10.1 + + 1.6 + 256m + 512m + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.9 + true + + + **/UnitTest*.java + **/*Test.java + + -Xms256m -Xmx256m + + + + + + + org.apache.maven.plugins + maven-resources-plugin + 2.4.1 + + UTF-8 + + + + maven-war-plugin + true + 2.2 + + + + exploded + + + + + \ + ${project.build.directory}/${project.artifactId} + + + true + + + ${buildNumber} + + + + + + org.apache.maven.plugins + maven-dependency-plugin + 2.0 + + + + + + 2.13.0 + 3.2.8.RELEASE + + + + + env-dev + + + + env + dev + + + + ${basedir}/build.properties + + + + ${local.configfile} + + + + + diff --git a/src/main/java/eu/odp/harvest/geo/oai/Harvester.java b/src/main/java/eu/odp/harvest/geo/oai/Harvester.java new file mode 100644 index 0000000..5182dcf --- /dev/null +++ b/src/main/java/eu/odp/harvest/geo/oai/Harvester.java @@ -0,0 +1,131 @@ +package eu.odp.harvest.geo.oai; + +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + +/** + * Business class that represents a harvester and can be marshalled to XML. + */ +@XmlRootElement +@XmlType(propOrder={"id","endpoint","type","name","description","url","selective"}) +public class Harvester { + String id; + String endpoint; + String type; + String name; + String description; + String url; + boolean selective; + + /** + * Gets the ID. + * @return id + */ + public String getId() { + return id; + } + + /** + * Sets the ID. + * @param id id + */ + public void setId(String id) { + this.id = id; + } + + /** + * Gets the HTTP endpoint where this harvester is available. + * @return enpoint URL + */ + public String getEndpoint() { + return endpoint; + } + + /** + * Sets the HTTP endpoint where this harvester is available. + * @param endpoint endpoint URL + */ + public void setEndpoint(String endpoint) { + this.endpoint = endpoint; + } + + /** + * Gets the type of the harvester, e.g inspire. + * @return type + */ + public String getType() { + return type; + } + + /** + * Sets the type of the harvester, e.g. inspire. + * @param type type + */ + public void setType(String type) { + this.type = type; + } + + /** + * Gets the URL of the target catalog + * @return URL of the target catalog + */ + public String getUrl() { + return url; + } + + /** + * Sets the URL of the target catalog. + * @param url URL of the target catalog + */ + public void setUrl(String url) { + this.url = url; + } + + /** + * Gets the description. + * @return description + */ + public String getDescription() { + return description; + } + + /** + * Sets the description + * @param description description + */ + public void setDescription(String description) { + this.description = description; + } + + /** + * Gets the name. + * @return name + */ + public String getName() { + return name; + } + + /** + * Sets the name + * @param name name + */ + public void setName(String name) { + this.name = name; + } + + /** + * Gets flag if the catalog supports selective harvesting. + * @return true, if selective harvesting is supported + */ + public boolean isSelective() { + return selective; + } + + /** + * Sets flag if the catalog supports selective harvesting. + * @param selective flag + */ + public void setSelective(boolean selective) { + this.selective = selective; + } +} diff --git a/src/main/java/eu/odp/harvest/geo/oai/HarvesterManager.java b/src/main/java/eu/odp/harvest/geo/oai/HarvesterManager.java new file mode 100644 index 0000000..6ced795 --- /dev/null +++ b/src/main/java/eu/odp/harvest/geo/oai/HarvesterManager.java @@ -0,0 +1,127 @@ +package eu.odp.harvest.geo.oai; + +import org.apache.camel.CamelContext; +import org.apache.camel.CamelContextAware; +import org.apache.camel.Route; +import org.apache.camel.model.ModelCamelContext; +import org.apache.camel.model.RoutesDefinition; +import org.apache.log4j.Logger; +import org.w3c.dom.Document; +import org.w3c.dom.Node; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import java.io.*; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * Management class for new harvesters. + * This class provides methods to create a list of harvesters from a list of parameter maps and + * to validate parameters for new or updated harvesters. + */ +public class HarvesterManager implements CamelContextAware { + + // Logger + private final static Logger LOG = Logger.getLogger(HarvesterManager.class); + + // Camel context to deploy harvester routes to + private ModelCamelContext camelContext; + + // Regular expression that harvester IDs must match, can also be set via Spring config + private String idRegex = "^[a-zA-Z0-9\\-]*$"; + + private String harvesterBaseUrl; + + /** + * Creates the list of harvesters from a list of parameter maps. + * @param mapList list of parameter maps + * @return harvesters + */ + public Harvesters createHarvesters(List mapList) { + ArrayList harvesters = new ArrayList(mapList.size()); + for (Map map : mapList) { + harvesters.add(createHarvester(map)); + } + return new Harvesters(harvesters); + } + + /** + * Creates a single harvester instance. + * @param mapList the list of results. Must be of size 1. + * @return a harvester instance + */ + public Harvester createHarvester(List mapList) { + if (mapList.size() == 0) { + throw new ManagerException("No such harvester", 404); + } + if (mapList.size() > 1) { + throw new ManagerException("The request resulted in ambiguous response", 500); + } + return createHarvester(mapList.get(0)); + } + + private Harvester createHarvester(Map map) { + Harvester harvester = new Harvester(); + harvester.setId((String) map.get("id")); + harvester.setEndpoint(harvesterBaseUrl + harvester.getId()); + harvester.setType((String) map.get("type")); + harvester.setUrl((String) map.get("url")); + harvester.setDescription((String) map.get("description")); + harvester.setName((String) map.get("name")); + harvester.setSelective(((Number) map.get("selective")).intValue() != 0); + return harvester; + } + + /** + * Validates parameters for a new or updated harvester. + * @param id id of the harvester, will be part of the URL path + * @param type type of the harvester, must be a known Camel route + * @param url URL of the target catalog + */ + public void validateParams(String id, String type, String url) { + if (id == null || id.isEmpty() || ! id.matches(idRegex)) { + throw new ManagerException("Please specify a valid ID that matches the regular expression " + + idRegex, 400); + } + if (camelContext.getEndpoint(type) == null) { + throw new ManagerException("No such harvester type: " + type, 400); + } + try { + URL tmp = new URL(url); + } catch (MalformedURLException e) { + throw new ManagerException("The URL is invalid: " + e.getMessage(), 400); + } + } + + @Override + public void setCamelContext(CamelContext camelContext) { + if (LOG.isDebugEnabled()) { + LOG.debug("Setting camel context to " + camelContext); + } + this.camelContext = (ModelCamelContext) camelContext; + } + + @Override + public CamelContext getCamelContext() { + return camelContext; + } + + /** + * Sets the regular expression that checks if a new harvester ID is valid + * @param idRegex regular expression + */ + public void setIdRegex(String idRegex) { + this.idRegex = idRegex; + } + + public void setHarvesterBaseUrl(String harvesterBaseUrl) { + if (! harvesterBaseUrl.endsWith("/")) { + harvesterBaseUrl = harvesterBaseUrl + "/"; + } + this.harvesterBaseUrl = harvesterBaseUrl; + } +} diff --git a/src/main/java/eu/odp/harvest/geo/oai/Harvesters.java b/src/main/java/eu/odp/harvest/geo/oai/Harvesters.java new file mode 100644 index 0000000..f28f4b3 --- /dev/null +++ b/src/main/java/eu/odp/harvest/geo/oai/Harvesters.java @@ -0,0 +1,44 @@ +package eu.odp.harvest.geo.oai; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import java.util.ArrayList; + +/** + * Business class that represents a list of harvesters and can be marshalled to XML. + */ +@XmlRootElement +public class Harvesters { + private ArrayList harvesters; + + /** + * Default constructor. + */ + public Harvesters() { + } + + /** + * Constructor. + * @param harvesters list of harvesters + */ + public Harvesters(ArrayList harvesters) { + setHarvesters(harvesters); + } + + /** + * Gets the harvesters. + * @return harvesters + */ + @XmlElement(name = "harvester") + public ArrayList getHarvesters() { + return harvesters; + } + + /** + * Sets the harvesters. + * @param harvesters harvesters + */ + public void setHarvesters(ArrayList harvesters) { + this.harvesters = harvesters; + } +} diff --git a/src/main/java/eu/odp/harvest/geo/oai/ManagerException.java b/src/main/java/eu/odp/harvest/geo/oai/ManagerException.java new file mode 100644 index 0000000..3d73696 --- /dev/null +++ b/src/main/java/eu/odp/harvest/geo/oai/ManagerException.java @@ -0,0 +1,28 @@ +package eu.odp.harvest.geo.oai; + +/** + * Exception thrown by the HarvesterManager. + */ +public class ManagerException extends RuntimeException { + + // used in the response as HTTP status code + private final int statusCode; + + /** + * Constructor + * @param msg exception message + * @param statusCode status code + */ + public ManagerException(String msg, int statusCode) { + super(msg); + this.statusCode = statusCode; + } + + /** + * Returns the status code + * @return status code + */ + public int getStatusCode() { + return statusCode; + } +} diff --git a/src/main/java/eu/odp/harvest/geo/oai/OsParameterProcessor.java b/src/main/java/eu/odp/harvest/geo/oai/OsParameterProcessor.java new file mode 100644 index 0000000..cf6015d --- /dev/null +++ b/src/main/java/eu/odp/harvest/geo/oai/OsParameterProcessor.java @@ -0,0 +1,47 @@ +package eu.odp.harvest.geo.oai; + +import org.apache.camel.Exchange; +import org.apache.camel.Message; +import org.apache.camel.Processor; +import org.apache.log4j.Logger; + +import java.util.Map; + +/** + * Creates the OpenSearch URL by instantiating the template URL. + */ +public class OsParameterProcessor implements Processor { + + private final static String START_INDEX_TEMPLATE = "{startIndex?}"; + private final static String START_PAGE_TEMPLATE = "{startPage?}"; + + // Logger + private final static Logger LOG = Logger.getLogger(OsParameterProcessor.class); + + @Override + public void process(Exchange exchange) throws Exception { + Message in = exchange.getIn(); + Map headers = in.getHeaders(); + String urlTemplate = (String) headers.get(Exchange.HTTP_URI); + if (urlTemplate == null) { + LOG.warn("No CamelHttpUri set on message"); + return; + } + int index = urlTemplate.indexOf('?'); + if (index < 0) { + LOG.warn("No query parameters in template URL"); + return; + } + headers.put(Exchange.HTTP_URI, urlTemplate.substring(0, index)); + String httpQuery = urlTemplate.substring(index + 1); + if (httpQuery.contains(START_INDEX_TEMPLATE)) { + headers.put(Exchange.HTTP_QUERY, httpQuery.replace(START_INDEX_TEMPLATE, in.getBody().toString())); + } + else if (httpQuery.contains(START_PAGE_TEMPLATE)) { + headers.put(Exchange.HTTP_QUERY, httpQuery.replace(START_PAGE_TEMPLATE, in.getBody().toString())); + } + else { + LOG.warn("No template parameters to replace"); + } + } +} diff --git a/src/main/java/eu/odp/harvest/geo/oai/http/AllowAllHttpClientConfig.java b/src/main/java/eu/odp/harvest/geo/oai/http/AllowAllHttpClientConfig.java new file mode 100644 index 0000000..c9553c3 --- /dev/null +++ b/src/main/java/eu/odp/harvest/geo/oai/http/AllowAllHttpClientConfig.java @@ -0,0 +1,20 @@ +package eu.odp.harvest.geo.oai.http; + +import org.apache.commons.httpclient.protocol.Protocol; +import org.apache.commons.httpclient.protocol.ProtocolSocketFactory; + +/** + * Configures HttpClient that is used for Camel outgoing HTTP connections. Registers an SSL ProtocolSocketFactory that + * trusts all server certificates. + * WARNING: Use of this class is insecure, as it basically nullifies the purpose of HTTPS. + * Do not use it if you need connections to trusted providers. + */ +public class AllowAllHttpClientConfig { + /** + * Constructor. Registers the custom ProtocolSocketFactory. + */ + public AllowAllHttpClientConfig() { + Protocol easyhttps = new Protocol("https", (ProtocolSocketFactory)new AllowAllSslProtocolSocketFactory(), 443); + Protocol.registerProtocol("https", easyhttps); + } +} diff --git a/src/main/java/eu/odp/harvest/geo/oai/http/AllowAllSslProtocolSocketFactory.java b/src/main/java/eu/odp/harvest/geo/oai/http/AllowAllSslProtocolSocketFactory.java new file mode 100644 index 0000000..a27f199 --- /dev/null +++ b/src/main/java/eu/odp/harvest/geo/oai/http/AllowAllSslProtocolSocketFactory.java @@ -0,0 +1,146 @@ +package eu.odp.harvest.geo.oai.http; + +import org.apache.commons.httpclient.ConnectTimeoutException; +import org.apache.commons.httpclient.HttpClientError; +import org.apache.commons.httpclient.params.HttpConnectionParams; +import org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory; + +import javax.net.SocketFactory; +import javax.net.ssl.SSLContext; +import javax.net.ssl.TrustManager; +import java.io.IOException; +import java.net.*; + +/** + * Based on EasySSLProtocolSocketFactory from Apache httpclient-ssl-contrib, but trusts all server certificates, not just + * self-signed. + * WARNING: Use of this class is insecure, as it basically nullifies the purpose of HTTPS. + * Do not use it if you need connections to trusted providers. + */ +public class AllowAllSslProtocolSocketFactory implements SecureProtocolSocketFactory { + private SSLContext sslcontext = null; + + /** + * Constructor for AllowAllSslProtocolSocketFactory. + */ + public AllowAllSslProtocolSocketFactory() { + super(); + } + + private static SSLContext createCustomSSLContext() { + try { + SSLContext context = SSLContext.getInstance("SSL"); + context.init( + null, + new TrustManager[] {new AllowAllX509TrustManager(null)}, + null); + return context; + } catch (Exception e) { + throw new HttpClientError(e.toString()); + } + } + + private SSLContext getSSLContext() { + if (this.sslcontext == null) { + this.sslcontext = createCustomSSLContext(); + } + return this.sslcontext; + } + + /** + * @see SecureProtocolSocketFactory#createSocket(java.lang.String,int,java.net.InetAddress,int) + */ + public Socket createSocket( + String host, + int port, + InetAddress clientHost, + int clientPort) + throws IOException, UnknownHostException { + + return getSSLContext().getSocketFactory().createSocket( + host, + port, + clientHost, + clientPort + ); + } + + /** + * Attempts to get a new socket connection to the given host within the given time limit. + *

+ * To circumvent the limitations of older JREs that do not support connect timeout a + * controller thread is executed. The controller thread attempts to create a new socket + * within the given limit of time. If socket constructor does not return until the + * timeout expires, the controller terminates and throws an {@link ConnectTimeoutException} + *

+ * + * @param host the host name/IP + * @param port the port on the host + * @param params {@link HttpConnectionParams Http connection parameters} + * + * @return Socket a new socket + * + * @throws IOException if an I/O error occurs while creating the socket + * @throws UnknownHostException if the IP address of the host cannot be + * determined + */ + public Socket createSocket( + final String host, + final int port, + final InetAddress localAddress, + final int localPort, + final HttpConnectionParams params + ) throws IOException, UnknownHostException, ConnectTimeoutException { + if (params == null) { + throw new IllegalArgumentException("Parameters may not be null"); + } + int timeout = params.getConnectionTimeout(); + SocketFactory socketfactory = getSSLContext().getSocketFactory(); + if (timeout == 0) { + return socketfactory.createSocket(host, port, localAddress, localPort); + } else { + Socket socket = socketfactory.createSocket(); + SocketAddress localaddr = new InetSocketAddress(localAddress, localPort); + SocketAddress remoteaddr = new InetSocketAddress(host, port); + socket.bind(localaddr); + socket.connect(remoteaddr, timeout); + return socket; + } + } + + /** + * @see SecureProtocolSocketFactory#createSocket(java.lang.String,int) + */ + public Socket createSocket(String host, int port) + throws IOException, UnknownHostException { + return getSSLContext().getSocketFactory().createSocket( + host, + port + ); + } + + /** + * @see SecureProtocolSocketFactory#createSocket(java.net.Socket,java.lang.String,int,boolean) + */ + public Socket createSocket( + Socket socket, + String host, + int port, + boolean autoClose) + throws IOException, UnknownHostException { + return getSSLContext().getSocketFactory().createSocket( + socket, + host, + port, + autoClose + ); + } + + public boolean equals(Object obj) { + return ((obj != null) && obj.getClass().equals(AllowAllSslProtocolSocketFactory.class)); + } + + public int hashCode() { + return AllowAllSslProtocolSocketFactory.class.hashCode(); + } +} diff --git a/src/main/java/eu/odp/harvest/geo/oai/http/AllowAllX509TrustManager.java b/src/main/java/eu/odp/harvest/geo/oai/http/AllowAllX509TrustManager.java new file mode 100644 index 0000000..8191325 --- /dev/null +++ b/src/main/java/eu/odp/harvest/geo/oai/http/AllowAllX509TrustManager.java @@ -0,0 +1,61 @@ +package eu.odp.harvest.geo.oai.http; + +import javax.net.ssl.TrustManager; +import javax.net.ssl.TrustManagerFactory; +import javax.net.ssl.X509TrustManager; +import java.security.KeyStore; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; + +/** + * Based on AllowAllX509TrustManager from Apache httpclient-ssl-contrib, but trusts all server certificates, not just + * self-signed. + * WARNING: Use of this class is insecure, as it basically nullifies the purpose of HTTPS. + * Do not use it if you need connections to trusted providers. + */ +public class AllowAllX509TrustManager implements X509TrustManager { + private X509TrustManager standardTrustManager = null; + + /** + * Constructor for AllowAllX509TrustManager. + */ + public AllowAllX509TrustManager(KeyStore keystore) throws NoSuchAlgorithmException, KeyStoreException { + super(); + TrustManagerFactory factory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); + factory.init(keystore); + TrustManager[] trustmanagers = factory.getTrustManagers(); + if (trustmanagers.length == 0) { + throw new NoSuchAlgorithmException("no trust manager found"); + } + this.standardTrustManager = (X509TrustManager)trustmanagers[0]; + } + + /** + * @see javax.net.ssl.X509TrustManager#checkClientTrusted(X509Certificate[],String authType) + */ + public void checkClientTrusted(X509Certificate[] certificates,String authType) throws CertificateException { + standardTrustManager.checkClientTrusted(certificates,authType); + } + + /** + * @see javax.net.ssl.X509TrustManager#checkServerTrusted(X509Certificate[],String authType) + */ + public void checkServerTrusted(X509Certificate[] certificates,String authType) throws CertificateException { +/* + if ((certificates != null) && (certificates.length == 1)) { + certificates[0].checkValidity(); + } else { + standardTrustManager.checkServerTrusted(certificates,authType); + } +*/ + } + + /** + * @see javax.net.ssl.X509TrustManager#getAcceptedIssuers() + */ + public X509Certificate[] getAcceptedIssuers() { + return this.standardTrustManager.getAcceptedIssuers(); + } +} diff --git a/src/main/resources/align_EuroVoc_Inspire.rdf b/src/main/resources/align_EuroVoc_Inspire.rdf new file mode 100644 index 0000000..779f8bd --- /dev/null +++ b/src/main/resources/align_EuroVoc_Inspire.rdf @@ -0,0 +1,481 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/camel-oai-pmh.properties b/src/main/resources/camel-oai-pmh.properties new file mode 100644 index 0000000..8493f0b --- /dev/null +++ b/src/main/resources/camel-oai-pmh.properties @@ -0,0 +1,5 @@ +harvester.base.url=${oai-pmh.base.url.external}/harvesters/ +db.item.csw.TYPE=${db.item.csw.TYPE} +db.item.csw.URL=${db.item.csw.URL} +db.item.ckan.TYPE=${db.item.ckan.TYPE} +db.item.ckan.URL=${db.item.ckan.URL} diff --git a/src/main/resources/camel-oai-pmh.xml b/src/main/resources/camel-oai-pmh.xml new file mode 100644 index 0000000..5145a93 --- /dev/null +++ b/src/main/resources/camel-oai-pmh.xml @@ -0,0 +1,342 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + java.lang.Exception + + true + + + + <error>Internal error, please check the log files</error> + + + 500 + + + + + + + + ${date:now:yyyy-MM-dd'T'HH:mm:ss'Z'} + + + + <dummy/> + + + + + + + count(/oai:OAI-PMH) = 0 + + POST + + + + ${header.soapVersion} == '1.1' + + text/xml + + + + ${header.soapVersion} == '1.2' + + application/soap+xml + + + + + application/xml + + + + + + + + + ${header.out} == null + + + + ${header.out} != 'csw' + + + + + + + text/xml + + + + + + + + 1.1 + + + http://www.opengis.net/cat/csw/2.0.2/requests#GetRecords + + + + + + + + + 1.2 + + + http://www.opengis.net/cat/csw/2.0.2/requests#GetRecords + + + + + + + + + resource:classpath:/harvester-types.xml + + + text/xml + + + + + + + + ${db.item.csw.URL} + + + + + + + ${header.metadataPrefix} == null + + dcat_ap + + + + + ${db.item.csw.TYPE} + + + + + + + + + + + + ListIdentifiers + + + + + + + + ListRecords + + + + + + + + GetRecord + + + + + + + + + ${date:now:yyyy-MM-dd'T'HH:mm:ss'Z'} + + + + ${header.metadataPrefix} == null + + euro_dcat_ap + + + + + <dummy/> + + + + + + + + count(/oai:OAI-PMH) = 0 + + GET + + + + + + /parameters/parameter[name='httpUri']/value/text() + + + /parameters/parameter[name='httpQuery']/value/text() + + + <dummy/> + + + + + + + + + + + + + + + ${header.out} == null + + + + ${header.out} != 'dcat' + + + + + + + text/xml + + + + + + + + + + + + + ListIdentifiers + + + + + + + + ListRecords + + + + + + + + GetRecord + + + + + + + + ${date:now:yyyy-MM-dd'T'HH:mm:ss'Z'} + + + + ${db.item.ckan.URL}/catalog.xml + + + + text/xml + + + + + + + ${date:now:yyyy-MM-dd'T'HH:mm:ss'Z'} + + + ${db.item.ckan.URL}/dataset/d04a7b1e-3e60-4591-b04c-94912ac54afe.xml + + + + text/xml + + + + \ No newline at end of file diff --git a/src/main/resources/ckanRequest.xsl b/src/main/resources/ckanRequest.xsl new file mode 100644 index 0000000..ae4d689 --- /dev/null +++ b/src/main/resources/ckanRequest.xsl @@ -0,0 +1,286 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Bad or missing verb + badVerb + + + + + + + + + + badArgument + Bad argument: metadataPrefix + + + + + badArgument + Missing argument: identifier + + + + + + + + + + + + + cannotDisseminateFormat + Cannot disseminate format specified by metadataPrefix + + + + + noSetHierarchy + Sets not supported + + + + + noSetHierarchy + Until not supported + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${db.item.ckan.URL} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + httpUri + + + + + + httpQuery + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/ckanResponse.xsl b/src/main/resources/ckanResponse.xsl new file mode 100644 index 0000000..0aa31ed --- /dev/null +++ b/src/main/resources/ckanResponse.xsl @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The target catalog has no matching records + + + + + + + + + + + + + +
+ + + + + + +
+
+ + + The CKAN server returned an exception + + +
diff --git a/src/main/resources/dcat2iso.xsl b/src/main/resources/dcat2iso.xsl new file mode 100644 index 0000000..30b2282 --- /dev/null +++ b/src/main/resources/dcat2iso.xsl @@ -0,0 +1,1263 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + de + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + pointOfContact + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/eu/odp/harvest/geo/oai/jaxb.index b/src/main/resources/eu/odp/harvest/geo/oai/jaxb.index new file mode 100644 index 0000000..6bcd97b --- /dev/null +++ b/src/main/resources/eu/odp/harvest/geo/oai/jaxb.index @@ -0,0 +1,2 @@ +Harvesters +Harvester \ No newline at end of file diff --git a/src/main/resources/filetypes-skos.rdf b/src/main/resources/filetypes-skos.rdf new file mode 100644 index 0000000..56615ca --- /dev/null +++ b/src/main/resources/filetypes-skos.rdf @@ -0,0 +1,759 @@ + + + + Filetypes Authority Table + Filetypes Authority Table + + + + TAR + TAR + TAR + TAR + 2012-09-01 + TAR + Tape Archive + + + + GZIP + GZIP + GZIP + GZIP + 2012-09-01 + GNU zip + + + + ZIP + ZIP + ZIP + ZIP + 2012-09-01 + ZIP + + + + AZW + AZW + AZW + AZW + 2012-09-01 + Amazon Kindle eBook + Amazon Kindle eBook format + + + + EPUB + EPUB + EPUB + EPUB + 2012-09-01 + EPUB + eBook standard of the International Digital Publishing Forum (IDPF) + + + + MOBI + MOBI + MOBI + MOBI + 2012-09-01 + Mobipocket eBook + Mobipocket eBook format + + + + GIF + GIF + GIF + GIF + 2012-09-01 + GIF + Graphics Interchange Format + + + + JPEG + JPEG + JPEG + JPEG + 2012-09-01 + JPEG + + + + TIFF + TIFF + TIFF + TIFF + 2012-09-01 + TIFF + Tagged Image Format File + + + + PNG + PNG + PNG + PNG + 2012-09-01 + PNG + Portable Network Graphics + + + + EPS + EPS + EPS + EPS + 2012-09-01 + Encapsulated Postscript + + + + CSS + CSS + CSS + CSS + 2012-09-01 + CSS + Cascading Style Sheet + + + + PDF + PDF + PDF + PDF + 2012-09-01 + PDF + Portable Document Format + + + + PDFA1A + PDFA1A + PDFA1A + PDFA1A + 2012-09-01 + PDF/A-1a + PDF archiving format, Level A conformance + + + + PDFA1B + PDFA1B + PDFA1B + PDFA1B + 2012-09-01 + PDF/A-1b + PDF archiving format, Level B conformance + + + + PDFX + PDFX + PDFX + PDFX + 2012-09-01 + PDF/X + PDF printing format, Blind eXchange + + + + PPSX + PPSX + PPSX + PPSX + 2012-09-01 + PowerPoint PPSX + PowerPoint Open XML Slide Show + + + + PPS + PPS + PPS + PPS + 2012-09-01 + PowerPoint Slide Show + Microsoft PowerPoint Slide Show + + + + PPT + PPT + PPT + PPT + 2012-09-01 + PowerPoint PPT + Microsoft PowerPoint Presentation + + + + PPTX + PPTX + PPTX + PPTX + 2012-09-01 + PowerPoint PPTX + Office Open XML Presentation + + + + XLS + XLS + XLS + XLS + 2012-09-01 + Excel XLS + Microsof Excel Workbook + + + + XLSX + XLSX + XLSX + XLSX + 2012-09-01 + Excel XLSX + Office Open XML Workbook + + + + XSLFO + XSLFO + XSLFO + XSLFO + 2012-09-01 + XSL-FO + eXtensible Stylesheet Language - Formatting Objects + + + + XSLT + XSLT + XSLT + XSLT + 2012-09-01 + XSLT + Extensible Stylesheet Language Transformations + + + + DTD_SGML + DTD_SGML + DTD_SGML + DTD_SGML + 2012-09-01 + SGML DTD + SGML Document Type Definition (DTD) + + + + DTD_XML + DTD_XML + DTD_XML + DTD_XML + 2012-09-01 + XML DTD + XML Document Type Definition (DTD) + + + + SCHEMA_XML + SCHEMA_XML + SCHEMA_XML + SCHEMA_XML + 2012-09-01 + XML schema + XML Schema + + + + FMX2 + FMX2 + FMX2 + FMX2 + 1989-01-01 + 1999-03-31 + Formex 2 + Formalized Exchange of Electronic Publications (Formex), version 2 + + + + FMX3 + FMX3 + FMX3 + FMX3 + 1999-04-01 + 2004-04-30 + Formex 3 + Formalized Exchange of Electronic Publications (Formex), version 3 + + + + FMX4 + FMX4 + FMX4 + FMX4 + 2004-05-01 + Formex 4 + Formalized Exchange of Electronic Publications (Formex), version 4 + + + + RDF_XML + RDF_XML + RDF_XML + RDF_XML + 2012-09-01 + RDF + Resource Description Framework + + + + RDF_TURTLE + RDF_TURTLE + RDF_TURTLE + RDF_TURTLE + 2012-09-01 + TURTLE + Terse RDF Triple Language + + + + SGML + SGML + SGML + SGML + 2012-09-01 + SGML + Standard Generalized Mark-up Language + + + + SKOS_XML + SKOS_XML + SKOS_XML + SKOS_XML + 2012-09-01 + SKOS + Simple Knowledge Organization System + + + + OWL + OWL + OWL + OWL + 2012-09-01 + OWL + Web Ontology Language + + + + XML + XML + XML + XML + 2012-09-01 + XML + Extensible Markup Language + + + + SPARQLQ + SPARQLQ + SPARQLQ + SPARQLQ + 2012-09-01 + SPARQL + SPARQL Query + + + + SPARQLQRES + SPARQLQRES + SPARQLQRES + SPARQLQRES + 2012-09-01 + SPARQL results + SPARQL Query Results + + + + DOC + DOC + DOC + DOC + 2012-09-01 + Word DOC + Microsoft Word + + + + DOCX + DOCX + DOCX + DOCX + 2012-09-01 + Word DOCX + Office Open XML Document + + + + ODT + ODT + ODT + ODT + 2012-09-01 + ODT + Open Document Text + + + + TXT + TXT + TXT + TXT + 2012-09-01 + Plain text + Text file + + + + RTF + RTF + RTF + RTF + 2012-09-01 + RTF + Rich Text Format File + + + + HTML + HTML + HTML + HTML + 2012-09-01 + HTML + HyperText Mark-up Language + + + + XHTML + XHTML + XHTML + XHTML + 2012-09-01 + XHTML + Extensible Hypertext Markup Language + + + + CSV + CSV + CSV + CSV + 2013-05-21 + CSV + Comma-Separated Values + + + + MDB + MDB + MDB + MDB + 2013-09-18 + MDB + Microsoft Access Database + + + + DBF + DBF + DBF + DBF + 2013-09-18 + DBF + dBase File + + + + MOP + MOP + MOP + MOP + 2013-09-18 + MOP + MOPAC Input Format + + + + E00 + E00 + E00 + E00 + 2013-09-18 + E00 + ESRI Arc/Info interchange file + + + + MXD + MXD + MXD + MXD + 2013-09-18 + MXD + ArcGIS Map Document + + + + KML + KML + KML + KML + 2013-09-18 + KML + Keyhole Markup Language + + + + TSV + TSV + TSV + TSV + 2013-10-02 + TSV + Tab-Separated Value + + + + JSON + JSON + JSON + JSON + 2013-10-02 + JSON + JavaScript Object Notation + + + + KMZ + KMZ + KMZ + KMZ + 2013-11-27 + KMZ + Keyhole Markup Language, Zipped + + + + GML + GML + GML + GML + 2013-11-27 + GML + Geography Markup Language + + + + RSS + RSS + RSS + RSS + 2013-11-27 + RSS feed + Really Simple Syndication + + + + ODS + ODS + ODS + ODS + 2013-11-27 + ODS + OpenDocument Spreadsheet + + + + INDD + INDD + INDD + INDD + 2012-09-01 + INDD + Adobe InDesign Document + + + + PSD + PSD + PSD + PSD + 2012-09-01 + PSD + Adobe Photoshop Document + + + + PS + PS + PS + PS + 2012-09-01 + PS + PostScript File + + + + ODF + ODF + ODF + ODF + 2012-09-01 + ODF + OpenDocument Format + + + + TAR_XZ + TAR_XZ + TAR_XZ + TAR_XZ + 2012-09-01 + TAR XZ + XZ Compressed Tar Archive + + + + TAR_GZ + TAR_GZ + TAR_GZ + TAR_GZ + 2012-09-01 + TAR GZ + Compressed Tarball File + + + + RDF + RDF + RDF + RDF + 2012-09-01 + RDF + Resource Description Framework (RDF) + + + + OP_DATPRO + OP_DATPRO + OP_DATPRO + НЕОКОНЧАТЕЛНИ ДАННИ + Předběžné údaje + Midlertidige data + Vorläufige Daten + Provisional data + Προσωρινά δεδομένα + Datos provisionales + Esialgsed andmed + Alustavat tiedot + Données provisoires + Sonraí sealadacha + Privremeni podaci + Ideiglenes adatok + Dati provvisori + Laikinieji duomenys + Provizoriski dati + Dejta provviżorja + Voorlopige gegevens + Dane tymczasowe + Dados provisórios + Date provizorii + Predbežné údaje + Začasni podatki + Tillfälliga uppgifter + + \ No newline at end of file diff --git a/src/main/resources/harvester-types.xml b/src/main/resources/harvester-types.xml new file mode 100644 index 0000000..e8a9db0 --- /dev/null +++ b/src/main/resources/harvester-types.xml @@ -0,0 +1,23 @@ + + + + inspire + INSPIRE (plain XML) + Harvester type for INSPIRE catalogs (via CSW AP-ISO profile plain HTTP/POST) + + + inspireSoap11 + INSPIRE SOAP 1.1 + Harvester type for INSPIRE catalogs (via CSW AP-ISO profile SOAP 1.1) + + + inspireSoap12 + INSPIRE SOAP 1.2 + Harvester type for INSPIRE catalogs (via CSW AP-ISO profile SOAP 1.2) + + + ckan + Comprehensive Knowledge Archive Network + Harvester type for CKAN catalogs via OpenSearch + + diff --git a/src/main/resources/iana-media-types.xml b/src/main/resources/iana-media-types.xml new file mode 100644 index 0000000..f19c0a6 --- /dev/null +++ b/src/main/resources/iana-media-types.xml @@ -0,0 +1 @@ +application/1d-interleaved-parityfecapplication/3gpdash-qoe-report+xmlapplication/3gpp-ims+xmlapplication/A2Lapplication/activemessageapplication/activemessageapplication/alto-costmap+jsonapplication/alto-costmapfilter+jsonapplication/alto-directory+jsonapplication/alto-endpointprop+jsonapplication/alto-endpointpropparams+jsonapplication/alto-endpointcost+jsonapplication/alto-endpointcostparams+jsonapplication/alto-error+jsonapplication/alto-networkmapfilter+jsonapplication/alto-networkmap+jsonapplication/AMLapplication/andrew-insetapplication/applefileapplication/ATFapplication/ATFXapplication/atom+xmlapplication/atomcat+xmlapplication/atomdeleted+xmlapplication/atomicmailapplication/atomsvc+xmlapplication/ATXMLapplication/auth-policy+xmlapplication/bacnet-xdd+zipapplication/batch-SMTPapplication/beep+xmlapplication/calendar+jsonapplication/calendar+xmlapplication/call-completionapplication/cals-1840application/cborapplication/ccmp+xmlapplication/ccxml+xmlapplication/CDFX+XMLapplication/cdmi-capabilityapplication/cdmi-containerapplication/cdmi-domainapplication/cdmi-objectapplication/cdmi-queueapplication/CEAapplication/cea-2018+xmlapplication/cellml+xmlapplication/cfwapplication/cmsapplication/cnrp+xmlapplication/coap-group+jsonapplication/commongroundapplication/conference-info+xmlapplication/cpl+xmlapplication/csrattrsapplication/csta+xmlapplication/CSTAdata+xmlapplication/cybercashapplication/dash+xmlapplication/dashdeltaapplication/davmount+xmlapplication/dca-rftapplication/DCDapplication/dec-dxapplication/dialog-info+xmlapplication/dicomapplication/DIIapplication/DITapplication/dnsapplication/dskpp+xmlapplication/dssc+derapplication/dssc+xmlapplication/dvcsapplication/ecmascriptapplication/EDI-consentapplication/EDIFACTapplication/EDI-X12application/emotionml+xmlapplication/encaprtpapplication/epp+xmlapplication/epub+zipapplication/eshopapplication/exampleapplication/fastinfosetapplication/fastsoapapplication/fdt+xmlapplication/fitsapplication/font-sfntapplication/font-tdpfrapplication/font-woffapplication/framework-attributes+xmlapplication/gzipapplication/H224application/held+xmlapplication/httpapplication/hyperstudioapplication/ibe-key-request+xmlapplication/ibe-pkg-reply+xmlapplication/ibe-pp-dataapplication/igesapplication/im-iscomposing+xmlapplication/indexapplication/index.cmdapplication/index.objapplication/index.responseapplication/index.vndapplication/inkml+xmlapplication/IOTPapplication/ipfixapplication/ippapplication/ISUPapplication/its+xmlapplication/javascriptapplication/joseapplication/jose+jsonapplication/jrd+jsonapplication/jsonapplication/json-patch+jsonapplication/json-seqapplication/jwk+jsonapplication/jwk-set+jsonapplication/jwtapplication/kpml-request+xmlapplication/kpml-response+xmlapplication/ld+jsonapplication/link-formatapplication/load-control+xmlapplication/lost+xmlapplication/lostsync+xmlapplication/LXFapplication/mac-binhex40application/macwriteiiapplication/mads+xmlapplication/marcapplication/marcxml+xmlapplication/mathematicaapplication/mbms-associated-procedure-description+xmlapplication/mbms-deregister+xmlapplication/mbms-envelope+xmlapplication/mbms-msk-response+xmlapplication/mbms-msk+xmlapplication/mbms-protection-description+xmlapplication/mbms-reception-report+xmlapplication/mbms-register-response+xmlapplication/mbms-register+xmlapplication/mbms-schedule+xmlapplication/mbms-user-service-description+xmlapplication/mbox+xmlapplication/media_control+xmlapplication/media-policy-dataset+xmlapplication/mediaservercontrol+xmlapplication/merge-patch+jsonapplication/metalink4+xmlapplication/mets+xmlapplication/MF4application/mikeyapplication/mods+xmlapplication/moss-keysapplication/moss-signatureapplication/mosskey-dataapplication/mosskey-requestapplication/mp21application/mp4application/mpeg4-genericapplication/mpeg4-iodapplication/mpeg4-iod-xmtapplication/mrb-consumer+xmlapplication/mrb-publish+xmlapplication/msc-ivr+xmlapplication/msc-mixer+xmlapplication/mswordapplication/mxfapplication/nasdataapplication/news-checkgroupsapplication/news-groupinfoapplication/news-transmissionapplication/nlsml+xmlapplication/nssapplication/ocsp-requestapplication/oscp-responseapplication/octet-streamapplication/ODAapplication/ODXapplication/oebps-package+xmlapplication/oggapplication/oxpsapplication/p2p-overlay+xmlapplication/patch-ops-error+xmlapplication/pdfapplication/PDXapplication/pgp-encryptedapplication/pgp-signatureapplication/pidf-diff+xmlapplication/pidf+xmlapplication/pkcs10application/pkcs7-mimeapplication/pkcs7-signatureapplication/pkcs8application/pkix-attr-certapplication/pkix-certapplication/pkix-crlapplication/pkix-pkipathapplication/pkixcmpapplication/pls+xmlapplication/poc-settings+xmlapplication/postscriptapplication/provenance+xmlapplication/prs.alvestrand.titrax-sheetapplication/prs.cwwapplication/prs.hpub+zipapplication/prs.nprendapplication/prs.pluckerapplication/prs.rdf-xml-cryptapplication/prs.xsf+xmlapplication/pskc+xmlapplication/rdf+xmlapplication/QSIGapplication/raptorfecapplication/rdap+jsonapplication/reginfo+xmlapplication/relax-ng-compact-syntaxapplication/remote-printingapplication/reputon+jsonapplication/resource-lists-diff+xmlapplication/resource-lists+xmlapplication/riscosapplication/rlmi+xmlapplication/rls-services+xmlapplication/rpki-ghostbustersapplication/rpki-manifestapplication/rpki-roaapplication/rpki-updownapplication/rtfapplication/rtploopbackapplication/rtxapplication/samlassertion+xmlapplication/samlmetadata+xmlapplication/sbml+xmlapplication/scaip+xmlapplication/scvp-cv-requestapplication/scvp-cv-responseapplication/scvp-vp-requestapplication/scvp-vp-responseapplication/sdpapplication/sep-exiapplication/sep+xmlapplication/session-infoapplication/set-paymentapplication/set-payment-initiationapplication/set-registrationapplication/set-registration-initiationapplication/SGMLapplication/sgml-open-catalogapplication/shf+xmlapplication/sieveapplication/simple-filter+xmlapplication/simple-message-summaryapplication/simpleSymbolContainerapplication/slateapplication/smilapplication/smil+xmlapplication/smpte336mapplication/soap+fastinfosetapplication/soap+xmlapplication/spirits-event+xmlapplication/sqlapplication/srgsapplication/srgs+xmlapplication/sru+xmlapplication/ssml+xmlapplication/tamp-apex-updateapplication/tamp-apex-update-confirmapplication/tamp-community-updateapplication/tamp-community-update-confirmapplication/tamp-errorapplication/tamp-sequence-adjustapplication/tamp-sequence-adjust-confirmapplication/tamp-status-queryapplication/tamp-status-responseapplication/tamp-updateapplication/tamp-update-confirmapplication/tei+xmlapplication/thraud+xmlapplication/timestamp-queryapplication/timestamp-replyapplication/timestamped-dataapplication/ttml+xmlapplication/tve-triggerapplication/ulpfecapplication/urc-grpsheet+xmlapplication/urc-ressheet+xmlapplication/urc-targetdesc+xmlapplication/urc-uisocketdesc+xmlapplication/vcard+jsonapplication/vcard+xmlapplication/vemmiapplication/vnd.3gpp.bsf+xmlapplication/vnd.3gpp.pic-bw-largeapplication/vnd.3gpp.pic-bw-smallapplication/vnd.3gpp.pic-bw-varapplication/vnd.3gpp.smsapplication/vnd.3gpp2.bcmcsinfo+xmlapplication/vnd.3gpp2.smsapplication/vnd.3gpp2.tcapapplication/vnd.3M.Post-it-Notesapplication/vnd.accpac.simply.asoapplication/vnd.accpac.simply.impapplication/vnd-acucobolapplication/vnd.acucorpapplication/vnd.adobe.flash-movieapplication/vnd.adobe.formscentral.fcdtapplication/vnd.adobe.fxpapplication/vnd.adobe.partial-uploadapplication/vnd.adobe.xdp+xmlapplication/vnd.adobe.xfdfapplication/vnd.aether.impapplication/vnd.ah-barcodeapplication/vnd.ahead.spaceapplication/vnd.airzip.filesecure.azfapplication/vnd.airzip.filesecure.azsapplication/vnd.americandynamics.accapplication/vnd.amiga.amiapplication/vnd.amundsen.maze+xmlapplication/vnd.anser-web-certificate-issue-initiationapplication/vnd.antix.game-componentapplication/vnd.apache.thrift.binaryapplication/vnd.apache.thrift.compactapplication/vnd.apache.thrift.jsonapplication/vnd.api+jsonapplication/vnd.apple.mpegurlapplication/vnd.apple.installer+xmlapplication/vnd.arastra.swiapplication/vnd.aristanetworks.swiapplication/vnd.artsquareapplication/vnd.astraea-software.iotaapplication/vnd.audiographapplication/vnd.autopackageapplication/vnd.avistar+xmlapplication/vnd.balsamiq.bmml+xmlapplication/vnd.balsamiq.bmprapplication/vnd.bekitzur-stech+jsonapplication/vnd.blueice.multipassapplication/vnd.bluetooth.ep.oobapplication/vnd.bluetooth.le.oobapplication/vnd.bmiapplication/vnd.businessobjectsapplication/vnd.cab-jscriptapplication/vnd.canon-cpdlapplication/vnd.canon-lipsapplication/vnd.cendio.thinlinc.clientconfapplication/vnd.century-systems.tcp_streamapplication/vnd.chemdraw+xmlapplication/vnd.chipnuts.karaoke-mmdapplication/vnd.cinderellaapplication/vnd.cirpack.isdn-extapplication/vnd.citationstyles.style+xmlapplication/vnd.claymoreapplication/vnd.cloanto.rp9application/vnd.clonk.c4groupapplication/vnd.cluetrust.cartomobile-configapplication/vnd.cluetrust.cartomobile-config-pkgapplication/vnd.coffeescriptapplication/vnd.collection.doc+jsonapplication/vnd.collection+jsonapplication/vnd.collection.next+jsonapplication/vnd.commerce-battelleapplication/vnd.commonspaceapplication/vnd.cosmocallerapplication/vnd.contact.cmsgapplication/vnd.crick.clickerapplication/vnd.crick.clicker.keyboardapplication/vnd.crick.clicker.paletteapplication/vnd.crick.clicker.templateapplication/vnd.crick.clicker.wordbankapplication/vnd.criticaltools.wbs+xmlapplication/vnd.ctc-posmlapplication/vnd.ctct.ws+xmlapplication/vnd.cups-pdfapplication/vnd.cups-postscriptapplication/vnd.cups-ppdapplication/vnd.cups-rasterapplication/vnd.cups-rawapplication/vnd-curlapplication/vnd.cyan.dean.root+xmlapplication/vnd.cybankapplication/vnd-dartapplication/vnd.data-vision.rdzapplication/vnd.debian.binary-packageapplication/vnd.dece.dataapplication/vnd.dece.ttml+xmlapplication/vnd.dece.unspecifiedapplication/vnd.dece-zipapplication/vnd.denovo.fcselayout-linkapplication/vnd.desmume-movieapplication/vnd.dir-bi.plate-dl-nosuffixapplication/vnd.dm.delegation+xmlapplication/vnd.dnaapplication/vnd.document+jsonapplication/vnd.dolby.mobile.1application/vnd.dolby.mobile.2application/vnd.doremir.scorecloud-binary-documentapplication/vnd.dpgraphapplication/vnd.dreamfactoryapplication/vnd.dtg.localapplication/vnd.dtg.local.flashapplication/vnd.dtg.local.htmlapplication/vnd.dvb.aitapplication/vnd.dvb.dvbjapplication/vnd.dvb.esgcontainerapplication/vnd.dvb.ipdcdftnotifaccessapplication/vnd.dvb.ipdcesgaccessapplication/vnd.dvb.ipdcesgaccess2application/vnd.dvb.ipdcesgpddapplication/vnd.dvb.ipdcroamingapplication/vnd.dvb.iptv.alfec-baseapplication/vnd.dvb.iptv.alfec-enhancementapplication/vnd.dvb.notif-aggregate-root+xmlapplication/vnd.dvb.notif-container+xmlapplication/vnd.dvb.notif-generic+xmlapplication/vnd.dvb.notif-ia-msglist+xmlapplication/vnd.dvb.notif-ia-registration-request+xmlapplication/vnd.dvb.notif-ia-registration-response+xmlapplication/vnd.dvb.notif-init+xmlapplication/vnd.dvb.pfrapplication/vnd.dvb_serviceapplication/vnd-dxrapplication/vnd.dynageoapplication/vnd.dzrapplication/vnd.easykaraoke.cdgdownloadapplication/vnd.ecdis-updateapplication/vnd.ecowin.chartapplication/vnd.ecowin.filerequestapplication/vnd.ecowin.fileupdateapplication/vnd.ecowin.seriesapplication/vnd.ecowin.seriesrequestapplication/vnd.ecowin.seriesupdateapplication/vnd.emclient.accessrequest+xmlapplication/vnd.enlivenapplication/vnd.enphase.envoyapplication/vnd.eprints.data+xmlapplication/vnd.epson.esfapplication/vnd.epson.msfapplication/vnd.epson.quickanimeapplication/vnd.epson.saltapplication/vnd.epson.ssfapplication/vnd.ericsson.quickcallapplication/vnd.eszigno3+xmlapplication/vnd.etsi.aoc+xmlapplication/vnd.etsi.asic-s+zipapplication/vnd.etsi.asic-e+zipapplication/vnd.etsi.cug+xmlapplication/vnd.etsi.iptvcommand+xmlapplication/vnd.etsi.iptvdiscovery+xmlapplication/vnd.etsi.iptvprofile+xmlapplication/vnd.etsi.iptvsad-bc+xmlapplication/vnd.etsi.iptvsad-cod+xmlapplication/vnd.etsi.iptvsad-npvr+xmlapplication/vnd.etsi.iptvservice+xmlapplication/vnd.etsi.iptvsync+xmlapplication/vnd.etsi.iptvueprofile+xmlapplication/vnd.etsi.mcid+xmlapplication/vnd.etsi.mheg5application/vnd.etsi.overload-control-policy-dataset+xmlapplication/vnd.etsi.pstn+xmlapplication/vnd.etsi.sci+xmlapplication/vnd.etsi.simservs+xmlapplication/vnd.etsi.timestamp-tokenapplication/vnd.etsi.tsl+xmlapplication/vnd.etsi.tsl.derapplication/vnd.eudora.dataapplication/vnd.ezpix-albumapplication/vnd.ezpix-packageapplication/vnd.f-secure.mobileapplication/vnd.fastcopy-disk-imageapplication/vnd-fdfapplication/vnd.fdsn.mseedapplication/vnd.fdsn.seedapplication/vnd.ffsnsapplication/vnd.fintsapplication/vnd.FloGraphItapplication/vnd.fluxtime.clipapplication/vnd.font-fontforge-sfdapplication/vnd.framemakerapplication/vnd.frogans.fncapplication/vnd.frogans.ltfapplication/vnd.fsc.weblaunchapplication/vnd.fujitsu.oasysapplication/vnd.fujitsu.oasys2application/vnd.fujitsu.oasys3application/vnd.fujitsu.oasysgpapplication/vnd.fujitsu.oasysprsapplication/vnd.fujixerox.ART4application/vnd.fujixerox.ART-EXapplication/vnd.fujixerox.dddapplication/vnd.fujixerox.docuworksapplication/vnd.fujixerox.docuworks.binderapplication/vnd.fujixerox.docuworks.containerapplication/vnd.fujixerox.HBPLapplication/vnd.fut-misnetapplication/vnd.fuzzysheetapplication/vnd.genomatix.tuxedoapplication/vnd.geo+jsonapplication/vnd.geocube+xmlapplication/vnd.geogebra.fileapplication/vnd.geogebra.toolapplication/vnd.geometry-explorerapplication/vnd.geonextapplication/vnd.geoplanapplication/vnd.geospaceapplication/vnd.gerberapplication/vnd.globalplatform.card-content-mgtapplication/vnd.globalplatform.card-content-mgt-responseapplication/vnd.gmxapplication/vnd.google-earth.kml+xmlapplication/vnd.google-earth.kmzapplication/vnd.gov.sk.e-form+xmlapplication/vnd.gov.sk.e-form+zipapplication/vnd.gov.sk.xmldatacontainer+xmlapplication/vnd.grafeqapplication/vnd.gridmpapplication/vnd.groove-accountapplication/vnd.groove-helpapplication/vnd.groove-identity-messageapplication/vnd.groove-injectorapplication/vnd.groove-tool-messageapplication/vnd.groove-tool-templateapplication/vnd.groove-vcardapplication/vnd.hal+jsonapplication/vnd.hal+xmlapplication/vnd.HandHeld-Entertainment+xmlapplication/vnd.hbciapplication/vnd.hcl-bireportsapplication/vnd.heroku+jsonapplication/vnd.hhe.lesson-playerapplication/vnd.hp-HPGLapplication/vnd.hp-hpidapplication/vnd.hp-hpsapplication/vnd.hp-jlytapplication/vnd.hp-PCLapplication/vnd.hp-PCLXLapplication/vnd.httphoneapplication/vnd.hydrostatix.sof-dataapplication/vnd.hzn-3d-crosswordapplication/vnd.ibm.afplinedataapplication/vnd.ibm.electronic-mediaapplication/vnd.ibm.MiniPayapplication/vnd.ibm.modcapapplication/vnd.ibm.rights-managementapplication/vnd.ibm.secure-containerapplication/vnd.iccprofileapplication/vnd.ieee.1905application/vnd.igloaderapplication/vnd.immervision-ivpapplication/vnd.immervision-ivuapplication/vnd.ims.imsccv1p1application/vnd.ims.imsccv1p2application/vnd.ims.imsccv1p3application/vnd.ims.lis.v2.result+jsonapplication/vnd.ims.lti.v2.toolconsumerprofile+jsonapplication/vnd.ims.lti.v2.toolproxy.id+jsonapplication/vnd.ims.lti.v2.toolproxy+jsonapplication/vnd.ims.lti.v2.toolsettings+jsonapplication/vnd.ims.lti.v2.toolsettings.simple+jsonapplication/vnd.informedcontrol.rms+xmlapplication/vnd.infotech.projectapplication/vnd.infotech.project+xmlapplication/vnd.informix-visionaryapplication/vnd.innopath.wamp.notificationapplication/vnd.insors.igmapplication/vnd.intercon.formnetapplication/vnd.intergeoapplication/vnd.intertrust.digiboxapplication/vnd.intertrust.nncpapplication/vnd.intu.qboapplication/vnd.intu.qfxapplication/vnd.iptc.g2.catalogitem+xmlapplication/vnd.iptc.g2.conceptitem+xmlapplication/vnd.iptc.g2.knowledgeitem+xmlapplication/vnd.iptc.g2.newsitem+xmlapplication/vnd.iptc.g2.newsmessage+xmlapplication/vnd.iptc.g2.packageitem+xmlapplication/vnd.iptc.g2.planningitem+xmlapplication/vnd.ipunplugged.rcprofileapplication/vnd.irepository.package+xmlapplication/vnd.is-xprapplication/vnd.isac.fcsapplication/vnd.jamapplication/vnd.japannet-directory-serviceapplication/vnd.japannet-jpnstore-wakeupapplication/vnd.japannet-payment-wakeupapplication/vnd.japannet-registrationapplication/vnd.japannet-registration-wakeupapplication/vnd.japannet-setstore-wakeupapplication/vnd.japannet-verificationapplication/vnd.japannet-verification-wakeupapplication/vnd.jcp.javame.midlet-rmsapplication/vnd.jispapplication/vnd.joost.joda-archiveapplication/vnd.jsk.isdn-ngnapplication/vnd.kahootzapplication/vnd.kde.karbonapplication/vnd.kde.kchartapplication/vnd.kde.kformulaapplication/vnd.kde.kivioapplication/vnd.kde.kontourapplication/vnd.kde.kpresenterapplication/vnd.kde.kspreadapplication/vnd.kde.kwordapplication/vnd.kenameaappapplication/vnd.kidspirationapplication/vnd.Kinarapplication/vnd.koanapplication/vnd.kodak-descriptorapplication/vnd.las.las+xmlapplication/vnd.liberty-request+xmlapplication/vnd.llamagraphics.life-balance.desktopapplication/vnd.llamagraphics.life-balance.exchange+xmlapplication/vnd.lotus-1-2-3application/vnd.lotus-approachapplication/vnd.lotus-freelanceapplication/vnd.lotus-notesapplication/vnd.lotus-organizerapplication/vnd.lotus-screencamapplication/vnd.lotus-wordproapplication/vnd.macports.portpkgapplication/vnd.marlin.drm.actiontoken+xmlapplication/vnd.marlin.drm.conftoken+xmlapplication/vnd.marlin.drm.license+xmlapplication/vnd.marlin.drm.mdcfapplication/vnd.mason+jsonapplication/vnd.maxmind.maxmind-dbapplication/vnd.mcdapplication/vnd.medcalcdataapplication/vnd.mediastation.cdkeyapplication/vnd.meridian-slingshotapplication/vnd.MFERapplication/vnd.mfmpapplication/vnd.micro+jsonapplication/vnd.micrografx.floapplication/vnd.micrografx-igxapplication/vnd.microsoft.portable-executableapplication/vnd.miele+jsonapplication/vnd-mifapplication/vnd.minisoft-hp3000-saveapplication/vnd.mitsubishi.misty-guard.trustwebapplication/vnd.Mobius.DAFapplication/vnd.Mobius.DISapplication/vnd.Mobius.MBKapplication/vnd.Mobius.MQYapplication/vnd.Mobius.MSLapplication/vnd.Mobius.PLCapplication/vnd.Mobius.TXFapplication/vnd.mophun.applicationapplication/vnd.mophun.certificateapplication/vnd.motorola.flexsuiteapplication/vnd.motorola.flexsuite.adsiapplication/vnd.motorola.flexsuite.fisapplication/vnd.motorola.flexsuite.gotapapplication/vnd.motorola.flexsuite.kmrapplication/vnd.motorola.flexsuite.ttcapplication/vnd.motorola.flexsuite.wemapplication/vnd.motorola.iprmapplication/vnd.mozilla.xul+xmlapplication/vnd.ms-artgalryapplication/vnd.ms-asfapplication/vnd.ms-cab-compressedapplication/vnd.ms-3mfdocumentapplication/vnd.ms-excelapplication/vnd.ms-excel.addin.macroEnabled.12application/vnd.ms-excel.sheet.binary.macroEnabled.12application/vnd.ms-excel.sheet.macroEnabled.12application/vnd.ms-excel.template.macroEnabled.12application/vnd.ms-fontobjectapplication/vnd.ms-htmlhelpapplication/vnd.ms-imsapplication/vnd.ms-lrmapplication/vnd.ms-office.activeX+xmlapplication/vnd.ms-officethemeapplication/vnd.ms-playready.initiator+xmlapplication/vnd.ms-powerpointapplication/vnd.ms-powerpoint.addin.macroEnabled.12application/vnd.ms-powerpoint.presentation.macroEnabled.12application/vnd.ms-powerpoint.slide.macroEnabled.12application/vnd.ms-powerpoint.slideshow.macroEnabled.12application/vnd.ms-powerpoint.template.macroEnabled.12application/vnd.ms-projectapplication/vnd.ms-tnefapplication/vnd.ms-windows.printerpairingapplication/vnd.ms-wmdrm.lic-chlg-reqapplication/vnd.ms-wmdrm.lic-respapplication/vnd.ms-wmdrm.meter-chlg-reqapplication/vnd.ms-wmdrm.meter-respapplication/vnd.ms-word.document.macroEnabled.12application/vnd.ms-word.template.macroEnabled.12application/vnd.ms-worksapplication/vnd.ms-wplapplication/vnd.ms-xpsdocumentapplication/vnd.msa-disk-imageapplication/vnd.mseqapplication/vnd.msignapplication/vnd.multiad.creatorapplication/vnd.multiad.creator.cifapplication/vnd.musicianapplication/vnd.music-niffapplication/vnd.muvee.styleapplication/vnd.mynfcapplication/vnd.ncd.controlapplication/vnd.ncd.referenceapplication/vnd.nervanaapplication/vnd.netfpxapplication/vnd.neurolanguage.nluapplication/vnd.nintendo.snes.romapplication/vnd.nintendo.nitro.romapplication/vnd.nitfapplication/vnd.noblenet-directoryapplication/vnd.noblenet-sealerapplication/vnd.noblenet-webapplication/vnd.nokia.catalogsapplication/vnd.nokia.conml+wbxmlapplication/vnd.nokia.conml+xmlapplication/vnd.nokia.iptv.config+xmlapplication/vnd.nokia.iSDS-radio-presetsapplication/vnd.nokia.landmark+wbxmlapplication/vnd.nokia.landmark+xmlapplication/vnd.nokia.landmarkcollection+xmlapplication/vnd.nokia.ncdapplication/vnd.nokia.n-gage.ac+xmlapplication/vnd.nokia.n-gage.dataapplication/vnd.nokia.n-gage.symbian.installapplication/vnd.nokia.pcd+wbxmlapplication/vnd.nokia.pcd+xmlapplication/vnd.nokia.radio-presetapplication/vnd.nokia.radio-presetsapplication/vnd.novadigm.EDMapplication/vnd.novadigm.EDXapplication/vnd.novadigm.EXTapplication/vnd.ntt-local.content-shareapplication/vnd.ntt-local.file-transferapplication/vnd.ntt-local.ogw_remote-accessapplication/vnd.ntt-local.sip-ta_remoteapplication/vnd.ntt-local.sip-ta_tcp_streamapplication/vnd.oasis.opendocument.chartapplication/vnd.oasis.opendocument.chart-templateapplication/vnd.oasis.opendocument.databaseapplication/vnd.oasis.opendocument.formulaapplication/vnd.oasis.opendocument.formula-templateapplication/vnd.oasis.opendocument.graphicsapplication/vnd.oasis.opendocument.graphics-templateapplication/vnd.oasis.opendocument.imageapplication/vnd.oasis.opendocument.image-templateapplication/vnd.oasis.opendocument.presentationapplication/vnd.oasis.opendocument.presentation-templateapplication/vnd.oasis.opendocument.spreadsheetapplication/vnd.oasis.opendocument.spreadsheet-templateapplication/vnd.oasis.opendocument.textapplication/vnd.oasis.opendocument.text-masterapplication/vnd.oasis.opendocument.text-templateapplication/vnd.oasis.opendocument.text-webapplication/vnd.obnapplication/vnd.oftn.l10n+jsonapplication/vnd.oipf.contentaccessdownload+xmlapplication/vnd.oipf.contentaccessstreaming+xmlapplication/vnd.oipf.cspg-hexbinaryapplication/vnd.oipf.dae.svg+xmlapplication/vnd.oipf.dae.xhtml+xmlapplication/vnd.oipf.mippvcontrolmessage+xmlapplication/vnd.oipf.pae.gemapplication/vnd.oipf.spdiscovery+xmlapplication/vnd.oipf.spdlist+xmlapplication/vnd.oipf.ueprofile+xmlapplication/vnd.oipf.userprofile+xmlapplication/vnd.olpc-sugarapplication/vnd.oma.bcast.associated-procedure-parameter+xmlapplication/vnd.oma.bcast.drm-trigger+xmlapplication/vnd.oma.bcast.imd+xmlapplication/vnd.oma.bcast.ltkmapplication/vnd.oma.bcast.notification+xmlapplication/vnd.oma.bcast.provisioningtriggerapplication/vnd.oma.bcast.sgbootapplication/vnd.oma.bcast.sgdd+xmlapplication/vnd.oma.bcast.sgduapplication/vnd.oma.bcast.simple-symbol-containerapplication/vnd.oma.bcast.smartcard-trigger+xmlapplication/vnd.oma.bcast.sprov+xmlapplication/vnd.oma.bcast.stkmapplication/vnd.oma.cab-address-book+xmlapplication/vnd.oma.cab-feature-handler+xmlapplication/vnd.oma.cab-pcc+xmlapplication/vnd.oma.cab-subs-invite+xmlapplication/vnd.oma.cab-user-prefs+xmlapplication/vnd.oma.dcdapplication/vnd.oma.dcdcapplication/vnd.oma.dd2+xmlapplication/vnd.oma.drm.risd+xmlapplication/vnd.oma.group-usage-list+xmlapplication/vnd.oma.pal+xmlapplication/vnd.oma.poc.detailed-progress-report+xmlapplication/vnd.oma.poc.final-report+xmlapplication/vnd.oma.poc.groups+xmlapplication/vnd.oma.poc.invocation-descriptor+xmlapplication/vnd.oma.poc.optimized-progress-report+xmlapplication/vnd.oma.pushapplication/vnd.oma.scidm.messages+xmlapplication/vnd.oma.xcap-directory+xmlapplication/vnd.omads-email+xmlapplication/vnd.omads-file+xmlapplication/vnd.omads-folder+xmlapplication/vnd.omaloc-supl-initapplication/vnd.oma-scws-configapplication/vnd.oma-scws-http-requestapplication/vnd.oma-scws-http-responseapplication/vnd.openeye.oebapplication/vnd.openxmlformats-officedocument.custom-properties+xmlapplication/vnd.openxmlformats-officedocument.customXmlProperties+xmlapplication/vnd.openxmlformats-officedocument.drawing+xmlapplication/vnd.openxmlformats-officedocument.drawingml.chart+xmlapplication/vnd.openxmlformats-officedocument.drawingml.chartshapes+xmlapplication/vnd.openxmlformats-officedocument.drawingml.diagramColors+xmlapplication/vnd.openxmlformats-officedocument.drawingml.diagramData+xmlapplication/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xmlapplication/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xmlapplication/vnd.openxmlformats-officedocument.extended-properties+xmlapplication/vnd.openxmlformats-officedocument.presentationml.commentAuthors+xmlapplication/vnd.openxmlformats-officedocument.presentationml.comments+xmlapplication/vnd.openxmlformats-officedocument.presentationml.handoutMaster+xmlapplication/vnd.openxmlformats-officedocument.presentationml.notesMaster+xmlapplication/vnd.openxmlformats-officedocument.presentationml.notesSlide+xmlapplication/vnd.openxmlformats-officedocument.presentationml.presentationapplication/vnd.openxmlformats-officedocument.presentationml.presentation.main+xmlapplication/vnd.openxmlformats-officedocument.presentationml.presProps+xmlapplication/vnd.openxmlformats-officedocument.presentationml.slideapplication/vnd.openxmlformats-officedocument.presentationml.slide+xmlapplication/vnd.openxmlformats-officedocument.presentationml.slideLayout+xmlapplication/vnd.openxmlformats-officedocument.presentationml.slideMaster+xmlapplication/vnd.openxmlformats-officedocument.presentationml.slideshowapplication/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xmlapplication/vnd.openxmlformats-officedocument.presentationml.slideUpdateInfo+xmlapplication/vnd.openxmlformats-officedocument.presentationml.tableStyles+xmlapplication/vnd.openxmlformats-officedocument.presentationml.tags+xmlapplication/vnd.openxmlformats-officedocument.presentationml-templateapplication/vnd.openxmlformats-officedocument.presentationml.template.main+xmlapplication/vnd.openxmlformats-officedocument.presentationml.viewProps+xmlapplication/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xmlapplication/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xmlapplication/vnd.openxmlformats-officedocument.spreadsheetml.comments+xmlapplication/vnd.openxmlformats-officedocument.spreadsheetml.connections+xmlapplication/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xmlapplication/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xmlapplication/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xmlapplication/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xmlapplication/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xmlapplication/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xmlapplication/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xmlapplication/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xmlapplication/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xmlapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheetapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xmlapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xmlapplication/vnd.openxmlformats-officedocument.spreadsheetml.styles+xmlapplication/vnd.openxmlformats-officedocument.spreadsheetml.table+xmlapplication/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xmlapplication/vnd.openxmlformats-officedocument.spreadsheetml-templateapplication/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xmlapplication/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xmlapplication/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xmlapplication/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xmlapplication/vnd.openxmlformats-officedocument.theme+xmlapplication/vnd.openxmlformats-officedocument.themeOverride+xmlapplication/vnd.openxmlformats-officedocument.vmlDrawingapplication/vnd.openxmlformats-officedocument.wordprocessingml.comments+xmlapplication/vnd.openxmlformats-officedocument.wordprocessingml.documentapplication/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xmlapplication/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xmlapplication/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xmlapplication/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xmlapplication/vnd.openxmlformats-officedocument.wordprocessingml.footer+xmlapplication/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xmlapplication/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xmlapplication/vnd.openxmlformats-officedocument.wordprocessingml.settings+xmlapplication/vnd.openxmlformats-officedocument.wordprocessingml.styles+xmlapplication/vnd.openxmlformats-officedocument.wordprocessingml-templateapplication/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xmlapplication/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xmlapplication/vnd.openxmlformats-package.core-properties+xmlapplication/vnd.openxmlformats-package.digital-signature-xmlsignature+xmlapplication/vnd.openxmlformats-package.relationships+xmlapplication/vnd.oracle.resource+jsonapplication/vnd.orange.indataapplication/vnd.osa.netdeployapplication/vnd.osgeo.mapguide.packageapplication/vnd.osgi.bundleapplication/vnd.osgi.dpapplication/vnd.osgi.subsystemapplication/vnd.otps.ct-kip+xmlapplication/vnd.palmapplication/vnd.panoplyapplication/vnd.paos+xmlapplication/vnd.pawaafileapplication/vnd.pcosapplication/vnd.pg.formatapplication/vnd.pg.osasliapplication/vnd.piaccess.application-licenceapplication/vnd.picselapplication/vnd.pmi.widgetapplication/vnd.poc.group-advertisement+xmlapplication/vnd.pocketlearnapplication/vnd.powerbuilder6application/vnd.powerbuilder6-sapplication/vnd.powerbuilder7application/vnd.powerbuilder75application/vnd.powerbuilder75-sapplication/vnd.powerbuilder7-sapplication/vnd.preminetapplication/vnd.previewsystems.boxapplication/vnd.proteus.magazineapplication/vnd.publishare-delta-treeapplication/vnd.pvi.ptid1application/vwg-multiplexedapplication/vnd.pwg-xhtml-print+xmlapplication/vnd.qualcomm.brew-app-resapplication/vnd.Quark.QuarkXPressapplication/vnd.quobject-quoxdocumentapplication/vnd.radisys.moml+xmlapplication/vnd.radisys.msml-audit-conf+xmlapplication/vnd.radisys.msml-audit-conn+xmlapplication/vnd.radisys.msml-audit-dialog+xmlapplication/vnd.radisys.msml-audit-stream+xmlapplication/vnd.radisys.msml-audit+xmlapplication/vnd.radisys.msml-conf+xmlapplication/vnd.radisys.msml-dialog-base+xmlapplication/vnd.radisys.msml-dialog-fax-detect+xmlapplication/vnd.radisys.msml-dialog-fax-sendrecv+xmlapplication/vnd.radisys.msml-dialog-group+xmlapplication/vnd.radisys.msml-dialog-speech+xmlapplication/vnd.radisys.msml-dialog-transform+xmlapplication/vnd.radisys.msml-dialog+xmlapplication/vnd.radisys.msml+xmlapplication/vnd.rainstor.dataapplication/vnd.rapidapplication/vnd.realvnc.bedapplication/vnd.recordare.musicxmlapplication/vnd.recordare.musicxml+xmlapplication/vnd.renlearn.rlprintapplication/vnd.rig.cryptonoteapplication/vnd.route66.link66+xmlapplication/vnd.rs-274xapplication/vnd.ruckus.downloadapplication/vnd.s3smsapplication/vnd.sailingtracker.trackapplication/vnd.sbm.cidapplication/vnd.sbm.mid2application/vnd.scribusapplication/vnd.sealed.3dfapplication/vnd.sealed.csfapplication/vnd.sealed-docapplication/vnd.sealed-emlapplication/vnd.sealed-mhtapplication/vnd.sealed.netapplication/vnd.sealed-pptapplication/vnd.sealed-tiffapplication/vnd.sealed-xlsapplication/vnd.sealedmedia.softseal-htmlapplication/vnd.sealedmedia.softseal-pdfapplication/vnd.seemailapplication/vnd-semaapplication/vnd.semdapplication/vnd.semfapplication/vnd.shana.informed.formdataapplication/vnd.shana.informed.formtemplateapplication/vnd.shana.informed.interchangeapplication/vnd.shana.informed.packageapplication/vnd.SimTech-MindMapperapplication/vnd.siren+jsonapplication/vnd.smafapplication/vnd.smart.notebookapplication/vnd.smart.teacherapplication/vnd.software602.filler.form+xmlapplication/vnd.software602.filler.form-xml-zipapplication/vnd.solent.sdkm+xmlapplication/vnd.spotfire.dxpapplication/vnd.spotfire.sfsapplication/vnd.sss-codapplication/vnd.sss-dtfapplication/vnd.sss-ntfapplication/vnd.stepmania.packageapplication/vnd.stepmania.stepchartapplication/vnd.street-streamapplication/vnd.sun.wadl+xmlapplication/vnd.sus-calendarapplication/vnd.svdapplication/vnd.swiftview-icsapplication/vnd.syncml.dm.notificationapplication/vnd.syncml.dmddf+xmlapplication/vnd.syncml.dmtnds+wbxmlapplication/vnd.syncml.dmtnds+xmlapplication/vnd.syncml.dmddf+wbxmlapplication/vnd.syncml.dm+wbxmlapplication/vnd.syncml.dm+xmlapplication/vnd.syncml.ds.notificationapplication/vnd.syncml+xmlapplication/vnd.tao.intent-module-archiveapplication/vnd.tcpdump.pcapapplication/vnd.tmd.mediaflex.api+xmlapplication/vnd.tmobile-livetvapplication/vnd.trid.tptapplication/vnd.triscape.mxsapplication/vnd.trueappapplication/vnd.truedocapplication/vnd.ubisoft.webplayerapplication/vnd.ufdlapplication/vnd.uiq.themeapplication/vnd.umajinapplication/vnd.unityapplication/vnd.uoml+xmlapplication/vnd.uplanet.alertapplication/vnd.uplanet.alert-wbxmlapplication/vnd.uplanet.bearer-choiceapplication/vnd.uplanet.bearer-choice-wbxmlapplication/vnd.uplanet.cacheopapplication/vnd.uplanet.cacheop-wbxmlapplication/vnd.uplanet.channelapplication/vnd.uplanet.channel-wbxmlapplication/vnd.uplanet.listapplication/vnd.uplanet.listcmdapplication/vnd.uplanet.listcmd-wbxmlapplication/vnd.uplanet.list-wbxmlapplication/vnd.uplanet.signalapplication/vnd.valve.source.materialapplication/vnd.vcxapplication/vnd.vd-studyapplication/vnd.vectorworksapplication/vnd.verimatrix.vcasapplication/vnd.vidsoft.vidconferenceapplication/vnd.visioapplication/vnd.visionaryapplication/vnd.vividence.scriptfileapplication/vnd.vsfapplication/vnd.wap.sicapplication/vnd.wap-slcapplication/vnd.wap-wbxmlapplication/vnd-wap-wmlcapplication/vnd.wap.wmlscriptcapplication/vnd.webturboapplication/vnd.wfa.p2papplication/vnd.wfa.wscapplication/vnd.windows.devicepairingapplication/vnd.wmcapplication/vnd.wmf.bootstrapapplication/vnd.wolfram.mathematicaapplication/vnd.wolfram.mathematica.packageapplication/vnd.wolfram.playerapplication/vnd.wordperfectapplication/vnd.wqdapplication/vnd.wrq-hp3000-labelledapplication/vnd.wt.stfapplication/vnd.wv.csp+xmlapplication/vnd.wv.csp+wbxmlapplication/vnd.wv.ssp+xmlapplication/vnd.xacml+jsonapplication/vnd.xaraapplication/vnd.xfdlapplication/vnd.xfdl.webformapplication/vnd.xmi+xmlapplication/vnd.xmpie.cpkgapplication/vnd.xmpie.dpkgapplication/vnd.xmpie.planapplication/vnd.xmpie.ppkgapplication/vnd.xmpie.xlimapplication/vnd.yamaha.hv-dicapplication/vnd.yamaha.hv-scriptapplication/vnd.yamaha.hv-voiceapplication/vnd.yamaha.openscoreformat.osfpvg+xmlapplication/vnd.yamaha.openscoreformatapplication/vnd.yamaha.remote-setupapplication/vnd.yamaha.smaf-audioapplication/vnd.yamaha.smaf-phraseapplication/vnd.yamaha.through-ngnapplication/vnd.yamaha.tunnel-udpencapapplication/vnd.yaowemeapplication/vnd.yellowriver-custom-menuapplication/vnd.zulapplication/vnd.zzazz.deck+xmlapplication/voicexml+xmlapplication/vq-rtcpxrapplication/watcherinfo+xmlapplication/whoispp-queryapplication/whoispp-responseapplication/witaapplication/wordperfect5.1application/wsdl+xmlapplication/wspolicy+xmlapplication/x-www-form-urlencodedapplication/x400-bpapplication/xacml+xmlapplication/xcap-att+xmlapplication/xcap-caps+xmlapplication/xcap-diff+xmlapplication/xcap-el+xmlapplication/xcap-error+xmlapplication/xcap-ns+xmlapplication/xcon-conference-info-diff+xmlapplication/xcon-conference-info+xmlapplication/xenc+xmlapplication/xhtml-voice+xmlapplication/xhtml+xmlapplication/xmlapplication/xml-dtdapplication/xml-external-parsed-entityapplication/xml-patch+xmlapplication/xmpp+xmlapplication/xop+xmlapplication/xv+xmlapplication/yangapplication/yin+xmlapplication/zipapplication/zlibaudio/1d-interleaved-parityfecaudio/32kadpcmaudio/3gppaudio/3gpp2audio/ac3audio/AMRaudio/AMR-WBaudio/amr-wb+audio/aptxaudio/ascaudio/ATRAC-ADVANCED-LOSSLESSaudio/ATRAC-Xaudio/ATRAC3audio/basicaudio/BV16audio/BV32audio/clearmodeaudio/CNaudio/DAT12audio/dlsaudio/dsr-es201108audio/dsr-es202050audio/dsr-es202211audio/dsr-es202212audio/DVaudio/DVI4audio/eac3audio/encaprtpaudio/EVRCaudio/EVRC-QCPaudio/EVRC0audio/EVRC1audio/EVRCBaudio/EVRCB0audio/EVRCB1audio/EVRCNWaudio/EVRCNW0audio/EVRCNW1audio/EVRCWBaudio/EVRCWB0audio/EVRCWB1audio/exampleaudio/fwdredaudio/G719audio/G721audio/G722audio/G723audio/G726-16audio/G726-24audio/G726-32audio/G726-40audio/G728audio/G729audio/G729Daudio/G729Eaudio/GSMaudio/GSM-EFRaudio/GSM-HR-08audio/iLBCaudio/ip-mr_v2.5audio/L8audio/L16audio/L20audio/L24audio/LPCaudio/mobile-xmfaudio/MPAaudio/mp4audio/MP4A-LATMaudio/mpa-robustaudio/mpegaudio/mpeg4-genericaudio/oggaudio/opusaudio/PCMAaudio/PCMA-WBaudio/PCMUaudio/PCMU-WBaudio/prs.sidaudio/raptorfecaudio/REDaudio/rtp-enc-aescm128audio/rtploopbackaudio/rtp-midiaudio/rtxaudio/SMVaudio/SMV0audio/SMV-QCPaudio/sp-midiaudio/speexaudio/t140caudio/t38audio/telephone-eventaudio/toneaudio/UEMCLIPaudio/ulpfecaudio/VDVIaudio/VMR-WBaudio/vnd.3gpp.iufpaudio/vnd.4SBaudio/vnd.audiokozaudio/vnd.CELPaudio/vnd.cisco.nseaudio/vnd.cmles.radio-eventsaudio/vnd.cns.anp1audio/vnd.cns.inf1audio/vnd.dece.audioaudio/vnd.digital-windsaudio/vnd.dlna.adtsaudio/vnd.dolby.heaac.1audio/vnd.dolby.heaac.2audio/vnd.dolby.mlpaudio/vnd.dolby.mpsaudio/vnd.dolby.pl2audio/vnd.dolby.pl2xaudio/vnd.dolby.pl2zaudio/vnd.dolby.pulse.1audio/vnd.draaudio/vnd.dtsaudio/vnd.dts.hdaudio/vnd.dvb.fileaudio/vnd.everad.pljaudio/vnd.hns.audioaudio/vnd.lucent.voiceaudio/vnd.ms-playready.media.pyaaudio/vnd.nokia.mobile-xmfaudio/vnd.nortel.vbkaudio/vnd.nuera.ecelp4800audio/vnd.nuera.ecelp7470audio/vnd.nuera.ecelp9600audio/vnd.octel.sbcaudio/vnd.qcelpaudio/vnd.rhetorex.32kadpcmaudio/vnd.ripaudio/vnd.sealedmedia.softseal-mpegaudio/vnd.vmx.cvsdaudio/vorbisaudio/vorbis-configimage/cgmimage/exampleimage/fitsimage/g3faximage/jp2image/jpmimage/jpximage/naplpsimage/pngimage/prs.btifimage/prs.ptiimage/pwg-rasterimage/t38image/tiffimage/tiff-fximage/vnd.adobe.photoshopimage/vnd.airzip.accelerator.azvimage/vnd.cns.inf2image/vnd.dece.graphicimage/vnd-djvuimage/vnd.dwgimage/vnd.dxfimage/vnd.dvb.subtitleimage/vnd.fastbidsheetimage/vnd.fpximage/vnd.fstimage/vnd.fujixerox.edmics-mmrimage/vnd.fujixerox.edmics-rlcimage/vnd.globalgraphics.pgbimage/vnd.microsoft.iconimage/vnd.miximage/vnd.ms-modiimage/vnd.net-fpximage/vnd.radianceimage/vnd.sealed-pngimage/vnd.sealedmedia.softseal-gifimage/vnd.sealedmedia.softseal-jpgimage/vnd-svfimage/vnd.tencent.tapimage/vnd.valve.source.textureimage/vnd-wap-wbmpimage/vnd.xiffimage/vnd.zbrush.pcxmessage/CPIMmessage/delivery-statusmessage/disposition-notificationmessage/examplemessage/feedback-reportmessage/globalmessage/global-delivery-statusmessage/global-disposition-notificationmessage/global-headersmessage/httpmessage/imdn+xmlmessage/newsmessage/s-httpmessage/sipmessage/sipfragmessage/tracking-statusmessage/vnd.si.simpmessage/vnd.wfa.wscmodel/examplemodel/igesmodel/vnd.collada+xmlmodel/vnd-dwfmodel/vnd.flatland.3dmlmodel/vnd.gdlmodel/vnd.gs-gdlmodel/vnd.gtwmodel/vnd.moml+xmlmodel/vnd.mtsmodel/vnd.opengexmodel/vnd.parasolid.transmit-binarymodel/vnd.parasolid.transmit-textmodel/vnd.valve.source.compiled-mapmodel/vnd.vtumodel/x3d-vrmlmodel/x3d+fastinfosetmodel/x3d+xmlmultipart/appledoublemultipart/byterangesmultipart/encryptedmultipart/examplemultipart/form-datamultipart/header-setmultipart/relatedmultipart/reportmultipart/signedmultipart/voice-messagemultipart/x-mixed-replacetext/1d-interleaved-parityfectext/cache-manifesttext/calendartext/csstext/csvtext/csv-schematext/directorytext/dnstext/ecmascripttext/encaprtptext/exampletext/fwdredtext/grammar-ref-listtext/htmltext/javascripttext/jcr-cndtext/markdowntext/mizartext/n3text/parameterstext/provenance-notationtext/prs.fallenstein.rsttext/prs.lines.tagtext/raptorfectext/REDtext/rfc822-headerstext/rtftext/rtp-enc-aescm128text/rtploopbacktext/rtxtext/SGMLtext/t140text/tab-separated-valuestext/trofftext/turtletext/ulpfectext/uri-listtext/vcardtext/vnd-atext/vnd.abctext/vnd-curltext/vnd.debian.copyrighttext/vnd.DMClientScripttext/vnd.dvb.subtitletext/vnd.esmertec.theme-descriptortext/vnd.flytext/vnd.fmi.flexstortext/vnd.graphviztext/vnd.in3d.3dmltext/vnd.in3d.spottext/vnd.IPTC.NewsMLtext/vnd.IPTC.NITFtext/vnd.latex-ztext/vnd.motorola.reflextext/vnd.ms-mediapackagetext/vnd.net2phone.commcenter.commandtext/vnd.radisys.msml-basic-layouttext/vnd.si.uricataloguetext/vnd.sun.j2me.app-descriptortext/vnd.trolltech.linguisttext/vnd.wap.sitext/vnd.wap.sltext/vnd.wap-wmltext/vnd.wap.wmlscripttext/xmltext/xml-external-parsed-entityvideo/1d-interleaved-parityfecvideo/3gppvideo/3gpp2video/3gpp-ttvideo/BMPEGvideo/BT656video/CelBvideo/DVvideo/encaprtpvideo/examplevideo/H261video/H263video/H263-1998video/H263-2000video/H264video/H264-RCDOvideo/H264-SVCvideo/iso.segmentvideo/JPEGvideo/jpeg2000video/mj2video/MP1Svideo/MP2Pvideo/MP2Tvideo/mp4video/MP4V-ESvideo/MPVvideo/mpeg4-genericvideo/nvvideo/oggvideo/pointervideo/quicktimevideo/raptorfecvideo/rtp-enc-aescm128video/rtploopbackvideo/rtxvideo/SMPTE292Mvideo/ulpfecvideo/vc1video/vnd.CCTVvideo/vnd.dece.hdvideo/vnd.dece.mobilevideo/vnd.dece-mp4video/vnd.dece.pdvideo/vnd.dece.sdvideo/vnd.dece.videovideo/vnd.directv-mpegvideo/vnd.directv.mpeg-ttsvideo/vnd.dlna.mpeg-ttsvideo/vnd.dvb.filevideo/vnd.fvtvideo/vnd.hns.videovideo/vnd.iptvforum.1dparityfec-1010video/vnd.iptvforum.1dparityfec-2005video/vnd.iptvforum.2dparityfec-1010video/vnd.iptvforum.2dparityfec-2005video/vnd.iptvforum.ttsavcvideo/vnd.iptvforum.ttsmpeg2video/vnd.motorola.videovideo/vnd.motorola.videopvideo/vnd-mpegurlvideo/vnd.ms-playready.media.pyvvideo/vnd.nokia.interleaved-multimediavideo/vnd.nokia.videovoipvideo/vnd.objectvideovideo/vnd.radgamettools.binkvideo/vnd.radgamettools.smackervideo/vnd.sealed.mpeg1video/vnd.sealed.mpeg4video/vnd.sealed-swfvideo/vnd.sealedmedia.softseal-movvideo/vnd.uvvu-mp4video/vnd-vivo diff --git a/src/main/resources/inspireRequest.xsl b/src/main/resources/inspireRequest.xsl new file mode 100644 index 0000000..ad257e5 --- /dev/null +++ b/src/main/resources/inspireRequest.xsl @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Bad or missing verb + badVerb + + + + + + + + Sets not supported + noSetHierarchy + + + + + + + + badArgument + Bad argument: metadataPrefix + + + + + badArgument + Missing argument: identifier + + + + + + + + + + + + + + + cannotDisseminateFormat + Cannot disseminate format specified by metadataPrefix + + + + + noSetHierarchy + Sets not supported + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + full + + + + + + apiso:identifier + + + + + + + apiso:subject + opendata + + + + + + + + + + + + + + + + + + + + + apiso:Type + dataset + + + apiso:Type + datasetCollection + + + apiso:Type + series + + + apiso:Type + service + + + + + + + + + apiso:Modified + + + + + + + + + + apiso:Modified + + + + + diff --git a/src/main/resources/inspireResponse.xsl b/src/main/resources/inspireResponse.xsl new file mode 100644 index 0000000..dc2dde9 --- /dev/null +++ b/src/main/resources/inspireResponse.xsl @@ -0,0 +1,225 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The target catalog has no matching records + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The CSW server returned an exception + + + + + + + + The CSW server returned a SOAP Fault + + +
diff --git a/src/main/resources/iso2dcat.xsl b/src/main/resources/iso2dcat.xsl new file mode 100644 index 0000000..d7cadcc --- /dev/null +++ b/src/main/resources/iso2dcat.xsl @@ -0,0 +1,1667 @@ + + + + + + + + true + + license + keine + otherRestrictions + + 51:dcat_ap:: + :dcat_ap: + dcat_ap + dcat_ap + + + + + + + + + http://inspire.ec.europa.eu/metadata-codelist/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + conformant + notConformant + notEvaluated + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Resource + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[<gml:Envelope srsName="http://www.opengis.net/def/EPSG/0/4326"><gml:lowerCorner> + + </gml:lowerCorner><gml:upperCorner> + + </gml:upperCorner></gml:Envelope>]]> + + + <![CDATA[POLYGON(( + + + ))]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + http://www.w3.org/2001/XMLSchema#anyURI + + + + http://www.w3.org/2001/XMLSchema#string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + de + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/languageCodes.rdf b/src/main/resources/languageCodes.rdf new file mode 100644 index 0000000..76149d6 --- /dev/null +++ b/src/main/resources/languageCodes.rdf @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/log4j.xml b/src/main/resources/log4j.xml new file mode 100644 index 0000000..2d9ee69 --- /dev/null +++ b/src/main/resources/log4j.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/oai-pmhUtil.xsl b/src/main/resources/oai-pmhUtil.xsl new file mode 100644 index 0000000..a590d7e --- /dev/null +++ b/src/main/resources/oai-pmhUtil.xsl @@ -0,0 +1,89 @@ + + + + + ${oai-pmh.base.url.external} + + 100 + + oai_dc + dcat_ap + euro_dcat_ap + geodcat_ap_extended + iso19139 + + : + + GetRecord + ListRecords + ListIdentifiers + + + + + + + + + + + + + + + + + + + + + + badResumptionToken + + + + + + Unspecified error + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/themes.rdf b/src/main/resources/themes.rdf new file mode 100644 index 0000000..7768af9 --- /dev/null +++ b/src/main/resources/themes.rdf @@ -0,0 +1,843 @@ + + + + Атмосферни условия + Stav ovzduší + Atmosfæriske forhold + Atmosphärische Bedingungen + Ατμοσφαιρικές συνθήκες + Atmospheric Conditions + Condiciones atmosféricas + Atmosfääritingimused + Ilmakehän tila + Conditions atmosphériques + Légköri viszonyok + Condizioni atmosferiche + Atmosferos sąlygos + Atmosfēras apstākļi + Kondizzjonijiet atmosferiċi + Atmosferische omstandigheden + Warunki atmosferyczne + Condições atmosféricas + Conditii atmosferice + Atmosférické podmienky + Ozračje + Atmosfäriska förhållanden + + + Адреси + Adresy + Adresser + Adressen + Διευθύνσεις + Addresses + Direcciones + Aadressid + Osoitteet + Adresses + Címek + Indirizzi + Adresai + Adreses + Indirizzi + Adressen + Adresy + Endereços + Adrese + Adresy + Naslovi + Adresser + + + Селскостопански и водностопански съоръжения + Zemědělská a akvakulturní zařízení + Landbrugs- og akvakulturanlæg + Landwirtschaftliche Anlagen und Aquakulturanlagen + Γεωργικές εγκαταστάσεις και εγκαταστάσεις + υδατοκαλλιέργειας + Agricultural and Aquaculture Facilities + Instalaciones agrícolas y de acuicultura + Põllumajandus- ja vesiviljelusrajatised + Maatalous- ja vesiviljelylaitokset + Installations agricoles et aquacoles + Mezőgazdasági és akvakultúra-ágazati létesítmények + Impianti agricoli e di acquacoltura + Žemės ūkio ir akvakultūros infrastruktūra + Lauksaimniecības un akvakultūras iekārtas + Faċilitajiet agrikoli u ta' l-akwakultura + Faciliteiten voor landbouw en aquacultuur + Obiekty rolnicze oraz akwakultury + Instalações agrícolas e aquícolas + Instalatii agricole si pentru acvacultura + Poľnohospodárske zariadenia a zariadenia akvakultúry + Objekti in naprave za kmetijstvo in ribogojstvo + Jordbruks- och vattenbruksanläggningar + + + Управление на територията/ограничени/регулирани зони и отчетни + единици + Správní oblasti/chráněná pásma/regulovaná území a jednotky + podávající hlášení + Forvaltede og regulerede områder samt områder med brugsbegrænsning + og indberetningsenheder + Bewirtschaftungsgebiete/Schutzgebiete/geregelte Gebiete und + Berichterstattungseinheiten + Ζώνες διαχείρισης/περιορισμού/ρύθμισης εκτάσεων και μονάδες + αναφοράς + Area Management Restriction Regulation Zones and Reporting + units + Zonas sujetas a ordenación, a restricciones o reglamentaciones y + unidades de notificación + Üldplaneering/piirangu-/reguleeritud tsoonid ja aruandlusüksused + Aluesuunnittelun, rajoitusten ja sääntelyn piiriin kuuluvat alueet + ja raportointiyksiköt + Zones de gestion, de restriction ou de réglementation et unités de + déclaration + Területgazdálkodási/-korlátozási/-szabályozási övezetek és + adatszolgáltató egységek + Zone sottoposte a gestione/limitazioni/regolamentazione e unità con + obbligo di comunicare dati + Tvarkomos teritorijos, ribojamos ir reglamentuojamos zonos bei + vienetai, už kuriuos atsiskaitoma + Apgabala pārvaldības/ierobežojumu/reglamentētas zonas un ziņošanas + vienības + Amministrazzjoni ta' żoni/restrizzjoni/żoni regolati u unitajiet + ta' rapportar + Gebiedsbeheer, gebieden waar beperkingen gelden, gereguleerde + gebieden en rapportage-eenheden + Gospodarowanie obszarem/strefy ograniczone/regulacyjne oraz + jednostki sprawozdawcze + Zonas de gestão/restrição/regulamentação e unidades de + referência + Zone de administrare/restrictie/reglementare si unitati de + raportare + Spravované/obmedzené/regulované zóny a jednotky podávajúce + správy + Območja upravljanja/zaprta območja/regulirana območja in + poročevalske enote + Områden med särskild förvaltning/begränsningar/reglering samt + enheter för rapportering + + + Административни единици + Správní jednotky + Administrative enheder + Verwaltungseinheiten + Διοικητικές ενότητες + Administrative Units + Unidades administrativas + Haldusüksused + Hallinnolliset yksiköt + Unités administratives + Közigazgatási egységek + Unità amministrative + Administraciniai vienetai + Administratīvas vienības + Unitajiet amministrattivi + Administratieve eenheden + Jednostki administracyjne + Unidades administrativas + Unităţi administrative + Správne jednotky + Upravne enote + Administrativa enheter + + + Биогеографски региони + Bioregiony + Biogeografiske regioner + Biogeografische Regionen + Βιογεωγραφικές περιοχές + Bio-geographical Regions + Regiones biogeográficas + Bio-geograafilised piirkonnad + Biomaantieteelliset alueet + Régions biogéographiques + Biogeográfiai régiók + Regioni biogeografiche + Biogeografiniai regionai + Bioģeogrāfiskie reģioni + Reġjuni bijo-ġeografiċi + Biogeografische gebieden + Regiony biogeograficzne + Regiões biogeográficas + Regiuni biogeografice + Biogeografické regióny + Biogeografske regije + Biogeografiska regioner + + + Сгради + Budovy + Bygninger + Gebäude + Κτίρια + Buildings + Edificios + Ehitised + Rakennukset + Bâtiments + Épületek + Edifici + Pastatai + Ēkas + Bini + Gebouwen + Budynki + Edifícios + Cladiri + Stavby + Stavbe + Byggnader + + + Кадастрални парцели + Katastrální parcely + Matrikulære parceller + Flurstücke/Grundstücke (Katasterparzellen) + Γεωτεμάχια κτηματολογίου + Cadastral Parcels + Parcelas catastrales + Katastriüksused + Kiinteistöt + Parcelles cadastrales + Kataszteri parcellák + Parcelle catastali + Kadastro sklypai + Kadastrāli zemes gabali + Pakketti katastali + Kadastrale percelen + Działki katastralne + Parcelas cadastrais + Parcele cadastrale + Katastrálne parcely + Katastrske parcele + Fastighetsområden + + + Съоръжения за управление на околната среда + Zařízení pro sledování životního prostředí + Miljøovervågningsfaciliteter + Umweltüberwachung + Εγκαταστάσεις παρακολούθησης του περιβάλλοντος + Environmental Monitoring Facilities + Instalaciones de observación del medio ambiente + Keskkonnaseirerajatised + Ympäristön tilan seurantalaitteet + Installations de suivi environnemental + Környezetvédelmi monitoringlétesítmények + Impianti di monitoraggio ambientale + Aplinkos stebėsenos priemonės + Vides monitoringa iekārtas + Faċilitajiet ta' monitoraġġ ambjentali + Milieubewakingsvoorzieningen + Urządzenia do monitorowania środowiska + Instalações de monitorização do ambiente + Instalatii de supraveghere a mediului + Zariadenia na monitorovanie životného prostredia + Naprave in objekti za monitoring okolja + Anläggningar för miljöövervakning + + + Релеф + Nadmořská výška + Højde + Höhe + Υψομετρία + Elevation + Elevaciones + Kõrgused + Korkeus + Altitude + Domborzat + Elevazione + Aukštis + Augstums + Elevazzjoni + Hoogte + Ukształtowanie terenu + Altitude + Elevatie + Výška + Digitalni model višin + Höjd + + + Енергийни източници + Energetické zdroje + Energiressourcer + Energiequellen + Ενεργειακοί πόροι + Energy Resources + Recursos energéticos + Energiaressursid + Energiavarat + Sources d'énergie + Energiaforrások + Risorse energetiche + Energijos ištekliai + Enerģijas resursi + Riżorsi ta' enerġija + Energiebronnen + Zasoby energetyczne + Recursos energéticos + Resurse energetice + Zdroje energie + Energetski viri + Energiresurser + + + Местообитания и биотопи + Stanoviště a biotopy + Levesteder og biotoper + Lebensräume und Biotope + Ενδιαιτήματα και βιότοποι + Habitats and Biotopes + Hábitats y biotopos + Elupaigad ja biotoobid + Elinympäristöt ja biotoopit + Habitats et biotopes + Élőhelyek és biotópok + Habitat e biotopi + Buveinės ir biotopai + Dzīvotnes un biotopi + L-abitati naturali u l-bijotopi + Habitats en biotopen + Siedliska i obszary przyrodniczo jednorodne + Habitats e biótopos + Habitate si biotopuri + Habitaty a biotopy + Habitati in biotopi + Naturtyper och biotoper + + + Здраве и безопасност на човека + Lidské zdraví a bezpečnost + Sikkerhed + Gesundheit und Sicherheit + Ανθρώπινη υγεία και ασφάλεια + Human Health and Safety + Salud y seguridad humanas + Inimeste tervis ja ohutus + Väestön terveys ja turvallisuus + Santé et sécurité des personnes + Emberi egészség és biztonság + Salute umana e sicurezza + Žmonių sveikata ir sauga + Cilvēku veselība un drošība + Is-saħħa u s-siġurtà tal-bniedem + Menselijke gezondheid en veiligheid + Zdrowie i bezpieczeństwo ludzi + Saúde humana e segurança + Sanatate si siguranta umana + Ľudské zdravie a bezpečnosť + Zdravje in varnost prebivalstva + Människors hälsa och säkerhet + + + Геология + Geologie + Geologi + Geologie + Γεωλογία + Geology + Geología + Geoloogia + Geologia + Géologie + Földtan + Geologia + Geologija + Ģeoloģija + Ġeologija + Geologie + Geologia + Geologia + Geologie + Geológia + Geologija + Geologi + + + Географски координатни системи + Zeměpisné soustavy souřadnicových sítí + Geografiske kvadratnetsystemer + Geografische Gittersysteme + Συστήματα γεωγραφικού καννάβου + Geographical grid systems + Sistema de cuadrículas geográficas + Geograafilised ruutvõrgud + Paikannusruudustot + Systèmes de maillage géographique + Földrajzi rácsrendszerek + Sistemi di griglie geografiche + Geografinio tinklelio sistemos + Ģeogrāfisko koordinātu tīklu sistēmas + Sistemi ta' grilji ġeografiċi + Geografisch rastersysteem + Systemy siatek geograficznych + Sistemas de quadrículas geográficas + Sisteme de caroiaj geografic + Geografické systémy sietí + Geografska koordinatna mreža + Geografiska rutnätssystem + + + Географски наименования + Zeměpisné názvy + Stednavne + Geografische Bezeichnungen + Τοπωνύμια + Geographical Names + Nombres geográficos + Geograafilised nimed + Paikannimet + Dénominations géographiques + Földrajzi nevek + Nomi geografici + Geografiniai pavadinimai + Toponīmi + Ismijiet ġeografiċi + Geografische namen + Nazwy geograficzne + Toponímia + Denumiri geografice + Zemepisné názvy + Zemljepisna imena + Geografiska namn + + + Хидрография + Vodopis + Hydrograf + Gewässernetz + Υδρογραφία + Hydrography + Hidrografía + Hüdrograafia + Hydrografia + Hydrographie + Vízrajz + Idrografia + Hidrografija + Hidrogrāfija + Idrografija + Hydrografie + Hydrografia + Hidrografia + Hidrografie + Hydrografia + Hidrografija + Hydrografi + + + Земна покривка + Krajinný pokryv + Arealdække + Bodenbedeckung + Κάλυψη γης + Land Cover + Cubierta terrestre + Maakate + Maanpeite + Occupation des terres + A felszín borítása + Copertura del suolo + Žemės danga + Zemes virsma + Kopertura ta' l-art + Bodemgebruik + Użytkowanie terenu + Ocupação do solo + Acoperire terestra + Krajinná pokrývka (land cover) + Pokrovnost tal + Landtäcke + + + Ползване на земята + Využití území + Arealanvendelse + Bodennutzung + Χρήσεις γης + Land Use + Uso del suelo + Maakasutus + Maankäyttö + Usage des sols + Földhasználat + Utilizzo del territorio + Žemės naudojimas + Zemes izmantošana + Użu ta' l-art + Landgebruik + Zagospodarowanie przestrzenne + Uso do solo + Utilizarea terenului + Využitie územia + Namenska raba tal + Markanvändning + + + Метеорологични географски характеристики + Zeměpisné meteorologické prvky + Meteorologisk-geografiske forhold + Meteorologisch-geografische Kennwerte + Μετεωρολογικά γεωγραφικά χαρακτηριστικά + Meteorological geographical features + Aspectos geográficos de carácter meteorológico + Meteoroloogilis-geograafilised tunnusjooned + Ilmaston maantieteelliset ominaispiirteet + Caractéristiques géographiques météorologiques + Meteorológiai földrajzi jellemzők + Elementi geografici meteorologici + Meteorologinės geografinės sąlygos + Meteoroloģiski ģeogrāfiskie raksturlielumi + Karatteristiċi ġeografiċi meteoroloġiċi + Meteorologische geografische kenmerken + Warunki meteorologiczno-geograficzne + Características geometeorológicas + Caracteristici geografice meteorologice + Meteorologické geografické prvky + Meteorološke značilnosti + Geografiska meteorologiska förhållanden + + + Минерални ресурси + Nerostné suroviny + Mineralressourcer + Mineralische Bodenschätze + Ορυκτοί πόροι + Mineral Resources + Recursos minerales + Maavarad + Mineraalivarat + Ressources minérales + Ásványi nyersanyagok + Risorse minerarie + Naudingosios iškasenos + Derīgo izrakteņu resursi + Riżorsi minerali + Minerale bronnen + Zasoby mineralne + Recursos minerais + Resurse minerale + Zdroje nerastných surovín + Mineralni viri + Mineralfyndigheter + + + Природни рискови зони + Oblasti ohrožené přírodními riziky + Områder med naturlige risici + Gebiete mit naturbedingten Risiken + Ζώνες φυσικών κινδύνων + Natural Risk Zones + Zonas de riesgos naturales + Looduslikud ohutsoonid + Luonnonriskialueet + Zones à risque naturel + Természeti kockázati zónák + Zone a rischio naturale + Gamtinių pavojų zonos + Dabas apdraudējuma zonas + Żoni ta' riskju naturali + Gebieden met natuurrisico's + Strefy zagrożenia naturalnego + Zonas de risco natural + Zone de risc natural + Zóny prírodného rizika + Območja nevarnosti naravnih nesreč + Naturliga riskområden + + + Океанографски географски характеристики + Zeměpisné oceánografické prvky + Oceanografiske/geografiske forhold + Ozeanografisch-geografische Kennwerte + Ωκεανογραφικά γεωγραφικά χαρακτηριστικά + Oceanographic Geographical Features + Rasgos geográficos oceanográficos + Okeanograafilis-geograafilised tunnusjooned + Merentutkimuksen maantieteelliset ominaispiirteet + Caractéristiques géographiques océanographiques + Oceanográfiai földrajzi jellemzők + Elementi geografici oceanografici + Okeanografinės geografinės sąlygos + Okeanogrāfiski ģeogrāfiskie raksturlielumi + Karatteristiċi ġeografiċi oċeanografiċi + Oceanografische geografische kenmerken + Warunki oceanograficzno-geograficzne + Características oceanográficas + Caracteristici geografice oceanografice + Oceánografické geografické prvky + Oceanogeografske značilnosti + Geografiska oceanografiska förhållanden + + + Ортоизображение + Ortofotosnímky + Ortofoto + Orthofotografie + Ορθοφωτογραφία + Orthoimagery + Ortoimágenes + Ortokujutised + Ortoilmakuvat + Ortho-imagerie + Ortofotók + Orto immagini + Ortofotografinis vaizdavimas + Ortofotogrāfija + Orthoimagery + Orthobeeldvorming + Sporządzanie ortoobrazów + Ortoimagens + Ortoimagini + Ortometria + Ortofoto + Ortofoto + + + Разпределение на населението — демография + Rozložení obyvatelstva – demografie + Befolkningsfordeling — demografi + Verteilung der Bevölkerung — Demografie + Κατανομή πληθυσμού — δημογραφία + Population Distribution - Demography + Distribución de la población — demografía + Elanikkonna jaotumine – demograafia + Väestöjakauma – demografia + Répartition de la population — démographie + A népesség eloszlása – demográfia + Distribuzione della popolazione — demografia + Gyventojų pasiskirstymas – demografija + Iedzīvotāju sadalījums – demogrāfija + Distribuzzjoni tal-popolazzjoni – demografija + Spreiding van de bevolking — demografie + Rozmieszczenie ludności – demografia + Distribuição da população — demografia + Repartizarea populaţiei – demografie + Rozmiestnenie obyvateľstva – demografia + Porazdelitev prebivalstva – demografski podatki + Befolkningsfördelning – demografi + + + Производствени и промишлени съоръжения + Výrobní a průmyslová zařízení + Produktions- og industrifaciliteter + Produktions- und Industrieanlagen + Εγκαταστάσεις παραγωγής και βιομηχανικές εγκαταστάσεις + Production and Industrial Facilities + Instalaciones de producción e industriales + Tootmis- ja tööstusrajatised + Tuotanto- ja teollisuuslaitokset + Lieux de production et sites industriels + Termelő és ipari létesítmények + Produzione e impianti industriali + Gamybos ir pramonės įrenginiai + Ražošanas un rūpniecības iekārtas + Faċilitajiet ta' produzzjoni u industrijali + Faciliteiten voor productie en industrie + Obiekty produkcyjne i przemysłowe + Instalações industriais e de produção + Instalatii de productie si industriale + Výrobné a priemyselné zariadenia + Proizvodni in industrijski objekti in naprave + Produktions- och industrianläggningar + + + Защитени обекти + Chráněná území + Beskyttede lokaliteter + Schutzgebiete + Προστατευόμενες τοποθεσίες + Protected Sites + Lugares protegidos + Kaitsealused kohad + Suojellut alueet + Sites protégés + Védett helyek + Siti protetti + Saugomos teritorijos + Aizsargājamas teritorijas + Siti protetti + Beschermde gebieden + Obszary chronione + Sítios protegidos + Zone protejate + Chránené územia + Zavarovana območja + Skyddade områden + + + Координатни справочни системи + Souřadnicové referenční systémy + Koordinatsystemer + Koordinatenreferenzsysteme + Συστήματα συντεταγμένων + Coordinate reference systems + Sistemas de coordenadas de referencia + Koordinaatsüsteemid + Koordinaattijärjestelmät + Référentiels de coordonnées + Koordinátarendszerek + Sistemi di coordinate + Koordinačių atskaitos sistemos + Koordinātu atskaites sistēmas + Sistemi ta' referenza ta' koordinati + Systemen voor verwijzing door middel van coördinaten + Systemy odniesienia za pomocą współrzędnych + Sistemas de referencia + Sisteme de coordonate de referinţă + Súradnicové referenčné systémy + Referenčni koordinatni sistemi + Referenskoordinatsystem + + + Почва + Půda + Jord + Boden + Έδαφος + Soil + Suelo + Pinnas + Maaperä + Sols + Talaj + Suolo + Dirvožemis + Augsne + Ħamrija + Bodem + Gleba + Solo + Soluri + Pôda + Tla + Mark + + + Морски региони + Mořské oblasti + Havområder + Meeresregionen + Θαλάσσιες περιοχές + Sea Regions + Regiones marinas + Merepiirkonnad + Merialueet + Régions maritimes + Tengeri régiók + Regioni marine + Jūrų regionai + Jūru reģioni + Reġjuni tal-baħar + Zeegebieden + Regiony morskie + Regiões marinhas + Regiuni maritime + Morské regióny + Morske regije + Havsområden + + + Разпределение на видовете + Rozložení druhů + Artsfordeling + Verteilung der Arten + Κατανομή ειδών + Species Distribution + Distribución de las especies + Liikide jaotumine + Lajien levinneisyys + Répartition des espèces + A fajok megoszlása + Distribuzione delle specie + Rūšių pasiskirstymas + Sugu izplatība + Distribuzzjoni ta' l-ispeċi + Spreiding van soorten + Rozmieszczenie gatunków + Distribuição das espécies + Repartizarea speciilor + Výskyt druhov + Porazdelitev vrst + Arters utbredning + + + Статистически единици + Statistické jednotky + Statistiske enheder + Statistische Einheiten + Στατιστικές μονάδες + Statistical Units + Unidades estadísticas + Statistilised üksused + Tilastoyksiköt + Unités statistiques + Statisztikai egységek + Unità statistiche + Statistiniai vienetai + Statistikas vienības + Unitajiet statistiċi + Statistische eenheden + Jednostki statystyczne + Unidades estatísticas + Unitati statistice + Štatistické jednotky + Statistični okoliši + Statistiska enheter + + + Транспортни мрежи + Dopravní sítě + Transportnet + Verkehrsnetze + Δίκτυα μεταφορών + Transport Networks + Redes de transporte + Transpordivõrgud + Liikenneverkot + Réseaux de transport + Közlekedési hálózatok + Reti di trasporto + Transporto tinklai + Transporta tīkli + Networks tat-trasport + Vervoersnetwerken + Sieci transportowe + Redes de transporte + Reţele de transport + Dopravné siete + Prometna omrežja + Transportnät + + + Комунално-битови и обществени услуги + Veřejné služby a služby veřejné správy + Offentlig forsyningsvirksomhed og offentlige + tjenesteydelser + Versorgungswirtschaft und staatliche Dienste + Επιχειρήσεις κοινής ωφελείας και κρατικές υπηρεσίες + Utility and Governmental Services + Servicios de utilidad pública y estatales + Kommunaal- ja riiklikud teenused + Yleishyödylliset ja muut julkiset palvelut + Services d'utilité publique et services publics + Közüzemi és közszolgáltatások + Servizi di pubblica utilità e servizi amministrativi + Komunalinės įmonės ir valstybės tarnybos + Komunālie un valsts dienesti + Servizzi ta' utilità u tal-gvern + Nutsdiensten en overheidsdiensten + Usługi użyteczności publicznej i służby państwowe + Serviços de utilidade pública e do Estado + Servicii de utilitate publica si servicii publice + Verejné a štátne služby + Komunalne in javne storitve + Allmännyttiga och offentliga tjänster + + diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..396c4dc --- /dev/null +++ b/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,36 @@ + + + + OAI PMH Web Application for ODP Geo-Harvesting + + + + contextConfigLocation + classpath:camel-oai-pmh.xml + + + + + org.springframework.web.context.ContextLoaderListener + + + + + CamelServlet + org.apache.camel.component.servlet.CamelHttpTransportServlet + 1 + + + + + CamelServlet + /omdf/* + + + + index.html + + + diff --git a/src/main/webapp/index.html b/src/main/webapp/index.html new file mode 100644 index 0000000..91e42f5 --- /dev/null +++ b/src/main/webapp/index.html @@ -0,0 +1,150 @@ + + + + + + + + + open.nrw-fassaden sample + + + + + + +
+ +
+

open.nrw-fassaden (Version: 0.9.0-SNAPSHOT)

+

Facades for open.nrw: Provide CKAN data to the catalog service of the Geoportal and vice versa.

+
Overview
+
    +
  • Provides an OAI-PMH interface to harvest ISO 19139 metadata from CSW (INSPIRE catalogs) and returns it in DCAT-AP schema
  • +
  • Provides an OAI-PMH interface to harvest DCAT-AP metadata from CKAN and returns it in ISO 19139 schema (STILL WORK IN PROGRESS)
  • +
  • Deployed as a web application in Java servlet container
  • +
  • Implementation is based on Apache Camel
  • +
+
Requirements
+
    +
  • JRE 8
  • +
  • Tomcat 8
  • +
+
Building with Apache Maven
+
    +
  1. +

    cd to the root folder of this project (the folder that contains the pom.xml and this readme)

    +
  2. +
  3. +

    from the command line run

    +
     > mvn clean package
    +
    +
  4. +
+
Deployment
+

Use your preferred method to deploy the webapp in Tomcat, e.g.:

+
    +
  • Copy the war file to the Tomcat webapps folder
  • +
  • Create a context file in the Tomcat host folder
  • +
+
Configuration
+

Logging can be configured with the log4j framework (see http://logging.apache.org/log4j/1.2/). + By default a logfile is created here: tomcat/logs/open-nrw-ci-fassaden.log.

+

If you build with the env-dev profile, you can set your parameters during build, by including a build.poperties + file in the modile base directory. Please check the pom.xml + to see how parameters are set. The parameters can be changed after deployment in the file + camel-oai-pmh.properties. The available parameters are:

+
    +
  • oai-pmh.base.url.external: URL that external clients use to access the OAI-PMH interface web application
  • +
  • db.item.csw.TYPE: should be one of inspire, inspireSoap11 or inspireSoap11, depending on the protocol of the Geoportal
  • +
  • db.item.csw.URL: GetRecords URL of the geoportal to be harvested
  • +
  • db.item.ckan.TYPE: currently only ckan is supported
  • +
  • db.item.ckan.URL: CKAN catalog URL to be harvested
  • +
+

Note on HTTPS: There are a few catalogs that use HTTPS connections. However, some use self-signed certificates, or + certificates from a CA that is not trusted by the JVM per default. In order to allow integration of such catalogs, + the Facades trusts all server certificates. Of course this is insecure, as it makes the harvester vulnerable + to man-in-the-middle attacks. But the same is true for catalogs that are connected via plain HTTP (ca. 90% of + catalogs), so this vulnerability is inherent as long as HTTP connections are allowed. + If you require trusted connections via HTTPS, just remove the bean + eu.odp.harvest.geo.oai.http.AllowAllHttpClientConfig from the Apache Camel Spring configuration + (/WEB-INF/classes/camel-oai-pmh.xml).

+

Usage

+
OAI-PMH
+

Each Facades is exposed by a distinct HTTP endpoint. The endpoints are reached with this URL pattern:

+
    <tomcat-base-url><webapp-path>/omdf/<harvester>?<verb=operation>&<OPTIONAL argument>
+
+

So for example if tomcat-base-url is "http://localhost:8080", webapp-path is "/" and + you have a harvester "gp-csw" for the Geoportal, you can reach it with this URL:

+
    http://localhost:8080/omdf/gp-csw
+
+

a harvester "gp-ckan" for the NRW open data portal:

+
    http://localhost:8080/omdf/gp-ckan
+
+

You can issue OAI-PMH requests to all of the available endpoints. All endpoints support the same set of operations.

+

Supported operations:

+
    +
  • ListIdentifiers: This verb is used to retrieve the identifiers of records that can be harvested from a repository. Optional arguments permit selectivity of the identifiers - based on their membership in a specific Set in the repository or based on their modification, creation, or deletion within a specific date range.
  • +
  • ListRecords: This verb is used to harvest records from a repository. Optional arguments permit selective harvesting of records based on set membership and/or datestamp. Depending on the repository's support for deletions, a returned header may have a status attribute of "deleted" if a record matching the arguments specified in the request has been deleted. No metadata will be present for records with deleted status.
  • +
  • GetRecord: This verb is used to retrieve an individual metadata record from a repository. Required arguments specify the identifier of the item from which the record is requested and the format of the metadata that should be included in the record. Depending on the level at which a repository tracks deletions, a header with a "deleted" value for the status attribute may be returned, in case the metadata format specified by the metadataPrefix is no longer available from the repository or from the specified item.
  • +
+

Operations arguments:

+ +
Further Reading
+ +
+ + diff --git a/src/main/webapp/multimarkdown_default.css b/src/main/webapp/multimarkdown_default.css new file mode 100644 index 0000000..039efbc --- /dev/null +++ b/src/main/webapp/multimarkdown_default.css @@ -0,0 +1,221 @@ +/* + ~ Copyright (c) 2015-2016 Vladimir Schneider vladimir.schneider@gmail.com + ~ + ~ Licensed to the Apache Software Foundation (ASF) under one + ~ or more contributor license agreements. See the NOTICE file + ~ distributed with this work for additional information + ~ regarding copyright ownership. The ASF licenses this file + ~ to you under the Apache License, Version 2.0 (the + ~ "License"); you may not use this file except in compliance + ~ with the License. You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, + ~ software distributed under the License is distributed on an + ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + ~ KIND, either express or implied. See the License for the + ~ specific language governing permissions and limitations + ~ under the License. + +*/ + +/* + Default Color Theme for the MultiMarkdown plugin +*/ + + +address { + color: #333366; +} + +kbd, +span.kbd{ + background-color: #fcfcfc; + border: solid 1px #ccc; + box-shadow: inset 0 -1px 0 #bbb; + color: #555; +} + +body.multimarkdown-preview, +body.multimarkdown-wiki-preview { + color: #222222; +} + +img.local-only { + border: 2px solid #b0a803; +} + +img.absent { + border: 2px solid #B00020; + color: #B00020; +} + +/********************************** + * Anchor Related Formatting + **********************************/ + +a { + color: #4183C4; +} + +a.mail-link { + color: #aa33bb; +} + +a.absent { + color: #B00020; +} + +a.local-only { + color: #be8000; +} + +/********************************** + * Header Related Formatting + **********************************/ +div.page-header { + background-color: #E0E0E0; +} + +div.page-header a { + color: #000; +} + +h2, +h2 a { + color: #222222; +} + +h1, +h3, +h4, +h5, +h1 a, +h3 a, +h4 a, +h5 a { + color: #222222; +} + +h6, +h6 a { + color: #777777; +} + +h1 { + border-bottom: 1px solid #bbbbbb; +} + +h2 { + border-bottom: 1px solid #bbbbbb; +} + +/********************************** + * Block Quote Related Formatting + **********************************/ + +blockquote { + border-left: 4px solid #cccccc; + color: #666666; +} + +blockquote h1, +blockquote h2, +blockquote h3, +blockquote h4, +blockquote h5, +blockquote h6, +blockquote h1 a, +blockquote h2 a, +blockquote h3 a, +blockquote h4 a, +blockquote h5 a, +blockquote h6 a { + color: #666666; +} + +/********************************** +* Code Block Related Formatting + **********************************/ + +tt, +span.tt { + border: 1px solid #eaeaea; + background-color: #f8f8f8; +} + +pre code, +pre span.code { + color: #222222; +} + +pre { + background-color: #f8f8f8; + border: 1px solid #cccccc; +} + +code, +span.code { + color: #B00020; + background-color: #f8f8f8; +} + +/********************************** + * Table Related formatting + **********************************/ + +table tr th { + border: solid 1px #d4d4d4; +} + +table tr.thead-first-child, +table tr.thead-odd-child { + background-color: #e8e8e8; +} + +table tr.thead-even-child { + background-color: #dcdcdc; +} + +table tr td { + border: solid 1px #dddddd; +} + +table tr.tbody-first-child, +table tr.tbody-odd-child { + background-color: #ffffff; +} + +table tr.tbody-even-child { + background-color: #f4f4f4; +} + +body table { + border: solid 1px #dddddd; + background-color: #ffffff; +} + +/************************************ + * Horizontal Rule Related Formatting + ************************************/ + +hr { +} + +div.hr { + border-top: 1px solid #bbbbbb; +} + +.search-highlight { + color: #000; + padding:1px 0 1px 0; + background-color: #ffff00; +} + +.selection-highlight { + color: #FFFFFF; + padding:1px 0 1px 0; + background-color: #5974AB; +} + diff --git a/src/main/webapp/multimarkdown_layout.css b/src/main/webapp/multimarkdown_layout.css new file mode 100644 index 0000000..04b7c3e --- /dev/null +++ b/src/main/webapp/multimarkdown_layout.css @@ -0,0 +1,518 @@ +/* + ~ Copyright (c) 2015-2016 Vladimir Schneider vladimir.schneider@gmail.com + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/* Swing Layout Stylesheet */ + +strike { + text-decoration: line-through; +} + +/* del is simulated via span.del */ +del, +span.del { + text-decoration: line-through; +} + +s { + text-decoration: line-through; +} + +cite { + font-style: italic; +} + +sub { + font-size: 0.9em; +} + +sup { + font-size: 0.9em; +} + +em { + font-style: italic; +} + +strong { + font-weight: bold; +} + +b { + font-weight: bold; +} + +u { + text-decoration: underline; +} + +address { + font-style: italic; +} + +i { + font-style: italic; +} + +var, +span.var { + font-weight: bold; + font-style: italic; +} + +kbd, +span.kbd{ + display: inline-block; + padding: 3px 5px; + vertical-align: middle; +} + +/* NOTE: all other font sizes are set relative to font size given here and this is overridden in the CssProvider */ +body.multimarkdown-preview, +body.multimarkdown-wiki-preview { + background-color: white; + font-family: "Helvetica Neue", Helvetica, Arial, freesans, sans-serif; + font-size: 11px; + padding: 20px; +} + +img.local-only { +} + +img.absent { + font-weight: bold; +} + +/********************************** + * Anchor Related Formatting + **********************************/ + +a { + text-decoration: underline; +} + +a.mail-link { +} + +a.absent { +} + +a.local-only { +} + +a.anchor { + display: block; + padding-left: 30px; + margin-left: -30px; + position: absolute; + top: 0; + left: 0; + bottom: 0; +} + +/********************************** + * Header Related Formatting + **********************************/ +div.page-header { + padding: 2px 0 4px 15px; +} + +div.page-header a { + text-decoration: none; + font-weight: bold; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + padding: 0; + cursor: text; + position: relative; +} + +h2, +h2 a { + text-decoration: none; +} + +h1, +h3, +h4, +h5, +h1 a, +h3 a, +h4 a, +h5 a { + text-decoration: none; +} + +h1 p, +h2 p, +h3 p, +h4 p, +h5 p, +h6 p { + margin-top: 0; +} + +h6, +h6 a { + text-decoration: none; +} + +h1 tt, +h2 tt, +h3 tt, +h4 tt, +h5 tt, +h6 tt, +h1 code, +h2 code, +h3 code, +h4 code, +h5 code, +h6 code, +h1 span.code, +h2 span.code, +h3 span.code, +h4 span.code, +h5 span.code, +h6 span.code { + font-size: inherit; +} + +h1 { + font-weight: bold; + font-size: 1.5em; + margin: 20px 0 10px 0; +} + +h1.first-child, +h2.first-child, +h3.first-child, +h4.first-child, +h5.first-child, +h6.first-child { + margin-top: 0; +} + +.multimarkdown-wiki-preview h1 { + font-weight: normal; +} + +h2 { + font-weight: bold; + font-size: 1.35em; + margin: 20px 0 10px 0; +} + +h3 { + font-weight: bold; + font-size: 1.25em; + margin: 20px 0 10px 0; +} + +h4 { + font-weight: bold; + font-size: 1.15em; + margin: 10px 0 7px; +} + +h5 { + font-weight: bold; + font-size: 1.1em; + margin: 7px 0 7px; +} + +h6 { + font-weight: bold; + font-size: 1.1em; + margin: 7px 0 7px; +} + +/********************************** + * Block Quote Related Formatting + **********************************/ + +blockquote { + margin: 5px 0; + padding: 0 15px; + font-size: 1em; +} + +blockquote h1, +blockquote h2, +blockquote h3, +blockquote h4, +blockquote h5, +blockquote h6, +blockquote h1 a, +blockquote h2 a, +blockquote h3 a, +blockquote h4 a, +blockquote h5 a, +blockquote h6 a { +} + +/********************************** +* Code Block Related Formatting + **********************************/ + +code, +span.code, +samp, +var, +span.var, +kbd, +span.kbd, +span.tt { + font-family: Consolas, Inconsolata, "Liberation Mono", Menlo, Courier, Monospaced, monospace; + font-size: 1em; +} + +pre { + margin: 5px 0; +} + +tt, +span.tt { + margin: 0 2px; + padding: 0 5px; + white-space: nowrap; +} + +pre code, +pre span.code { + margin: 0; + padding: 0; + white-space: pre; + border: none; + background: transparent; +} + +pre { + overflow: auto; + padding: 6px 0 6px 10px; + white-space: pre; +} + +code, +span.code { + padding: 3px; + white-space: normal; +} + +/********************************** + * Table Related formatting + **********************************/ + +body table { + background-color: transparent; + margin-bottom: 20px; + border-spacing: 0; + border-collapse: collapse; + font-size: inherit; +} + +table tr th { + font-weight: bold; + margin: 0; + padding: 6px 13px; +} + +table tr td { + margin: 0; + padding: 6px 13px; +} + +th { + text-align: center; +} + +table caption { + font-weight: bold; + padding: 5px 0 5px 10px; + text-align: left; +} + +table thead tr th { + vertical-align: bottom; +} + +/************************************ + * Horizontal Rule Related Formatting + ************************************/ + +hr { + /* + nothing is used in the CSS by the HTMLEditorKit hr element except alignment, margin, width. + size and noshade attributes are only setable in the element and size is 2px minimum, of any + color you want just as long as its black, hardcoded in the library. + + ie. nothing useful that we can use to change the look so hr is simulated with a div and nbsp + */ +} + +div.hr { + height: 1px; + margin: 10px 0 5px 0; +} + +/********************************** + * List Item Related Formatting + **********************************/ + +ul, +ol { + margin: 10px 0 10px 0; +} + +ul { + list-style-type: disc; +} + +li { + margin: 2px 0 3px 0; +} + +li.dtask, +li.bulleti, +li.taski { + margin: 1px 0 1px 0; +} + +/* loosely spaced list items that reflect the markdown source */ +li.bulletp, +li.dtaskp, +li.taskp, +li.p { + margin: 0 0 10px 0; +} + +/* loosely spaced list items that duplicate quirky GFM implementation */ +li.bulletp, +li.dtaskp, +li.taskp, +li.p { + margin: 10px 0 10px 0; +} + +p { + margin: 5px 0 5px 0; +} + +li p { + margin: 10px 0 10px 0; +} + +/* loose list item first paragraph, loose task item first paragraph */ +li.bulletp p.p, +li.taskp p.p, +li.dtaskp p.p, +li.p p.p { + margin: 0; +} + +ul ul, +ol ul { + list-style-type: circle; +} + +ul li.bulleti, +ul li.bulletp, +ul li.task-chk, +ul li.taskp-chk { + list-style-type: none; + padding-left: 0; + text-indent: -17px; +} + +ul li.task-list-item { + list-style-type: none; +} + +ul li.taski, +ul li.taskp, +ul li.dtask, +ul li.dtaskp { + list-style-type: square; +} + +ul, +ol { + padding-left: 30px; +} + +ol { + list-style-type: decimal; +} + +ul ol, +ol ol { + list-style-type: lower-roman; +} + +ul ul ol, +ul ol ol, +ol ul ol, +ol ol ol { + list-style-type: lower-alpha; +} + +dfn { + font-style: italic; +} + +dt { + margin-top: 0; + margin-bottom: 0; +} + +dl { + margin: 5px 0 5px 0; + padding: 0; +} + +dl dt { + font-size: 1.05em; + font-weight: bold; + font-style: italic; + padding: 0; + margin: 5px 0 5px; +} + +dl dd { + margin: 0 0 5px; + padding: 0 20px; +} + + +caption { + text-align: center; +} + +img.emoji { + width: 20px; + height: 20px; + vertical-alignment: text-bottom; +}