diff options
Diffstat (limited to 'src/uk/org/ury/database/DatabaseItem.java')
-rw-r--r-- | src/uk/org/ury/database/DatabaseItem.java | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/uk/org/ury/database/DatabaseItem.java b/src/uk/org/ury/database/DatabaseItem.java new file mode 100644 index 0000000..4f6d34d --- /dev/null +++ b/src/uk/org/ury/database/DatabaseItem.java @@ -0,0 +1,70 @@ +package uk.org.ury.database; + +import java.util.Map; + +import uk.org.ury.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 ()); + } +} |