All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.mediathekview.mlib.tool.AbsoluteFromRelativeURI Maven / Gradle / Ivy

Go to download

A central library with tools and utils for the MediathekView Client and the MediathekView Server

The newest version!
package de.mediathekview.mlib.tool;

/*
 * 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.
 */
/*
 * $Id: SystemIDResolver.java 468655 2006-10-28 07:12:06Z minchau $
 */

import java.io.File;

/**
 * This class is used to resolve relative URIs and SystemID
 * strings into absolute URIs.
 *
 * 

* This is a generic utility for resolving URIs, other than the * fact that it's declared to throw TransformerException. Please * see code comments for details on how resolution is performed.

* */ public class AbsoluteFromRelativeURI { /** * Get an absolute URI from a given relative URI (local path). * *

* The relative URI is a local filesystem path. The path can be * absolute or relative. If it is a relative path, it is resolved relative * to the system property "user.dir" if it is available; if not (i.e. in an * Applet perhaps which throws SecurityException) then we just return the * relative path. The space and backslash characters are also replaced to * generate a good absolute URI.

* * @param localPath The relative URI to resolve * * @return Resolved absolute URI */ public static String getAbsoluteURIFromRelative(String localPath) { if (localPath == null || localPath.length() == 0) { return ""; } // If the local path is a relative path, then it is resolved against // the "user.dir" system property. String absolutePath = localPath; if (!isAbsolutePath(localPath)) { try { absolutePath = getAbsolutePathFromRelativePath(localPath); } // user.dir not accessible from applet catch (SecurityException se) { return "file:" + localPath; } } String urlString; if (null != absolutePath) { if (absolutePath.startsWith(File.separator)) { urlString = "file://" + absolutePath; } else { urlString = "file:///" + absolutePath; } } else { urlString = "file:" + localPath; } return replaceChars(urlString); } /** * Return an absolute path from a relative path. * * @param relativePath A relative path * @return The absolute path */ private static String getAbsolutePathFromRelativePath(String relativePath) { return new File(relativePath).getAbsolutePath(); } /** * Return true if the local path is an absolute path. * * @param systemId The path string * @return true if the path is absolute */ public static boolean isAbsolutePath(String systemId) { if (systemId == null) { return false; } final File file = new File(systemId); return file.isAbsolute(); } /** * Replace spaces with "%20" and backslashes with forward slashes in * the input string to generate a well-formed URI string. * * @param str The input string * @return The string after conversion */ private static String replaceChars(String str) { StringBuilder buf = new StringBuilder(str); int length = buf.length(); for (int i = 0; i < length; i++) { char currentChar = buf.charAt(i); // Replace space with "%20" if (currentChar == ' ') { buf.setCharAt(i, '%'); buf.insert(i + 1, "20"); length = length + 2; i = i + 2; } // Replace backslash with forward slash else if (currentChar == '\\') { buf.setCharAt(i, '/'); } } return buf.toString(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy