From: <na...@us...> - 2010-09-12 08:29:59
|
Revision: 910 http://instantobjects.svn.sourceforge.net/instantobjects/revision/?rev=910&view=rev Author: nandod Date: 2010-09-12 08:29:52 +0000 (Sun, 12 Sep 2010) Log Message: ----------- * Small refactoring. Removed some duplicate functions. * svn:ignore set. Modified Paths: -------------- trunk/Source/Core/D2010/IOCore.dpk trunk/Source/Core/D2010/IOCore.dproj trunk/Source/Core/D2010/IOCore.res trunk/Source/Core/InstantBrokers.pas trunk/Source/Design/D2010/DclIOCore.dproj Property Changed: ---------------- trunk/Source/Brokers/BDE/D2010/ trunk/Source/Brokers/XML/D2010/ Property changes on: trunk/Source/Brokers/BDE/D2010 ___________________________________________________________________ Modified: svn:ignore - *.dcu *.local + *.dcu *.local __history Property changes on: trunk/Source/Brokers/XML/D2010 ___________________________________________________________________ Modified: svn:ignore - *.dcu *.local *.identcache + *.dcu *.local *.identcache __history Modified: trunk/Source/Core/D2010/IOCore.dpk =================================================================== --- trunk/Source/Core/D2010/IOCore.dpk 2010-09-12 06:25:23 UTC (rev 909) +++ trunk/Source/Core/D2010/IOCore.dpk 2010-09-12 08:29:52 UTC (rev 910) @@ -37,6 +37,7 @@ InstantClasses in '..\InstantClasses.pas', InstantConsts in '..\InstantConsts.pas', InstantRtti in '..\InstantRtti.pas', + InstantRttiAttributes in '..\InstantRttiAttributes.pas', InstantCommand in '..\InstantCommand.pas', InstantPersistence in '..\InstantPersistence.pas', InstantExplorer in '..\InstantExplorer.pas', @@ -58,7 +59,6 @@ InstantBrokers in '..\InstantBrokers.pas', InstantMetadata in '..\InstantMetadata.pas', InstantStandardValidators in '..\InstantStandardValidators.pas', - InstantValidation in '..\InstantValidation.pas', - InstantRttiAttributes in '..\InstantRttiAttributes.pas'; + InstantValidation in '..\InstantValidation.pas'; end. Modified: trunk/Source/Core/D2010/IOCore.dproj =================================================================== --- trunk/Source/Core/D2010/IOCore.dproj 2010-09-12 06:25:23 UTC (rev 909) +++ trunk/Source/Core/D2010/IOCore.dproj 2010-09-12 08:29:52 UTC (rev 910) @@ -1,10 +1,13 @@ <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> - <ProjectGuid>{8B25F276-90BF-4315-8F75-B69FE27DBB35}</ProjectGuid> + <ProjectGuid>{82e2f82a-6598-4acf-bbca-e2315e5938f6}</ProjectGuid> <MainSource>IOCore.dpk</MainSource> - <Config Condition="'$(Config)'==''">Debug</Config> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <DCC_DCCCompiler>DCC32</DCC_DCCCompiler> + <DCC_DependencyCheckOutputName>C:\Users\nandod\Documents\RAD Studio\5.0\Bpl\IOCore_D11.bpl</DCC_DependencyCheckOutputName> <ProjectVersion>12.0</ProjectVersion> + <Config Condition="'$(Config)'==''">Debug</Config> </PropertyGroup> <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''"> <Base>true</Base> @@ -20,28 +23,78 @@ <Base>true</Base> </PropertyGroup> <PropertyGroup Condition="'$(Base)'!=''"> - <DCC_DependencyCheckOutputName>C:\Documents and Settings\All Users\Documents\RAD Studio\7.0\Bpl\IOCore_D14.bpl</DCC_DependencyCheckOutputName> + <DCC_DependencyCheckOutputName>C:\Users\Public\Documents\RAD Studio\7.0\Bpl\IOCore_D14.bpl</DCC_DependencyCheckOutputName> + <DCC_ImageBase>00400000</DCC_ImageBase> + <RuntimeOnlyPackage>true</RuntimeOnlyPackage> <DCC_TypedAtParameter>true</DCC_TypedAtParameter> - <RuntimeOnlyPackage>true</RuntimeOnlyPackage> - <DCC_UnitAlias>WinTypes=Windows;WinProcs=Windows;$(DCC_UnitAlias)</DCC_UnitAlias> <DCC_Description>InstantObjects Run-Time Package (Delphi 2010)</DCC_Description> + <DesignOnlyPackage>false</DesignOnlyPackage> <DCC_OutputNeverBuildDcps>true</DCC_OutputNeverBuildDcps> <GenDll>true</GenDll> <GenPackage>true</GenPackage> <DllSuffix>_D14</DllSuffix> <DCC_SymbolReferenceInfo>1</DCC_SymbolReferenceInfo> - <DCC_ImageBase>00400000</DCC_ImageBase> - <DCC_Platform>x86</DCC_Platform> </PropertyGroup> <PropertyGroup Condition="'$(Cfg_1)'!=''"> - <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols> + <Version>7.0</Version> + <DCC_DebugInformation>False</DCC_DebugInformation> + <DCC_LocalDebugSymbols>False</DCC_LocalDebugSymbols> + <DCC_TypedAtParameter>True</DCC_TypedAtParameter> + <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo> <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define> - <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo> - <DCC_DebugInformation>false</DCC_DebugInformation> </PropertyGroup> <PropertyGroup Condition="'$(Cfg_2)'!=''"> - <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define> + <Version>7.0</Version> + <DCC_TypedAtParameter>True</DCC_TypedAtParameter> </PropertyGroup> + <ProjectExtensions> + <Borland.Personality>Delphi.Personality.12</Borland.Personality> + <Borland.ProjectType>Package</Borland.ProjectType> + <BorlandProject> + <Delphi.Personality> + <Compiler> + <Compiler Name="UsePackages">False</Compiler> + <Compiler Name="Packages"/> + </Compiler> + <Parameters> + <Parameters Name="UseLauncher">False</Parameters> + <Parameters Name="LoadAllSymbols">True</Parameters> + <Parameters Name="LoadUnspecifiedSymbols">False</Parameters> + </Parameters> + <VersionInfo> + <VersionInfo Name="IncludeVerInfo">True</VersionInfo> + <VersionInfo Name="AutoIncBuild">False</VersionInfo> + <VersionInfo Name="MajorVer">2</VersionInfo> + <VersionInfo Name="MinorVer">1</VersionInfo> + <VersionInfo Name="Release">0</VersionInfo> + <VersionInfo Name="Build">0</VersionInfo> + <VersionInfo Name="Debug">False</VersionInfo> + <VersionInfo Name="PreRelease">False</VersionInfo> + <VersionInfo Name="Special">False</VersionInfo> + <VersionInfo Name="Private">False</VersionInfo> + <VersionInfo Name="DLL">False</VersionInfo> + <VersionInfo Name="Locale">1040</VersionInfo> + <VersionInfo Name="CodePage">1252</VersionInfo> + </VersionInfo> + <VersionInfoKeys> + <VersionInfoKeys Name="CompanyName">www.instantobjects.org</VersionInfoKeys> + <VersionInfoKeys Name="FileDescription">InstantObjects</VersionInfoKeys> + <VersionInfoKeys Name="FileVersion">2.1.0.0</VersionInfoKeys> + <VersionInfoKeys Name="InternalName"/> + <VersionInfoKeys Name="LegalCopyright"/> + <VersionInfoKeys Name="LegalTrademarks"/> + <VersionInfoKeys Name="OriginalFilename"/> + <VersionInfoKeys Name="ProductName">InstantObjects</VersionInfoKeys> + <VersionInfoKeys Name="ProductVersion">2.1.0.0</VersionInfoKeys> + <VersionInfoKeys Name="Comments"/> + </VersionInfoKeys> + <Source> + <Source Name="MainSource">IOCore.dpk</Source> + </Source> + </Delphi.Personality> + </BorlandProject> + <ProjectFileVersion>12</ProjectFileVersion> + </ProjectExtensions> <ItemGroup> <DelphiCompile Include="IOCore.dpk"> <MainSource>MainSource</MainSource> @@ -53,6 +106,7 @@ <DCCReference Include="..\InstantClasses.pas"/> <DCCReference Include="..\InstantConsts.pas"/> <DCCReference Include="..\InstantRtti.pas"/> + <DCCReference Include="..\InstantRttiAttributes.pas"/> <DCCReference Include="..\InstantCommand.pas"/> <DCCReference Include="..\InstantPersistence.pas"/> <DCCReference Include="..\InstantExplorer.pas"/> @@ -83,7 +137,6 @@ <DCCReference Include="..\InstantMetadata.pas"/> <DCCReference Include="..\InstantStandardValidators.pas"/> <DCCReference Include="..\InstantValidation.pas"/> - <DCCReference Include="..\InstantRttiAttributes.pas"/> <BuildConfiguration Include="Base"> <Key>Base</Key> </BuildConfiguration> @@ -97,54 +150,4 @@ </BuildConfiguration> </ItemGroup> <Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/> - <ProjectExtensions> - <Borland.Personality>Delphi.Personality.12</Borland.Personality> - <Borland.ProjectType>Package</Borland.ProjectType> - <BorlandProject> - <Delphi.Personality> - <Source> - <Source Name="MainSource">IOCore.dpk</Source> - </Source> - <Parameters> - <Parameters Name="UseLauncher">False</Parameters> - <Parameters Name="LoadAllSymbols">True</Parameters> - <Parameters Name="LoadUnspecifiedSymbols">False</Parameters> - </Parameters> - <VersionInfo> - <VersionInfo Name="IncludeVerInfo">False</VersionInfo> - <VersionInfo Name="AutoIncBuild">False</VersionInfo> - <VersionInfo Name="MajorVer">1</VersionInfo> - <VersionInfo Name="MinorVer">0</VersionInfo> - <VersionInfo Name="Release">0</VersionInfo> - <VersionInfo Name="Build">0</VersionInfo> - <VersionInfo Name="Debug">False</VersionInfo> - <VersionInfo Name="PreRelease">False</VersionInfo> - <VersionInfo Name="Special">False</VersionInfo> - <VersionInfo Name="Private">False</VersionInfo> - <VersionInfo Name="DLL">False</VersionInfo> - <VersionInfo Name="Locale">1033</VersionInfo> - <VersionInfo Name="CodePage">1252</VersionInfo> - </VersionInfo> - <VersionInfoKeys> - <VersionInfoKeys Name="CompanyName"/> - <VersionInfoKeys Name="FileDescription"/> - <VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys> - <VersionInfoKeys Name="InternalName"/> - <VersionInfoKeys Name="LegalCopyright"/> - <VersionInfoKeys Name="LegalTrademarks"/> - <VersionInfoKeys Name="OriginalFilename"/> - <VersionInfoKeys Name="ProductName"/> - <VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys> - <VersionInfoKeys Name="Comments"/> - </VersionInfoKeys> - <Excluded_Packages> - <Excluded_Packages Name="$(BDS)\bin\bcboffice2k140.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages> - <Excluded_Packages Name="$(BDS)\bin\bcbofficexp140.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages> - <Excluded_Packages Name="$(BDS)\bin\dcloffice2k140.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages> - <Excluded_Packages Name="$(BDS)\bin\dclofficexp140.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages> - </Excluded_Packages> - </Delphi.Personality> - </BorlandProject> - <ProjectFileVersion>12</ProjectFileVersion> - </ProjectExtensions> </Project> Modified: trunk/Source/Core/D2010/IOCore.res =================================================================== (Binary files differ) Modified: trunk/Source/Core/InstantBrokers.pas =================================================================== --- trunk/Source/Core/InstantBrokers.pas 2010-09-12 06:25:23 UTC (rev 909) +++ trunk/Source/Core/InstantBrokers.pas 2010-09-12 08:29:52 UTC (rev 910) @@ -825,6 +825,7 @@ function TablePathToAlias(const TablePath: string): string; function GetChildContextIndex: Integer; function GetChildContextLevel: Integer; + function RootAttribToFieldName(const AttribName: string): string; protected function AddCriteria(const Criteria: string): Integer; function AddTablePath(const TablePath: string): Integer; @@ -891,9 +892,6 @@ protected procedure BeforeTranslate; override; procedure Clear; override; - procedure CollectObjects(AObject: TInstantIQLObject; - AClassType: TInstantIQLObjectClass; AList: TList; - const AStopClassTypes: array of TInstantIQLObjectClass); function GetDelimiters: string; virtual; function GetQuote: Char; virtual; function GetWildcard: string; virtual; @@ -903,7 +901,6 @@ function InSubquery(const AObject: TInstantIQLObject; out ASubQuery: TInstantIQLSubquery): Boolean; // Returns True if the given attribute is a "root" attribute. Root // attributes are Class and Id. - function IsRootAttribute(const AttributeName: string): Boolean; // funzione non membro function IsPrimary(AObject: TInstantIQLObject): Boolean; function TranslateObject(AObject: TInstantIQLObject; Writer: TInstantIQLWriter): Boolean; override; @@ -1037,15 +1034,6 @@ default True; end; - function ConcatPath(const APathText, AttribName: string): string; - function ExtractTarget(const PathStr: string): string; - function RootAttribToFieldName(const AttribName: string): string; - function IsRootAttribute(const AttributeName: string): Boolean; - procedure CollectObjects( - AObject: TInstantIQLObject; AClassType: TInstantIQLObjectClass; AList: TList; - const AStopClassTypes: array of TInstantIQLObjectClass); - procedure WriteAnd(Writer: TInstantIQLWriter); - var InstantLogProc: procedure (const AString: string) of object; @@ -1093,26 +1081,6 @@ end; {$ENDIF} -function CreateObjectFromDataSet(AClass: TClass; DataSet: TDataSet): TObject; -var - I: Integer; - FieldName: string; -begin - if AClass = nil then - raise Exception.Create(SUnassignedClass) - else if AClass.InheritsFrom(TInstantObject) then - Result := TInstantObjectClass(AClass).Create - else - Result := AClass.Create; - for I := 0 to Pred(DataSet.FieldCount) do - begin - FieldName := StringReplace( - DataSet.Fields[I].FieldName, '_', '.', [rfReplaceAll]); - InstantSetProperty(Result, FieldName, DataSet.Fields[I].Value); - end; -end; - - function ConcatPath(const APathText, AttribName: string): string; begin Result := Format('%s%s%s', [APathText, InstantDot, AttribName]); @@ -1126,22 +1094,14 @@ Result := Copy(PathStr, I + 1, Length(PathStr) - I) end; -function RootAttribToFieldName(const AttribName: string): string; -begin - if SameText(AttribName, InstantClassFieldName) then - Result := InstantClassFieldName - else if SameText(AttribName, InstantIdFieldName) then - Result := InstantIdFieldName; -end; - function IsRootAttribute(const AttributeName: string): Boolean; begin Result := SameText(AttributeName, InstantClassFieldName) or SameText(AttributeName, InstantIdFieldName); end; -procedure CollectObjects( - AObject: TInstantIQLObject; AClassType: TInstantIQLObjectClass; AList: TList; +procedure CollectObjects(AObject: TInstantIQLObject; + AClassType: TInstantIQLObjectClass; AList: TList; const AStopClassTypes: array of TInstantIQLObjectClass); var I: Integer; @@ -5100,15 +5060,19 @@ end; procedure TInstantCustomRelationalQuery.TranslateCommand; +var + LTranslator: TInstantRelationalTranslator; begin if TranslatorClass <> nil then - with TranslatorClass.Create(Self) do - try - CommandText := Self.Command; - Statement := StatementText; - finally - Free; - end; + begin + LTranslator := TranslatorClass.Create(Self); + try + LTranslator.CommandText := Command; + Statement := LTranslator.StatementText; + finally + LTranslator.Free; + end; + end; end; class function TInstantCustomRelationalQuery.TranslatorClass: TInstantRelationalTranslatorClass; @@ -5165,38 +5129,6 @@ Context.Clear; end; -procedure TInstantRelationalTranslator.CollectObjects( - AObject: TInstantIQLObject; AClassType: TInstantIQLObjectClass; AList: TList; - const AStopClassTypes: array of TInstantIQLObjectClass); -var - I: Integer; - LObject: TInstantIQLObject; - - function IsStopClassType(const AClassType: TClass): Boolean; - var - LClassTypeIndex: Integer; - begin - Result := True; - for LClassTypeIndex := Low(AStopClassTypes) to High(AStopClassTypes) do - if AClassType = AStopClassTypes[LClassTypeIndex] then - Exit; - Result := False; - end; - -begin - if not (Assigned(AObject) and Assigned(AList)) then - Exit; - for I := 0 to Pred(AObject.ObjectCount) do - begin - LObject := AObject[I]; - if IsStopClassType(LObject.ClassType) then - Continue; - if LObject is AClassType then - AList.Add(LObject); - CollectObjects(LObject, AClassType, AList, AStopClassTypes) - end; -end; - function TInstantRelationalTranslator.GetConnector: TInstantRelationalConnector; begin if HasConnector then @@ -5274,13 +5206,6 @@ ((AObject = Command) or (AObject.Owner = Command)); end; -function TInstantRelationalTranslator.IsRootAttribute( - const AttributeName: string): Boolean; -begin - Result := SameText(AttributeName, InstantClassFieldName) or - SameText(AttributeName, InstantIdFieldName); -end; - function TInstantRelationalTranslator.QuoteString(const Str: string): string; begin Result := InstantQuote(Str, Quote); @@ -5587,6 +5512,26 @@ var ClassNameField, ObjectNameField: TField; AClass: TInstantObjectClass; + + function CreateObjectFromDataSet(AClass: TClass; DataSet: TDataSet): TObject; + var + I: Integer; + FieldName: string; + begin + if AClass = nil then + raise Exception.Create(SUnassignedClass) + else if AClass.InheritsFrom(TInstantObject) then + Result := TInstantObjectClass(AClass).Create + else + Result := AClass.Create; + for I := 0 to Pred(DataSet.FieldCount) do + begin + FieldName := StringReplace( + DataSet.Fields[I].FieldName, '_', '.', [rfReplaceAll]); + InstantSetProperty(Result, FieldName, DataSet.Fields[I].Value); + end; + end; + begin RowNumber := Row; ObjectNameField := DataSet.FindField(InstantIdFieldName); @@ -6491,6 +6436,14 @@ PathToTarget(PathText, Result, FieldName); end; +function TInstantTranslationContext.RootAttribToFieldName(const AttribName: string): string; +begin + if SameText(AttribName, InstantClassFieldName) then + Result := InstantClassFieldName + else if SameText(AttribName, InstantIdFieldName) then + Result := InstantIdFieldName; +end; + function TInstantTranslationContext.PathToTarget(const PathText: string; out TablePath, FieldName: string; const AClassMetadata: TInstantClassMetadata): TInstantAttributeMetadata; Modified: trunk/Source/Design/D2010/DclIOCore.dproj =================================================================== --- trunk/Source/Design/D2010/DclIOCore.dproj 2010-09-12 06:25:23 UTC (rev 909) +++ trunk/Source/Design/D2010/DclIOCore.dproj 2010-09-12 08:29:52 UTC (rev 910) @@ -20,7 +20,7 @@ <Base>true</Base> </PropertyGroup> <PropertyGroup Condition="'$(Base)'!=''"> - <DCC_DependencyCheckOutputName>C:\Users\Public\Documents\RAD Studio\7.0\Bpl\DclIOCore_D14.bpl</DCC_DependencyCheckOutputName> + <DCC_DependencyCheckOutputName>..\..\..\..\..\..\..\Public\Documents\RAD Studio\7.0\Bpl\DclIOCore_D14.bpl</DCC_DependencyCheckOutputName> <DesignOnlyPackage>true</DesignOnlyPackage> <DCC_Description>InstantObjects Design-Time Package (Delphi 2010)</DCC_Description> <DCC_TypedAtParameter>true</DCC_TypedAtParameter> |