Class MapPage

java.lang.Object
sunlabs.brazil.handler.MapPage

public class MapPage extends Object
Utility class to rewrite links inside of web pages so they appear to come from a different site.

Note: This only works for "http", not "https".

Version:
@(#)MapPage.java 2.4
Author:
Stephen Uhler
  • Field Details

    • tagMap

      public Hashtable tagMap
      Initialized to all tag/attribute pairs whose attribute values are considered for rewriting.
    • urlMap

      public Hashtable urlMap
    • patternMap

      public Vector patternMap
    • prefix

      public String prefix
    • log

      public static boolean log
    • count

      public int count
  • Constructor Details

    • MapPage

      public MapPage(String prefix)
      Create a site mapper. The following table maps all the entity/attribute combinations that are (or could be) URL's to (possibly) rewrite.
      Parameters:
      prefix - Every link starting with "/" has the leading slash replaced by prefix. If prefix is null, then only fully qualified url's are considered for rewriting.
  • Method Details

    • setPrefix

      public void setPrefix(String prefix)
      Change the prefix that will replace the leading "/" in a URL.
    • addTag

      public void addTag(String name, String attribute)
      add a tag/attribute pair to the rewrite list. If the attribute is null, remove the tag.
    • setMap

      public void setMap(Hashtable map)
      Set the map table for cross-linked sites. Foreach key in the table that matches a URL, replace the key portion of the url with the key's value.
    • addMapEntry

      public void addMapEntry(String name, String value)
      Add or remove an item to the map table
      Parameters:
      name - The prefix of the url to match
      value - The prefix to replace it with. If null, remove the prefix
    • addPatternEntry

      public void addPatternEntry(String pattern, String replacement)
      Add or remove an item to the pattern table
      Parameters:
      pattern - The prefix pattern of the url to match Full tcl8.0-style regexps are supported
      replacement - The prefix to replace it with. If null, remove the prefix. \n's are replaced by the corrosponding sub-matches in the name

      Patterns are stored in a vector, with each pattern taking 3 concecutive elements: the pattern, the replacement rule, and the compiled expression. This way they are searched in order. Sample usage: http://www.([^.]*).com/ /site/\1/ will replace the url: http://www.foo.com/a/b.html with /site/foo/a/b.html

    • clearPatterns

      public void clearPatterns()
      Clear the pattern map.
    • mapCount

      public int mapCount()
      How many tags have been mapped?
    • convertHtml

      public String convertHtml(String content)
      Rewrite all the url's in this document. This is accomplished via repeated calls to convertString(String).
      Parameters:
      content - The HTML to be processed.
      Returns:
      The smae HTML, will all URL's rewritten. URL's starting with "/" have the "/" replaced with the prefix. All others are re-written based on the supplied mapping tables.
    • convertString

      public String convertString(String fix)
      Rewrite a url inside a tag parameter.
      Parameters:
      fix - The value of the tag to be rewritten (fixed)
      Returns:
      null of the existing value is OK, otherwise the new value is returned
    • log

      public void log(String message)
      diagnostic output