import utils.KWICDatabase;

class 
KWICDB 
implements KWICDBInterface {

  private DatabaseAccess dba = new DatabaseAccess();

  private DBClientTemplate
    invalidWriterClient = new DBInvalidWriterClient(dba),
    invalidReaderClient = new DBInvalidReaderClient(dba),
    readerClient = invalidReaderClient,
    writerClient = invalidWriterClient;

  private KWICDatabase kwicdb;


  public KWICDBInterface 
  init() {
    kwicdb = new KWICDatabase();
    readerClient = new DBReaderClient(dba);
    writerClient = new DBWriterClient(dba);
    return this;
    }


  public String [] 
  query(String keywords[]) {
    try { readerClient.enter(); }
    catch (InterruptedException ie) { }
    String [] entries = kwicdb.get(keywords);
    readerClient.exit();
    return entries;
    }


  public void 
  term() {
    readerClient = invalidReaderClient;
    writerClient = invalidWriterClient;
    }


  public void 
  write(String description) {
    try { writerClient.enter(); }
    catch (InterruptedException ie) { }
    kwicdb.put(description);
    writerClient.exit();
    }
  }


syntax highlighted by Code2HTML, v. 0.9