package com.revolsys.swing.map.layer.record; import com.revolsys.identifier.Identifier; import com.revolsys.record.RecordState; public class NewProxyLayerRecord extends AbstractProxyLayerRecord { private Identifier identifier; private LayerRecord record; public NewProxyLayerRecord(final RecordStoreLayer layer, final LayerRecord record) { super(layer); this.record = record; addProxiedRecord(record); } @Override protected void finalize() throws Throwable { this.identifier = removeProxiedRecordIdentifier(this.identifier); super.finalize(); } @Override public Identifier getIdentifier() { return this.identifier; } @Override protected LayerRecord getRecordProxied() { final AbstractRecordLayer layer = getLayer(); synchronized (layer.getSync()) { if (this.record != null) { final RecordState state = this.record.getState(); if (state == RecordState.PERSISTED) { this.identifier = this.record.getIdentifier(); if (this.identifier != null) { addProxiedRecordIdentifier(this.identifier); this.record = removeProxiedRecord(this.record); } } else { return this.record; } } return super.getRecordProxied(); } } @Override public int hashCode() { if (this.identifier == null) { return 0; } else { return this.identifier.hashCode(); } } }