Changeset 44 for trunk/Application
- Timestamp:
- Mar 9, 2012, 3:02:00 PM (13 years ago)
- Location:
- trunk/Application
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Application/Clients/UChronisClientMySQL.pas
r43 r44 16 16 procedure InitSystemTypes; override; 17 17 function GetConnected: Boolean; override; 18 procedure Init; override; 18 19 public 19 20 Database: TSqlDatabase; 20 21 procedure ObjectLoad(AObject: TObjectProxy); override; 21 22 procedure ObjectSave(AObject: TObjectProxy); override; 22 procedure ObjectAdd(AObject: TObjectProxy); override;23 23 procedure ObjectDelete(AObject: TObjectProxy); override; 24 24 procedure ListLoad(AList: TListProxy); override; … … 64 64 65 65 procedure TChronisClientMySQL.ObjectLoad(AObject: TObjectProxy); 66 begin 67 66 var 67 DbRows: TDbRows; 68 NewObject: TObjectProxy; 69 Table: string; 70 begin 71 try 72 DbRows := TDbRows.Create; 73 Table := '`' + AObject.ObjectName + '`'; 74 if AObject.SchemaName <> '' then Table := '`' + AObject.SchemaName + '`.' + Table; 75 Database.Query(DbRows, 'SELECT * FROM ' + Table + 76 ' WHERE `Id`=' + IntToStr(AObject.Id)); 77 AObject.Properties.Assign(TDictionaryStringString(DbRows[0])); 78 finally 79 DbRows.Free; 80 end; 68 81 end; 69 82 70 83 procedure TChronisClientMySQL.ObjectSave(AObject: TObjectProxy); 71 begin 72 inherited ObjectSave(AObject); 73 end; 74 75 procedure TChronisClientMySQL.ObjectAdd(AObject: TObjectProxy); 76 begin 77 inherited ObjectAdd(AObject); 84 var 85 DbRows: TDbRows; 86 NewObject: TObjectProxy; 87 Table: string; 88 begin 89 try 90 DbRows := TDbRows.Create; 91 Database.Replace(AObject.ObjectName, AObject.Properties, AObject.SchemaName); 92 if AObject.Id = 0 then AObject.Id := Database.LastInsertId; 93 finally 94 DbRows.Free; 95 end; 78 96 end; 79 97 80 98 procedure TChronisClientMySQL.ObjectDelete(AObject: TObjectProxy); 81 99 begin 82 inherited ObjectDelete(AObject); 100 Database.Delete(AObject.ObjectName, 'Id=' + IntToStr(AObject.Id), 101 AObject.SchemaName); 83 102 end; 84 103 … … 143 162 raise Exception.Create(Format(SMissingBaseType, [RefType.Name])); 144 163 145 Query := Query + '`' + Items[I].Key + '` ' + RefType.DbType + ' N OT NULL,';164 Query := Query + '`' + Items[I].Key + '` ' + RefType.DbType + ' NULL,'; 146 165 end; 147 166 Query := Query + 'PRIMARY KEY (`Id`)' + … … 177 196 end; 178 197 198 procedure TChronisClientMySQL.Init; 199 begin 200 inherited; 201 end; 202 179 203 constructor TChronisClientMySQL.Create; 180 204 begin … … 197 221 Database.Database := Schema; 198 222 Database.Connect; 223 Init; 199 224 end; 200 225 -
trunk/Application/Clients/UChronisClientXMLRPC.pas
r43 r44 9 9 10 10 type 11 12 { TChronisClientXMLRPC } 13 11 14 TChronisClientXMLRPC = class(TChronisClient) 12 15 end; … … 14 17 implementation 15 18 19 16 20 end. 17 21 -
trunk/Application/UChronisClient.pas
r43 r44 7 7 uses 8 8 Classes, SysUtils, SpecializedList, SpecializedDictionary; 9 10 const 11 SystemVersionObject = 'SystemVersion'; 9 12 10 13 type … … 26 29 procedure Save; 27 30 procedure Delete; 28 procedure Add;29 31 constructor Create; 30 32 destructor Destroy; override; … … 81 83 protected 82 84 procedure InitSystemTypes; virtual; 85 procedure Init; virtual; 83 86 function GetConnected: Boolean; virtual; 84 87 public … … 89 92 Password: string; 90 93 Types: TChronisTypeList; 94 Version: string; 91 95 procedure ObjectLoad(AObject: TObjectProxy); virtual; abstract; 92 96 procedure ObjectSave(AObject: TObjectProxy); virtual; abstract; 93 procedure ObjectAdd(AObject: TObjectProxy); virtual; abstract;94 97 procedure ObjectDelete(AObject: TObjectProxy); virtual; abstract; 95 98 procedure ListLoad(AList: TListProxy); virtual; abstract; … … 98 101 procedure TypeUndefine(AType: TChronisType); virtual; abstract; 99 102 procedure CheckTypes; 103 function TypeExists(Name: string): Boolean; virtual; abstract; 100 104 constructor Create; virtual; 101 105 destructor Destroy; override; 102 procedure Connect; virtual; abstract; 103 procedure Disconnect; virtual; abstract; 106 procedure Connect; virtual; 107 procedure Disconnect; virtual; 108 procedure Install; virtual; 109 procedure Uninstall; virtual; 110 procedure Update; virtual; 104 111 property Connected: Boolean read GetConnected; 105 112 end; … … 110 117 resourcestring 111 118 SClientNotSet = 'Client not set'; 119 SNotSupported = 'Not supported'; 120 SVersionMismatch = 'Version mismatch, client: %0:s, server: %1:s. Please upgrade database.'; 121 112 122 113 123 { TChronisTypeList } … … 174 184 end; 175 185 176 procedure TObjectProxy.Add;177 begin178 if Assigned(Client) then Client.ObjectAdd(Self)179 else raise EClientNotSet.Create(SClientNotSet);180 end;181 182 186 constructor TObjectProxy.Create; 183 187 begin … … 230 234 procedure TChronisClient.InitSystemTypes; 231 235 begin 236 end; 237 238 procedure TChronisClient.Init; 239 var 240 NewProxy: TListProxy; 241 NewType: TChronisType; 242 NewObject: TObjectProxy; 243 DbVersion: string; 244 begin 245 NewProxy := TListProxy.Create; 246 NewProxy.Client := Self; 247 NewProxy.SchemaName := 'information_schema'; 248 NewProxy.ObjectName := 'TABLES'; 249 NewProxy.Condition := '(TABLE_SCHEMA = "' + Schema + 250 '") AND (TABLE_NAME = "' + SystemVersionObject + '")'; 251 NewProxy.Load; 252 if NewProxy.Objects.Count > 0 then begin 253 DbVersion := TObjectProxy(NewProxy.Objects[0]).Properties.Values['Version']; 254 if Version <> DbVersion then 255 raise Exception.Create(Format(SVersionMismatch, [Version, DbVersion])); 256 end else begin 257 NewType := TChronisType.Create; 258 NewType.Client := Self; 259 NewType.Name := SystemVersionObject; 260 NewType.Properties.Add('Version', 'String'); 261 NewType.Properties.Add('Time', 'DateTime'); 262 NewType.Define; 263 264 NewObject := TObjectProxy.Create; 265 NewObject.Client := Self; 266 NewObject.SchemaName := Schema; 267 NewObject.ObjectName := SystemVersionObject; 268 NewObject.Properties.Add('Version', Version); 269 NewObject.Properties.Add('Time', 'NOW()'); 270 NewObject.Save; 271 272 Install; 273 end; 232 274 end; 233 275 … … 287 329 end; 288 330 331 procedure TChronisClient.Connect; 332 begin 333 raise Exception.Create(SNotSupported); 334 end; 335 336 procedure TChronisClient.Disconnect; 337 begin 338 raise Exception.Create(SNotSupported); 339 end; 340 341 procedure TChronisClient.Install; 342 begin 343 344 end; 345 346 procedure TChronisClient.Uninstall; 347 begin 348 349 end; 350 351 procedure TChronisClient.Update; 352 begin 353 354 end; 355 289 356 end. 290 357
Note:
See TracChangeset
for help on using the changeset viewer.