|
Software Development Kit to the Delphi-Win32 and Free Pascal compilers |
| Home > Wiki > br/Customizações do OPF |
br/Customizações do OPFenglish (en) | português (br) [edit] Customizar o DDL ou DML gerado pelo OPFTodos os serviços do PressObjects podem ser customizados. Para alterar o SQL gerado pelo OPF, registre um novo serviço que herde da classe original. O exemplo abaixo apresenta a declaração de classes para alterar o Broker para SQLdb com objetivo de incluir um collate nos atributos string e memo para banco Interbase/Firebird. Para utilizar o serviço adicione a unidade OPFSQLdbBroker ao projeto. Unidade com novo DDLBuilder para Interbase/Firebird: unit OPFIBFbBroker;
interface
uses
PressOPFStorage, PressIBFbBroker;
type
TOPFIBFbDDLBuilder = class(TPressIBFbDDLBuilder)
public
function CreateFieldStatement(AFieldMetadata: TPressOPFFieldMetadata): string; override;
end;
implementation
uses
PressSubject;
function TOPFIBFbDDLBuilder.CreateFieldStatement(
AFieldMetadata: TPressOPFFieldMetadata): string;
begin
Result := inherited CreateFieldStatement(AFieldMetadata);
if AFieldMetadata.DataType in [attAnsiString, attMemo] then
Result := Result + ' character set iso8859_1 collate pt_br';
end;
end.
unit OPFSQLdbBroker;
interface
uses
PressOPFMapper, PressOPFSQLBuilder, PressSQLdbBroker;
type
TOPFSQLdbBroker = class(TPressSQLdbBroker)
protected
function InternalMapperClass: TPressOPFObjectMapperClass; override;
end;
TOPFSQLdbMapper = class(TPressSQLdbObjectMapper)
protected
function InternalDDLBuilderClass: TPressOPFDDLBuilderClass; override;
end;
implementation
uses
PressIBFbBroker,
OPFIBFbBroker;
function TOPFSQLdbBroker.InternalMapperClass: TPressOPFObjectMapperClass;
begin
Result := TOPFSQLdbMapper;
end;
function TOPFSQLdbMapper.InternalDDLBuilderClass: TPressOPFDDLBuilderClass;
begin
Result := inherited InternalDDLBuilderClass;
if Result = TPressIBFbDDLBuilder then
Result := TOPFIBFbDDLBuilder;
end;
initialization
TOPFSQLdbBroker.RegisterService;
finalization
TOPFSQLdbBroker.UnregisterService;
end.
|
Personal tools |