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);
}
}