import java.io.*;
import java.util.*;
import java.net.*;

public class BKUser{
	public String name;
	protected String password;
	public Hashtable bookmarks;

	public BKUser(String name, String password, String dbstring){
		this.name=name;
		this.password=password;
		this.bookmarks=new Hashtable();
		if(dbstring!=null){
			this.readDBString(dbstring);
		}
	}

	public void addBookmark(String name, String href){
		bookmarks.put(name, href);
	}

	public void delBookmark(String name){
		bookmarks.remove(name);
	}
	
	// convert user information to format for data file
	public String getDBString(){
		String dbstring="";
		boolean firsttime=true;
		
		dbstring += URLEncoder.encode(this.name) + " " + URLEncoder.encode(this.password) + " ";
		for (Enumeration enum = bookmarks.keys() ; enum.hasMoreElements() ; ) {
			String bkname=(String)enum.nextElement();
			String bkhref=(String)bookmarks.get(bkname);
			if(firsttime){
				dbstring+=URLEncoder.encode(bkname)+"!"+URLEncoder.encode(bkhref);
				firsttime=false;
			}
			else{
				dbstring+="|"+URLEncoder.encode(bkname)+"!"+URLEncoder.encode(bkhref);
			}
		}
		return dbstring;
	}
	
	// extract user information from data file format
	public void readDBString(String dbstring){
		StringTokenizer sptok = new StringTokenizer(dbstring);
		this.name=URLDecoder.decode(sptok.nextToken());
		this.password=URLDecoder.decode(sptok.nextToken());
		StringTokenizer pptok = new StringTokenizer(sptok.nextToken(),"|");
		while (pptok.hasMoreTokens()) {
           		StringTokenizer exctok = new StringTokenizer(pptok.nextToken(),"!");
			bookmarks.put(URLDecoder.decode(exctok.nextToken()), URLDecoder.decode(exctok.nextToken()));
            }
	}
} //class BKUser
