001: package dinamica;
002:
003: import java.io.Serializable;
004: import java.text.MessageFormat;
005: import java.util.HashMap;
006:
007: /**
008: * Utility class for Recordset: represents a record inside a recordset
009: * <br>
010: * Creation date: 10/09/2003<br>
011: * Last Update: 29/april/2004<br>
012: * (c) 2004 Martin Cordova<br>
013: * This code is released under the LGPL license<br>
014: * @author Martin Cordova (dinamica@martincordova.com)
015: */
016: public class Record implements Serializable {
017:
018: /**
019: *
020: */
021: private static final long serialVersionUID = 1L;
022:
023: /** container for field|value pairs */
024: HashMap<String, Object> _record = new HashMap<String, Object>();
025:
026: /** every record in a recordset can contain a children recordset */
027: Recordset _children = null;
028:
029: /**
030: * Quick constructor to build a record given a HashMap with field|value pairs
031: * @param values Record values
032: */
033: @SuppressWarnings("unchecked")
034: public Record(HashMap values) {
035: _record = values;
036: }
037:
038: /**
039: * Returns the field value (may be null). Throws exception if
040: * the field is not defined in the record
041: * @param fieldName Field name to retrieve value
042: * @return
043: * @throws Throwable
044: */
045: public Object getFieldValue(String fieldName)
046: throws RecordsetException {
047:
048: if (!_record.containsKey(fieldName)) {
049: String args[] = { fieldName };
050: String msg = Errors.FIELD_NOT_FOUND;
051: msg = MessageFormat.format(msg, (Object[]) args);
052: throw new RecordsetException(msg);
053: }
054: return _record.get(fieldName);
055:
056: }
057:
058: /**
059: * Set a field's value - throws exception if field does not exist
060: * @param fieldName Field Name
061: * @param value Value (Date, String, double, int, null)
062: * @throws Throwable
063: */
064: public void setValue(String fieldName, Object value)
065: throws RecordsetException {
066:
067: if (!_record.containsKey(fieldName)) {
068: String args[] = { fieldName };
069: String msg = Errors.FIELD_NOT_FOUND;
070: msg = MessageFormat.format(msg, (Object[]) args);
071: throw new RecordsetException(msg);
072: }
073:
074: _record.put(fieldName, value);
075:
076: }
077:
078: /**
079: * Set the children recordset of this record
080: * @param rs Children recordset
081: */
082: public void setChildren(Recordset rs) {
083: _children = rs;
084: }
085:
086: /**
087: * Retrieve this record's children recordset
088: * @return A reference to the recordset or null if no children recordset exists
089: */
090: public Recordset getChildren() {
091: return _children;
092: }
093:
094: /**
095: * This constructor was added to support Glue SOAP toolkit
096: * 2005-05-14
097: */
098: public Record() {
099: }
100:
101: }
|