001: /**
002: * $Id: ABSession.java,v 1.4 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 iPlanet
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.Vector;
016: import java.util.Properties;
017: import java.util.Enumeration;
018: import java.lang.reflect.Constructor;
019:
020: /**
021: * Address Book Session class: A container object representing a address
022: * book session, which stores properties used by the JABAPI. This class is
023: * not subclassed.
024: *
025: */
026: public final class ABSession {
027:
028: /**
029: * Address Book related properties.
030: */
031: private Properties props = null; // Address Book related properties
032:
033: /**
034: * The store object associated with the session.
035: */
036: private ABStore store = null;
037:
038: /**
039: * Base Constructor with Properties object.
040: * @param props System Properties encapsulating the service
041: * specific information required to connect to it.
042: */
043:
044: private ABSession(Properties props) {
045: this .props = props;
046: }
047:
048: /**
049: * Creates and returns a new ABSession. Certain properties are required
050: * and an exception will be thrown when they have not been specified.
051: *
052: * @param props System Properties encapsulating the service
053: * specific information required to connect to it.
054: */
055: public static ABSession getInstance(Properties props)
056: throws MissingPropertiesException {
057:
058: String host = (String) props.get("ab.host");
059:
060: if (host == null) {
061: throw new MissingPropertiesException(
062: "Missing ab.host Property");
063: }
064:
065: return new ABSession(props);
066: }
067:
068: /**
069: *
070: * Create a Store object instance for the specified service.
071: * The service name the classname of a particular backend store.
072: * <br><br>
073: *
074: * @param service classname of the store to be returned.
075: *
076: */
077:
078: public ABStore getABStore(String service)
079: throws MissingPropertiesException, ABStoreException {
080:
081: ABStore store = null;
082: try {
083: store = (ABStore) Class.forName(service).newInstance();
084: store.init(this );
085: } catch (MissingPropertiesException e) {
086: throw new MissingPropertiesException(e.getMessage());
087: } catch (Exception e) {
088: e.printStackTrace();
089: throw new ABStoreException(e.getMessage());
090: }
091:
092: return store;
093: }
094:
095: /**
096: * Set a property to the given value.
097: *
098: * @param id Property key.
099: * @param value Property value.
100: */
101: public void setProperty(String id, String value) {
102: props.put(id, value);
103: }
104:
105: /**
106: * Get a property value.
107: *
108: * @param id Property key.
109: */
110: public String getProperty(String id) {
111: return (String) props.get(id);
112: }
113:
114: /**
115: * Remove a property value.
116: *
117: * @param id Property key.
118: */
119: public void removeProperty(String id) {
120: props.remove(id);
121: }
122:
123: /**
124: * Returns all the properties for this session.
125: *
126: */
127: public Properties getProperties() {
128: return props;
129: }
130:
131: }
|