fr.gouv.culture.thesaurus.util.web.UriUtils.java Source code

Java tutorial

Introduction

Here is the source code for fr.gouv.culture.thesaurus.util.web.UriUtils.java

Source

/*
* This software is governed by the CeCILL-B license under French law and
* abiding by the rules of distribution of free software. You can use,
* modify and/or redistribute the software under the terms of the CeCILL-B
* license as circulated by CEA, CNRS and INRIA at the following URL
* "http://www.cecill.info".
*
* As a counterpart to the access to the source code and rights to copy,
* modify and redistribute granted by the license, users are provided only
* with a limited warranty and the software's author, the holder of the
* economic rights, and the successive licensors have only limited
* liability.
*
* In this respect, the user's attention is drawn to the risks associated
* with loading, using, modifying and/or developing or reproducing the
* software by the user in light of its specific status of free software,
* that may mean that it is complicated to manipulate, and that also
* therefore means that it is reserved for developers and experienced
* professionals having in-depth computer knowledge. Users are therefore
* encouraged to load and test the software's suitability as regards their
* requirements in conditions enabling the security of their systems and/or
* data to be ensured and, more generally, to use and operate it in the
* same conditions as regards security.
*
* The fact that you are presently reading this means that you have had
* knowledge of the CeCILL-B license and that you accept its terms.
*/

package fr.gouv.culture.thesaurus.util.web;

import org.apache.commons.lang.StringUtils;

/**
 * Diverses mthodes de gestion des URI.
 * 
 * @author tle
 */
public final class UriUtils {

    /** Constructeur priv pour empcher toute instanciation. */
    private UriUtils() {
        throw new UnsupportedOperationException();
    }

    /**
     * Returns a displayable label for the specified URI. This method strips any
     * namespace URI prefix and language tag suffix from the specified URI.
     * 
     * @param uri
     *            the property URI or name.
     * @return the URI label.
     */
    public static String getPropertyLabel(String uri) {
        if (uri == null) {
            throw new IllegalArgumentException("uri");
        }
        // Remove language suffix, if any.
        int i = uri.lastIndexOf('@');
        if (i != -1) {
            uri = uri.substring(0, i);
        }
        // Remove namespace URI, if any.
        i = Math.max(uri.lastIndexOf('/'), uri.lastIndexOf('#'));
        return (i != -1) ? uri.substring(i + 1) : uri;
    }

    /**
     * Formats a URI respecting the ARK standard.
     * Note: Another identifier than ark: may be used. That's why it is passed as a parameter.
     * @param uriformat   Name of the norm that the URI follows (should be ark:)
     * @param naan      Name Assigning Authority Number 
     * @param id      Concept identifier
     * @return Formatted URI (e.g. ark:/67717/T96-5)
     */
    public static String formatArkLikeIdentifier(String uriformat, String naan, String id) {
        if (uriformat == null || uriformat == "")
            throw new IllegalArgumentException("uriformat is empty");

        if (naan == null || naan == "")
            throw new IllegalArgumentException("naan is empty");

        if (id == null || id == "")
            throw new IllegalArgumentException("id is empty");

        return uriformat + "/" + naan + "/" + id;
    }

    /**
     * Complete identifier of the resource being displayed, including uriformat and naan if the resource identifier follows the ark norm.
     * 
     * @param uriformat   Name of the norm that the URI follows (should be ark:)
     * @param naan      Name Assigning Authority Number 
     * @param id      Concept identifier
     * @return the complete identifier
     */
    public static String getFullId(String uriformat, String naan, String id) {
        if (!StringUtils.isEmpty(uriformat) && !StringUtils.isEmpty(naan)) {
            return UriUtils.formatArkLikeIdentifier(uriformat, naan, id);
        }
        return id;
    }
}