package com.revolsys.swing.map.layer.record; import com.revolsys.record.RecordState; import com.revolsys.record.schema.FieldDefinition; import com.revolsys.record.schema.RecordDefinition; public class UnmodifiableRecordStoreLayerRecord extends RecordStoreLayerRecord { private static final long serialVersionUID = 1L; public UnmodifiableRecordStoreLayerRecord(final RecordStoreLayer layer, final RecordDefinition recordDefinition) { super(layer, recordDefinition); } @Override public RecordState setState(final RecordState state) { boolean setState = false; final RecordState currentState = getState(); switch (state) { case DELETED: break; case INITIALIZING: if (currentState == RecordState.NEW || currentState == RecordState.INITIALIZING) { setState = true; } break; case MODIFIED: break; case NEW: if (currentState == RecordState.INITIALIZING) { setState = true; } break; case PERSISTED: if (currentState == RecordState.NEW || currentState == RecordState.INITIALIZING) { setState = true; } break; default: break; } if (setState) { return super.setState(state); } else { throw new UnsupportedOperationException( "Cannot set record state=" + state + " (" + currentState + "):\t" + this); } } @Override protected boolean setValue(final FieldDefinition fieldDefinition, final Object value) { final RecordState state = getState(); if (state.equals(RecordState.INITIALIZING)) { return super.setValue(fieldDefinition, value); } else { return false; } } }