001 package net.sourceforge.retroweaver.translator; 002 003 public class NameSpace { 004 005 public NameSpace(String oldPrefix, String newPrefix) { 006 if (oldPrefix == null || newPrefix == null) { 007 throw new IllegalArgumentException(); 008 } 009 010 this.oldPrefix = oldPrefix.replace('.', '/'); 011 this.newPrefix = newPrefix.replace('.', '/'); 012 } 013 014 private final String oldPrefix; 015 016 private final String newPrefix; 017 018 public String getOldPrefix() { 019 return oldPrefix; 020 } 021 022 public String getNewPrefix() { 023 return newPrefix; 024 } 025 026 public String toString() { 027 return "[" + oldPrefix + ", " + newPrefix + "]"; 028 } 029 030 /** 031 * Returns the translated mirror class name for <code>class_</code> or 032 * null if the namespace is not applicable 033 * 034 * @param class_ the class name to translate 035 * @return the translated name or null 036 */ 037 public String getMirrorClassName(final String class_) { 038 if (oldPrefix.length() == 0) { 039 return newPrefix + '/' + class_; 040 } 041 042 if (!class_.startsWith(oldPrefix)) { 043 return null; 044 } 045 046 return class_.replaceFirst(oldPrefix, newPrefix); 047 } 048 049 }