www.pudn.com > htmlsaver.rar > GetNameFromURL.java


import java.util.*; 
 
public class GetNameFromURL 
{ 
  protected String url; 
  protected Vector oldWords; 
  protected Vector words; 
  protected ReplaceWordOfURL rep; 
   
  protected Vector parts; 
   
  final static int CONST_STRING = 0; 
  final static int VAR_WORD = 1; 
   
  protected class Part 
  { 
    public int type; 
    public Object value; 
     
    Part(int type, Object value) 
    { 
      this.type = type; 
      this.value = value; 
    } 
  } 
   
  GetNameFromURL(String url) 
  { 
    this.url = url; 
     
    oldWords = new Vector(); 
    GetWordOfURL.getWordOfURL(oldWords, this.url); 
    words = new Vector(); 
    initWords(); 
     
    rep = new ReplaceWordOfURL(words.size()); 
     
    parts = new Vector(); 
  } 
   
  public String getURL() 
  { 
    return url; 
  } 
   
  public void clear() 
  { 
    rep.clear(); 
    parts.clear(); 
  } 
   
  public boolean setNewURL(String url) 
  { 
    Vector newWords = new Vector(); 
    GetWordOfURL.getWordOfURL(newWords, url); 
     
    if (newWords.size() != oldWords.size()) 
      return false; 
     
    int i; 
    for (i = 0; i < oldWords.size(); i++) 
    { 
      WordOfURL word1 = (WordOfURL)oldWords.elementAt(i); 
      WordOfURL word2 = (WordOfURL)newWords.elementAt(i); 
      if (word1.type != word2.type) 
        return false; 
    } 
     
    this.url = url; 
    oldWords = newWords; 
     
    return true; 
  } 
   
  public void setChangeWord(ChangeWord operation, int i) 
  { 
    if ((i < 0) || (i >= oldWords.size())) 
      return; 
     
    rep.setChangeWordAt(operation, i); 
    words.setElementAt(new WordOfURL((WordOfURL)oldWords.elementAt(i)), i); 
    rep.change(words, i); 
  } 
   
  public void updateWords() 
  { 
    rep.change(words); 
  } 
   
  public void initWords() 
  { 
    words.clear(); 
    int i; 
    for (i = 0; i < oldWords.size(); i++) 
      words.add(new WordOfURL((WordOfURL)oldWords.elementAt(i))); 
  } 
   
  public Vector getWords() 
  { 
    return words; 
  } 
   
  public boolean addString(String s) 
  { 
    parts.add(new Part(CONST_STRING, s)); 
     
    return true; 
  } 
   
  public boolean addWord(int w) 
  { 
    if ((w < 0) || (w >= words.size())) 
      return false; 
     
    parts.add(new Part(VAR_WORD, new Integer(w))); 
     
    return true; 
  } 
   
  public boolean insertString(String s, int i) 
  { 
    if ((i < 0) || (i > parts.size())) 
      return false; 
       
    parts.insertElementAt(new Part(CONST_STRING, s), i); 
     
    return true; 
  } 
   
  public boolean insertWord(int w, int i) 
  { 
    if ((i < 0) || (i > parts.size())) 
      return false; 
       
    parts.insertElementAt(new Part(VAR_WORD, new Integer(w)), i); 
     
    return true; 
  } 
   
  public boolean remove(int i) 
  { 
    if ((i < 0) || (i >= parts.size())) 
      return false; 
       
    parts.remove(i); 
     
    return true; 
  } 
   
  public boolean setString(String s, int i) 
  { 
    if ((i < 0) || (i >= parts.size())) 
      return false; 
       
    parts.setElementAt(new Part(CONST_STRING, s), i); 
     
    return true; 
  } 
   
  public boolean setWord(int w, int i) 
  { 
    if ((i < 0) || (i >= parts.size())) 
      return false; 
     
    parts.setElementAt(new Part(VAR_WORD, new Integer(w)), i); 
     
    return true; 
  } 
   
  protected String getNameByWords(Vector words) 
  { 
    String name = new String(""); 
    int i; 
    for (i = 0; i < parts.size(); i++) 
    { 
      Part p = (Part)parts.elementAt(i); 
      switch (p.type) 
      { 
        case CONST_STRING: 
        { 
          name += (String)p.value; 
          break; 
        } 
        case VAR_WORD: 
        { 
          int j = ((Integer)p.value).intValue(); 
          name += ((WordOfURL)words.elementAt(j)).getValue(); 
          break; 
        } 
        default: 
          break; 
      } 
    } 
     
    return name; 
  } 
   
  public String getName() 
  { 
    return getNameByWords(words); 
  } 
   
  public String getNameOf(String url) 
  { 
    Vector words = new Vector(); 
    GetWordOfURL.getWordOfURL(words, url); 
    rep.change(words); 
    return getNameByWords(words); 
  } 
}