package beacon;

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

public class BUserInfoDatabase implements Serializable {
  Hashtable userinfo;

  BUserInfoDatabase(){
    userinfo = new Hashtable();
  }
  
  public void set(String alias, BUser u){
    userinfo.put(alias, u);
  }

  public BUser get(String alias){
    return (BUser) userinfo.get(alias);
  }

  public void remove(String alias){
    userinfo.remove(alias);
  }

  public void expire(){
    System.out.println("Warning!!! UserInfoDatabase expiry not yet supported");
  }

  public void dump(String file) {
    // Save the database
    try {
      FileOutputStream fos = new FileOutputStream(file);
      ObjectOutputStream oos = new ObjectOutputStream(fos);
      oos.writeObject(this);
      oos.flush();
      fos.close();
    } catch (Exception e) { 
      System.out.println("Failed to dump database: "+e);
    }
  }

  public static BUserInfoDatabase loadDB(String file){
    // Try to load from a file
    try {
      FileInputStream fis = new FileInputStream(file);
      ObjectInputStream ois = new ObjectInputStream(fis);
      BUserInfoDatabase buidb = (BUserInfoDatabase) ois.readObject();
      fis.close();
      return buidb;
    }
    // Failing that, create a new one
    catch (Exception e){
      return new BUserInfoDatabase();
    }
  }

}
