/** INTERNAL: Check if the field is contained in the row. */ public boolean containsKey(DatabaseField key) { // Optimize check. int index = key.getIndex(); if ((index >= 0) && (index < this.size)) { DatabaseField field = (DatabaseField) this.fields.get(index); if ((field == key) || field.equals(key)) { return true; } } return this.fields.contains(key); }
/** INTERNAL: Returns the row's field with the same name. */ public DatabaseField getField(DatabaseField key) { // Optimize check. int index = key.getIndex(); if ((index >= 0) && (index < getFields().size())) { DatabaseField field = (DatabaseField) getFields().elementAt(index); if ((field == key) || field.equals(key)) { return field; } } for (index = 0; index < getFields().size(); index++) { DatabaseField field = (DatabaseField) getFields().elementAt(index); if ((field == key) || field.equals(key)) { return field; } } return null; }
/** INTERNAL: Retrieve the value for the field. If missing DatabaseRow.noEntry is returned. */ public Object getIndicatingNoEntry(DatabaseField key) { // PERF: Direct variable access. // ** Code duplicated in get, ensure kept in synch ** // Optimize check. int index = key.getIndex(); if ((index >= 0) && (index < this.size)) { DatabaseField field = (DatabaseField) this.fields.get(index); if ((field == key) || field.equals(key)) { return this.values.get(index); } } int fieldsIndex = this.fields.indexOf(key); if (fieldsIndex >= 0) { // PERF: If the fields index was not set, then set it. if (index == -1) { key.setIndex(fieldsIndex); } return this.values.get(fieldsIndex); } else { return AbstractRecord.noEntry; } }