001: /**
002: * $Id: ABStore.java,v 1.5 2003/03/28 19:32:18 dpolla Exp $
003: * Copyright 2002 Sun Microsystems, Inc. All
004: * rights reserved. Use of this product is subject
005: * to license terms. Federal Acquisitions:
006: * Commercial Software -- Government Users
007: * Subject to Standard License Terms and
008: * Conditions.
009: *
010: * Sun, Sun Microsystems, the Sun logo, and Sun ONE
011: * are trademarks or registered trademarks of Sun Microsystems,
012: * Inc. in the United States and other countries.
013: */package com.sun.addressbook;
014:
015: import java.util.*;
016:
017: /**
018: * Abstract model of a connection to a address book server.
019: */
020: public abstract class ABStore {
021:
022: /**
023: * Stores the reference to the address book session corresponding to
024: * this store object.
025: */
026: protected ABSession session;
027:
028: /**
029: * Get the Session.
030: *
031: * @return The parent ABSession
032: */
033: public ABSession getSession() {
034: return session;
035: }
036:
037: /**
038: * The init method for initializing and setting the properties in
039: * the ABStore.
040: * Has to be implemented by the adapters.
041: */
042: public abstract void init(ABSession session)
043: throws ABStoreException, MissingPropertiesException;
044:
045: /**
046: * Authenticate the user and connect to the address book server.
047: *
048: * @exception ABStoreException if unable to connect to back end service.
049: */
050: public abstract void connect() throws ABStoreException;
051:
052: /**
053: * Close the connection to the address book store.
054: *
055: * @exception ABStoreException if unable to connect to back end service.
056: * @return boolean value indicating whether login was successful.
057: */
058: public abstract void disconnect() throws ABStoreException;
059:
060: /**
061: * Checks if the connection to the store object is still valid.
062: *
063: * @return boolean indicating whether the address book is connected .
064: * @exception ABStoreException if unable to connect to back end service.
065: */
066: public abstract boolean isConnected() throws ABStoreException;
067:
068: /**
069: * Get the list of address books id's of the user.
070: *
071: * @return array of user's address book ids
072: */
073: public abstract String[] getAddressBooks() throws ABStoreException,
074: OperationNotSupportedException;
075:
076: /**
077: * Abstract method to get this user's default address book id.
078: *
079: * @return The address book id corresponding to the authenticated user.
080: */
081: protected abstract String getDefaultAbID() throws ABStoreException;
082:
083: /**
084: * Get the user's default address book.
085: *
086: * @return This user's default address book
087: *
088: * @exception ABStoreException if unable to retrieve user's default calendar
089: */
090: public final AddressBook openAddressBook() throws ABStoreException {
091: if (!isConnected()) {
092: throw new ABStoreException("Not Connected");
093: }
094: return openAddressBook(getDefaultAbID());
095: }
096:
097: /**
098: * Abstract method to retrieve a address book from the backend service.
099: *
100: * @param abID A specific address book ID
101: * @return The specified address book
102: *
103: * @exception ABStoreException if unable to load the specified calendar
104: */
105: public abstract AddressBook openAddressBook(String abID)
106: throws ABStoreException;
107:
108: /**
109: * Abstract method to close a currently opened address book.
110: *
111: * @param ab A specific address book.
112: *
113: * @exception ABStoreException if unable to close the specified calendar
114: */
115: public abstract void closeAddressBook(AddressBook ab)
116: throws ABStoreException;
117:
118: }
|