[press-svn] SF.net SVN: pressobjects:[1087] trunk/Demos/WebBasic
Status: Pre-Alpha
Brought to you by:
jcmoraisjr
From: <jcm...@us...> - 2012-04-25 02:48:42
|
Revision: 1087 http://pressobjects.svn.sourceforge.net/pressobjects/?rev=1087&view=rev Author: jcmoraisjr Date: 2012-04-25 02:48:36 +0000 (Wed, 25 Apr 2012) Log Message: ----------- [Web] Persistence sample. Modified Paths: -------------- trunk/Demos/WebBasic/WebBasic.lpi trunk/Demos/WebBasic/WebBasic.lpr trunk/Demos/WebBasic/WebBrokers.pas trunk/Demos/WebBasic/WebHome.pas Added Paths: ----------- trunk/Demos/WebBasic/PersonBO.pas trunk/Demos/WebBasic/WebBasic.cf trunk/Demos/WebBasic/WebPerson.pas Added: trunk/Demos/WebBasic/PersonBO.pas =================================================================== --- trunk/Demos/WebBasic/PersonBO.pas (rev 0) +++ trunk/Demos/WebBasic/PersonBO.pas 2012-04-25 02:48:36 UTC (rev 1087) @@ -0,0 +1,54 @@ +unit PersonBO; + +{$mode objfpc}{$H+} + +interface + +uses + PressSubject, + PressAttributes; + +type + + { TPerson } + + TPerson = class(TPressObject) + _Name: TPressString; + private + function GetName: string; + procedure SetName(AValue: string); + protected + class function InternalMetadataStr: string; override; + published + property Name: string read GetName write SetName; + end; + +implementation + +{ TPerson } + +function TPerson.GetName: string; +begin + Result := _Name.Value; +end; + +procedure TPerson.SetName(AValue: string); +begin + _Name.Value := AValue; +end; + +class function TPerson.InternalMetadataStr: string; +begin + Result := 'TPerson IsPersistent PersistentName="Person" (' + + 'Name: String(60) PersistentName="PersonName";' + + ')'; +end; + +initialization + TPerson.RegisterClass; + +finalization + TPerson.UnregisterClass; + +end. + Property changes on: trunk/Demos/WebBasic/PersonBO.pas ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: trunk/Demos/WebBasic/WebBasic.cf =================================================================== --- trunk/Demos/WebBasic/WebBasic.cf (rev 0) +++ trunk/Demos/WebBasic/WebBasic.cf 2012-04-25 02:48:36 UTC (rev 1087) @@ -0,0 +1,9 @@ +[OPFBroker] +DefaultServiceName := 'SQLdb'; + +[OPFBroker.SQLdb] +Connector.Database.ConnectorType := 'postgresql'; +Connector.Database.Hostname := 'localhost'; +Connector.Database.DatabaseName := 'webbasic'; +Connector.Database.UserName := 'webbasic'; +Connector.Database.Password := 'abc'; Property changes on: trunk/Demos/WebBasic/WebBasic.cf ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: trunk/Demos/WebBasic/WebBasic.lpi =================================================================== --- trunk/Demos/WebBasic/WebBasic.lpi 2012-04-25 02:44:15 UTC (rev 1086) +++ trunk/Demos/WebBasic/WebBasic.lpi 2012-04-25 02:48:36 UTC (rev 1087) @@ -35,21 +35,24 @@ <LaunchingApplication PathPlusParams="/usr/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/> </local> </RunParams> - <RequiredPackages Count="4"> + <RequiredPackages Count="5"> <Item1> - <PackageName Value="PressLazWebRT"/> + <PackageName Value="PressLazSQLdbRT"/> </Item1> <Item2> - <PackageName Value="PressLazCoreRT"/> + <PackageName Value="PressLazWebRT"/> </Item2> <Item3> - <PackageName Value="WebLaz"/> + <PackageName Value="PressLazCoreRT"/> </Item3> <Item4> + <PackageName Value="WebLaz"/> + </Item4> + <Item5> <PackageName Value="FCL"/> - </Item4> + </Item5> </RequiredPackages> - <Units Count="5"> + <Units Count="7"> <Unit0> <Filename Value="WebBasic.lpr"/> <IsPartOfProject Value="True"/> @@ -75,6 +78,16 @@ <IsPartOfProject Value="True"/> <UnitName Value="WebHome"/> </Unit4> + <Unit5> + <Filename Value="PersonBO.pas"/> + <IsPartOfProject Value="True"/> + <UnitName Value="PersonBO"/> + </Unit5> + <Unit6> + <Filename Value="WebPerson.pas"/> + <IsPartOfProject Value="True"/> + <UnitName Value="WebPerson"/> + </Unit6> </Units> </ProjectOptions> <CompilerOptions> Modified: trunk/Demos/WebBasic/WebBasic.lpr =================================================================== --- trunk/Demos/WebBasic/WebBasic.lpr 2012-04-25 02:44:15 UTC (rev 1086) +++ trunk/Demos/WebBasic/WebBasic.lpr 2012-04-25 02:48:36 UTC (rev 1087) @@ -4,7 +4,7 @@ heaptrc, PressApplication, PressLazWebRT, WebBrokers, - WebHelloWorld, WebInfo, WebHome; + WebHelloWorld, WebInfo, WebHome, PersonBO, WebPerson; begin PressApp.Run; Modified: trunk/Demos/WebBasic/WebBrokers.pas =================================================================== --- trunk/Demos/WebBasic/WebBrokers.pas 2012-04-25 02:44:15 UTC (rev 1086) +++ trunk/Demos/WebBasic/WebBrokers.pas 2012-04-25 02:48:36 UTC (rev 1087) @@ -6,9 +6,19 @@ uses PressMessages_ptbr, + PressSubject, + PressAttributes, + PressSQLdbBroker, + pqconnection, PressWebFCLCGIBroker; implementation +initialization + PressModel.DefaultKeyType := TPressInt64; + PressModel.DefaultGeneratorName := 'gen_oid'; + PressModel.ClassIdType := TPressInt64; + PressModel.ClassIdStorageName := 'Classes'; + end. Modified: trunk/Demos/WebBasic/WebHome.pas =================================================================== --- trunk/Demos/WebBasic/WebHome.pas 2012-04-25 02:44:15 UTC (rev 1086) +++ trunk/Demos/WebBasic/WebHome.pas 2012-04-25 02:48:36 UTC (rev 1087) @@ -31,7 +31,7 @@ procedure TWebIndexRequestHandler.HandleRequest(ARequest: TRequest; AResponse: TResponse); begin - AResponse.Contents.Add('<a href="WebBasic/">Go Home</a><br/>'); + AResponse.Contents.Add('<a href="' + ARequest.ScriptName + '/">Home</a><br/>'); end; { TWebHomeRequestHandler } @@ -40,7 +40,8 @@ AResponse: TResponse); begin AResponse.Contents.Add('<a href="hello">Hello</a><br/>'); - AResponse.Contents.Add('<a href="info">Info</a><br/>'); + AResponse.Contents.Add('<a href="info">Info</a> (http content)<br/>'); + AResponse.Contents.Add('<a href="person/">Person</a> (Persistence)<br/>'); end; initialization Added: trunk/Demos/WebBasic/WebPerson.pas =================================================================== --- trunk/Demos/WebBasic/WebPerson.pas (rev 0) +++ trunk/Demos/WebBasic/WebPerson.pas 2012-04-25 02:48:36 UTC (rev 1087) @@ -0,0 +1,64 @@ +unit WebPerson; + +{$mode objfpc}{$H+} + +interface + +uses + HTTPDefs, + PressWebHandler; + +type + + { TPersonRequestHandler } + + TPersonRequestHandler = class(TInterfacedObject, IPressWebRequestHandler) + protected + procedure HandleRequest(ARequest: TRequest; AResponse: TResponse); + end; + +implementation + +uses + PressOPF, + PersonBO; + +{ TPersonRequestHandler } + +procedure TPersonRequestHandler.HandleRequest(ARequest: TRequest; + AResponse: TResponse); +var + VPerson: TPerson; +begin + AResponse.Contents.Add('<html><head><meta charset="UTF-8"></head><body>'); + if ARequest.PathInfo = '/person/save' then + begin + VPerson := TPerson.Create; + try + VPerson.Name := ARequest.ContentFields.Values['name']; + PressOPFService.Store(VPerson); + AResponse.Contents.Add(VPerson.Name + ' saved'); + finally + VPerson.Free; + end; + end else if ARequest.PathInfo = '/person/ddl' then + begin + AResponse.Contents.Add('<textarea cols="60" rows="30">'); + AResponse.Contents.Add(PressOPFService.CreateDatabaseStatement); + AResponse.Contents.Add('</textarea>'); + end else + begin + AResponse.Contents.Add('<form method="post" action="' + ARequest.ScriptName + '/person/save">'); + AResponse.Contents.Add('Name: <input type="text" name="name" value="">'); + AResponse.Contents.Add('<input type="submit" value="Save">'); + AResponse.Contents.Add('</form>'); + AResponse.Contents.Add('<a href="' + ARequest.ScriptName + '/person/ddl">DDL</a>'); + end; + AResponse.Contents.Add('<body></html>'); +end; + +initialization + TPressWebHandler.DefaultService.RegisterRequestHandler('/person/*', TPersonRequestHandler.Create); + +end. + Property changes on: trunk/Demos/WebBasic/WebPerson.pas ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |