From df7d7981b56a4560c95ea7e9b194080e93398ecf Mon Sep 17 00:00:00 2001 From: Matt Windsor Date: Mon, 21 Mar 2011 21:54:31 +0000 Subject: GREAT PACKAGE RESHUFFLE: Everything is now organised into frontend, backend and common (to frontend and backend) packages. Things may have been broken. Doc refresh. --- src/uk/org/ury/backend/database/DatabaseItem.java | 80 +++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 src/uk/org/ury/backend/database/DatabaseItem.java (limited to 'src/uk/org/ury/backend/database/DatabaseItem.java') 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 { + private Map 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 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 asResponse() { + // TODO: Fan out implementation details into separate class + Map response = new HashMap(); + + for (E property : properties.keySet()) { + if (properties.get(property) != null) + response.put(property.toString(), properties.get(property) + .toString()); + } + + return response; + } +} -- cgit v1.2.3