diff options
author | Matt Windsor <mattwindsor@btinternet.com> | 2011-03-21 21:54:31 +0000 |
---|---|---|
committer | Matt Windsor <mattwindsor@btinternet.com> | 2011-03-21 21:54:31 +0000 |
commit | df7d7981b56a4560c95ea7e9b194080e93398ecf (patch) | |
tree | b3ae4f02d23ae1f7f4951c776ee8d91b0047dd6f /src/uk/org/ury/backend/database/DatabaseItem.java | |
parent | 2d073129857a42ab4195cd433c8be152e357033f (diff) |
GREAT PACKAGE RESHUFFLE: Everything is now organised into frontend, backend and common (to frontend and backend) packages. Things may have been broken. Doc refresh.
Diffstat (limited to 'src/uk/org/ury/backend/database/DatabaseItem.java')
-rw-r--r-- | src/uk/org/ury/backend/database/DatabaseItem.java | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/src/uk/org/ury/backend/database/DatabaseItem.java b/src/uk/org/ury/backend/database/DatabaseItem.java new file mode 100644 index 0000000..b25e9f2 --- /dev/null +++ b/src/uk/org/ury/backend/database/DatabaseItem.java @@ -0,0 +1,80 @@ +package uk.org.ury.backend.database; + +import java.util.HashMap; +import java.util.Map; + +import uk.org.ury.backend.database.exceptions.MissingPropertyException; + +/** + * An abstract class presenting a template for objects serving as a data + * structure for collections of properties retrieved from a SQL database. + * + * @param E + * The enumeration type used as the property list. + * + * @param T + * The type of datum stored for each property. + * + * @author Matt Windsor + */ +public abstract class DatabaseItem<E, T> { + private Map<E, T> properties; + + /** + * Construct a new item from an existing list of properties. + * + * @param properties + * The map of properties that the new item will inherit. + */ + public DatabaseItem(Map<E, T> properties) { + this.properties = properties; + } + + /** + * Check whether a property has been set in the item. + * + * @return true if the property has been set; false otherwise. + */ + + public boolean has(E property) { + return properties.containsKey(property); + } + + /** + * Query this item for a property. + * + * @param property + * The property to query. + * + * @return The property, if it exists. + * + * @throws MissingPropertyException + * if the property does not exist. + */ + public T get(E property) throws MissingPropertyException { + if (properties.containsKey(property)) + return properties.get(property); + else + throw new MissingPropertyException(property.toString()); + } + + /** + * Retrieve a map of string representations of the properties. + * + * This relies on E and T having meaningful toString methods. + * + * @return a list of lines representing the response. + */ + public Map<String, String> asResponse() { + // TODO: Fan out implementation details into separate class + Map<String, String> response = new HashMap<String, String>(); + + for (E property : properties.keySet()) { + if (properties.get(property) != null) + response.put(property.toString(), properties.get(property) + .toString()); + } + + return response; + } +} |