package com.idega.block.websearch.business; /** * <p><code>LinkParser</code> * Utility class for parsing and completing links (URL/URI). </p> * This class is a part of the websearch webcrawler and search engine block. <br> * It is based on the <a href="http://lucene.apache.org">Lucene</a> java search engine from the Apache group and loosly <br> * from the work of David Duddleston of i2a.com.<br> * * @copyright Idega Software 2002 * @author <a href="mailto:eiki@idega.is">Eirikur Hrafnsson</a> */ public final class LinkParser { /** * @param args */ public static void main(String[] args) { System.out.println("hello"); String rel = "\\a\\b\\c\\d\\y.x"; //String rel = "a/b/c/d/y.x"; String chd = "./w.z"; //String sep = "/"; String sep = java.io.File.separator; System.out.println("sep:" + sep); System.out.println("path: " + getRealPath(rel, chd, sep)); } /** * @param referencePath parent file path * @param relativePath child file path * @return <CODE>java.lang.String</CODE> */ public static String getRealPath(String referencePath, String relativePath, String seperator) { String realPath = relativePath; // Looks for relative path and complete it. if (relativePath.startsWith("./")) { realPath = referencePath.substring(0, referencePath.lastIndexOf(seperator)) + relativePath.substring(1, relativePath.length()); } else if (relativePath.startsWith("../")) { int back = 1; while (relativePath.indexOf("../", back*3) != -1) { back++; } int pos = referencePath.length(); int count = back + 1; while (count-- > 0) { pos = referencePath.lastIndexOf(seperator, pos) - 1; } realPath = referencePath.substring(0, pos+2) + relativePath.substring(3*back, relativePath.length()); } return realPath; } }