package com.revolsys.record.io;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.springframework.transaction.PlatformTransactionManager;
import com.revolsys.collection.ResultPager;
import com.revolsys.collection.map.MapEx;
import com.revolsys.geometry.model.BoundingBox;
import com.revolsys.geometry.model.GeometryFactory;
import com.revolsys.identifier.Identifier;
import com.revolsys.io.PathName;
import com.revolsys.record.Record;
import com.revolsys.record.RecordFactory;
import com.revolsys.record.code.CodeTable;
import com.revolsys.record.property.RecordDefinitionProperty;
import com.revolsys.record.query.Query;
import com.revolsys.record.schema.AbstractRecordStore;
import com.revolsys.record.schema.RecordDefinition;
import com.revolsys.record.schema.RecordStoreSchema;
import com.revolsys.util.count.CategoryLabelCountMap;
import com.revolsys.util.count.LabelCountMap;
public class DelegatingRecordStore extends AbstractRecordStore {
private final AbstractRecordStore recordStore;
public DelegatingRecordStore(final AbstractRecordStore recordStore) {
this.recordStore = recordStore;
}
@Override
public void addCodeTable(final CodeTable codeTable) {
this.recordStore.addCodeTable(codeTable);
}
@Override
public void addCodeTable(final String columnName, final CodeTable codeTable) {
this.recordStore.addCodeTable(columnName, codeTable);
}
@Override
public void addCodeTables(final Collection<CodeTable> codeTables) {
this.recordStore.addCodeTables(codeTables);
}
@Override
public void addStatistic(final String statisticName, final Record record) {
this.recordStore.addStatistic(statisticName, record);
}
@Override
public void addStatistic(final String statisticName, final String typePath, final int count) {
this.recordStore.addStatistic(statisticName, typePath, count);
}
@Override
public void clearProperties() {
this.recordStore.clearProperties();
}
@Override
@PreDestroy
public void close() {
this.recordStore.close();
}
@Override
public boolean deleteRecord(final Record record) {
return this.recordStore.deleteRecord(record);
}
@Override
public boolean equals(final Object value) {
return this.recordStore.equals(value);
}
@SuppressWarnings("unchecked")
@Override
public <V extends CodeTable> V getCodeTable(final PathName typePath) {
return (V)this.recordStore.getCodeTable(typePath);
}
@Override
public CodeTable getCodeTableByFieldName(final CharSequence columnName) {
return this.recordStore.getCodeTableByFieldName(columnName);
}
@Override
public Map<String, CodeTable> getCodeTableByFieldNameMap() {
return this.recordStore.getCodeTableByFieldNameMap();
}
@Override
public Map<String, List<String>> getCodeTableColumNames() {
return this.recordStore.getCodeTableColumNames();
}
@Override
public MapEx getConnectionProperties() {
return this.recordStore.getConnectionProperties();
}
@Override
public GeometryFactory getGeometryFactory() {
return this.recordStore.getGeometryFactory();
}
@Override
public String getLabel() {
return this.recordStore.getLabel();
}
@Override
public MapEx getProperties() {
return this.recordStore.getProperties();
}
@Override
public <C> C getProperty(final String name) {
return this.recordStore.getProperty(name);
}
@Override
public <C> C getProperty(final String name, final C defaultValue) {
return this.recordStore.getProperty(name, defaultValue);
}
@Override
public int getRecordCount(final Query query) {
return this.recordStore.getRecordCount(query);
}
@Override
public RecordDefinition getRecordDefinition(final RecordDefinition recordDefinition) {
return this.recordStore.getRecordDefinition(recordDefinition);
}
@Override
public RecordFactory<Record> getRecordFactory() {
return this.recordStore.getRecordFactory();
}
public AbstractRecordStore getRecordStore() {
return this.recordStore;
}
@Override
public String getRecordStoreType() {
return this.recordStore.getRecordStoreType();
}
@Override
public RecordStoreSchema getRootSchema() {
return this.recordStore.getRootSchema();
}
@Override
public CategoryLabelCountMap getStatistics() {
return this.recordStore.getStatistics();
}
@Override
public LabelCountMap getStatistics(final String name) {
return this.recordStore.getStatistics(name);
}
@Override
public PlatformTransactionManager getTransactionManager() {
return this.recordStore.getTransactionManager();
}
@Override
public int hashCode() {
return this.recordStore.hashCode();
}
@Override
@PostConstruct
public void initialize() {
this.recordStore.initialize();
}
@Override
public void insertRecord(final Record record) {
this.recordStore.insertRecord(record);
}
@Override
public boolean isEditable(final PathName typePath) {
return this.recordStore.isEditable(typePath);
}
@Override
public Identifier newPrimaryIdentifier(final PathName typePath) {
return this.recordStore.newPrimaryIdentifier(typePath);
}
@Override
public Query newQuery(final String typePath, final String whereClause,
final BoundingBox boundingBox) {
return this.recordStore.newQuery(typePath, whereClause, boundingBox);
}
@Override
public Record newRecord(final PathName typePath) {
return this.recordStore.newRecord(typePath);
}
@Override
public Record newRecord(final RecordDefinition recordDefinition) {
return this.recordStore.newRecord(recordDefinition);
}
@Override
public RecordStoreQueryReader newRecordReader() {
return this.recordStore.newRecordReader();
}
@Override
public RecordWriter newRecordWriter() {
return this.recordStore.newRecordWriter();
}
@Override
public ResultPager<Record> page(final Query query) {
return this.recordStore.page(query);
}
@Override
public void removeProperty(final String propertyName) {
this.recordStore.removeProperty(propertyName);
}
@Override
public void setCodeTableColumNames(final Map<String, List<String>> domainColumNames) {
this.recordStore.setCodeTableColumNames(domainColumNames);
}
@Override
public void setCommonRecordDefinitionProperties(
final List<RecordDefinitionProperty> commonRecordDefinitionProperties) {
this.recordStore.setCommonRecordDefinitionProperties(commonRecordDefinitionProperties);
}
@Override
public void setGeometryFactory(final GeometryFactory geometryFactory) {
this.recordStore.setGeometryFactory(geometryFactory);
}
@Override
public void setLabel(final String label) {
this.recordStore.setLabel(label);
}
@Override
public void setProperties(final Map<String, ? extends Object> properties) {
this.recordStore.setProperties(properties);
}
@Override
public void setProperty(final String name, final Object value) {
this.recordStore.setProperty(name, value);
}
@Override
public void setPropertySoft(final String name, final Object value) {
this.recordStore.setPropertySoft(name, value);
}
@Override
public void setPropertyWeak(final String name, final Object value) {
this.recordStore.setPropertyWeak(name, value);
}
@Override
public void setRecordFactory(final RecordFactory<? extends Record> recordFactory) {
this.recordStore.setRecordFactory(recordFactory);
}
@Override
public void setTypeRecordDefinitionProperties(
final Map<String, List<RecordDefinitionProperty>> typeRecordDefinitionProperties) {
this.recordStore.setTypeRecordDefinitionProperties(typeRecordDefinitionProperties);
}
@Override
public String toString() {
return this.recordStore.toString();
}
@Override
public void updateRecord(final Record record) {
this.recordStore.updateRecord(record);
}
}