// // ERXForwardingAdaptor.java // // Created by Thomas Burkholder on Thu May 10, 2005. // package er.extensions.eof; import java.lang.reflect.Method; import com.webobjects.eoaccess.EOAdaptor; import com.webobjects.eoaccess.EOAdaptorContext; import com.webobjects.eoaccess.EOAttribute; import com.webobjects.eoaccess.EOEntity; import com.webobjects.eoaccess.EOModel; import com.webobjects.eoaccess.EOSQLExpressionFactory; import com.webobjects.eoaccess.EOSchemaGeneration; import com.webobjects.eoaccess.EOSynchronizationFactory; import com.webobjects.foundation.NSArray; import com.webobjects.foundation.NSData; import com.webobjects.foundation.NSDictionary; import com.webobjects.foundation.NSTimestamp; public abstract class ERXForwardingAdaptor extends EOAdaptor { protected abstract String forwardedAdaptorName(); private EOAdaptor _forwardedAdaptor; public ERXForwardingAdaptor(String name) { super(name); Object delegate = delegate(); _forwardedAdaptor = EOAdaptor.adaptorWithName(forwardedAdaptorName()); if (delegate != null) { _forwardedAdaptor.setDelegate(delegate); } } @Override public EOSQLExpressionFactory expressionFactory() { return _forwardedAdaptor.expressionFactory(); } @Override public EOSchemaGeneration synchronizationFactory() { return _forwardedAdaptor.synchronizationFactory(); } @Override public EOSynchronizationFactory schemaSynchronizationFactory() { try { Method schemaSynchronizationFactoryMethod = _forwardedAdaptor.getClass().getMethod("schemaSynchronizationFactory"); return (EOSynchronizationFactory) schemaSynchronizationFactoryMethod.invoke(_forwardedAdaptor); } catch (Throwable e) { throw new RuntimeException("Failed to retrieve schemaSynchronizationFactory.", e); } } @Override public NSArray prototypeAttributes() { return _forwardedAdaptor.prototypeAttributes(); } public EOAdaptor forwardedAdaptor() { return _forwardedAdaptor; } @Override public EOAdaptorContext createAdaptorContext() { return _forwardedAdaptor.createAdaptorContext(); } @Override public void handleDroppedConnection() { _forwardedAdaptor.handleDroppedConnection(); } @Override public Class expressionClass() { return _forwardedAdaptor.expressionClass(); } @Override public Class defaultExpressionClass() { return _forwardedAdaptor.defaultExpressionClass(); } @Override public boolean isValidQualifierType(String typeName, EOModel model) { return _forwardedAdaptor.isValidQualifierType(typeName, model); } @Override public void assertConnectionDictionaryIsValid() { _forwardedAdaptor.assertConnectionDictionaryIsValid(); } @Override public boolean hasOpenChannels() { return _forwardedAdaptor.hasOpenChannels(); } @Override public NSDictionary connectionDictionary() { return _forwardedAdaptor.connectionDictionary(); } @Override public void setConnectionDictionary(NSDictionary dictionary) { _forwardedAdaptor.setConnectionDictionary(dictionary); } @Override public boolean canServiceModel(EOModel model) { return _forwardedAdaptor.canServiceModel(model); } @Override public Object fetchedValueForValue(Object value, EOAttribute att) { return _forwardedAdaptor.fetchedValueForValue(value, att); } @Override public String fetchedValueForStringValue(String value, EOAttribute att) { return _forwardedAdaptor.fetchedValueForStringValue(value, att); } @Override public Number fetchedValueForNumberValue(Number value, EOAttribute att) { return _forwardedAdaptor.fetchedValueForNumberValue(value, att); } @Override public NSTimestamp fetchedValueForDateValue(NSTimestamp value, EOAttribute att) { return _forwardedAdaptor.fetchedValueForDateValue(value, att); } @Override public NSData fetchedValueForDataValue(NSData value, EOAttribute att) { return _forwardedAdaptor.fetchedValueForDataValue(value, att); } @Override public boolean isDroppedConnectionException(Exception exception) { return _forwardedAdaptor.isDroppedConnectionException(exception); } @Override public Object delegate() { return (_forwardedAdaptor == null) ? super.delegate() : _forwardedAdaptor.delegate(); } @Override public void setDelegate(Object delegate) { if (_forwardedAdaptor != null) { _forwardedAdaptor.setDelegate(delegate); } else { super.setDelegate(delegate); } } @Override public String internalTypeForExternalType(String extType, EOModel model) { return _forwardedAdaptor.internalTypeForExternalType(extType, model); } @Override public NSArray externalTypesWithModel(EOModel model) { return _forwardedAdaptor.externalTypesWithModel(model); } @Override public void assignExternalTypeForAttribute(EOAttribute attribute) { _forwardedAdaptor.assignExternalTypeForAttribute(attribute); } @Override public void assignExternalInfoForAttribute(EOAttribute attribute) { _forwardedAdaptor.assignExternalInfoForAttribute(attribute); } @Override public void assignExternalInfoForEntity(EOEntity entity) { _forwardedAdaptor.assignExternalInfoForEntity(entity); } @Override public void assignExternalInfoForEntireModel(EOModel model) { _forwardedAdaptor.assignExternalInfoForEntireModel(model); } @Override public void dropDatabaseWithAdministrativeConnectionDictionary(NSDictionary administrativeConnectionDictionary) { _forwardedAdaptor.dropDatabaseWithAdministrativeConnectionDictionary(administrativeConnectionDictionary); } @Override public void createDatabaseWithAdministrativeConnectionDictionary(NSDictionary administrativeConnectionDictionary) { _forwardedAdaptor.createDatabaseWithAdministrativeConnectionDictionary(administrativeConnectionDictionary); } @Override public NSDictionary administrativeConnectionDictionaryForAdaptor(EOAdaptor adaptor) { return _forwardedAdaptor.administrativeConnectionDictionaryForAdaptor(adaptor); } }