sdo_company.pas 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. {
  2. This unit has been produced by ws_helper.
  3. Input unit name : "sdo_company".
  4. This unit name : "sdo_company".
  5. Date : "20/09/2007 16:32:08".
  6. }
  7. unit sdo_company;
  8. {$IFDEF FPC}
  9. {$mode objfpc} {$H+}
  10. {$ENDIF}
  11. {$IFNDEF FPC}
  12. {$DEFINE WST_RECORD_RTTI}
  13. {$ENDIF}
  14. interface
  15. uses SysUtils, Classes, TypInfo, base_service_intf, service_intf;
  16. const
  17. sNAME_SPACE = 'company.xsd';
  18. sUNIT_NAME = 'sdo_company';
  19. type
  20. // ID = unable to resolve this symbol.
  21. CompanyType_departmentsArray = class;
  22. CompanyType = class;
  23. DepartmentType_employeesArray = class;
  24. DepartmentType = class;
  25. EmployeeType = class;
  26. CompanyType = class(TBaseComplexRemotable)
  27. private
  28. Fdepartments : CompanyType_departmentsArray;
  29. Fname : string;
  30. FemployeeOfTheMonth : string;
  31. private
  32. function Hasname() : Boolean;
  33. function HasemployeeOfTheMonth() : Boolean;
  34. public
  35. constructor Create();override;
  36. destructor Destroy();override;
  37. published
  38. property departments : CompanyType_departmentsArray read Fdepartments write Fdepartments;
  39. property name : string read Fname write Fname stored Hasname;
  40. property employeeOfTheMonth : string read FemployeeOfTheMonth write FemployeeOfTheMonth stored HasemployeeOfTheMonth;
  41. end;
  42. DepartmentType = class(TBaseComplexRemotable)
  43. private
  44. Femployees : DepartmentType_employeesArray;
  45. Fname : string;
  46. Flocation : string;
  47. Fnumber : integer;
  48. private
  49. function Hasname() : Boolean;
  50. function Haslocation() : Boolean;
  51. function Hasnumber() : Boolean;
  52. public
  53. constructor Create();override;
  54. destructor Destroy();override;
  55. published
  56. property employees : DepartmentType_employeesArray read Femployees write Femployees;
  57. property name : string read Fname write Fname stored Hasname;
  58. property location : string read Flocation write Flocation stored Haslocation;
  59. property number : integer read Fnumber write Fnumber stored Hasnumber;
  60. end;
  61. EmployeeType = class(TBaseComplexRemotable)
  62. private
  63. Fname : string;
  64. FSN : ID;
  65. Fmanager : boolean;
  66. private
  67. function Hasname() : Boolean;
  68. function HasSN() : Boolean;
  69. function Hasmanager() : Boolean;
  70. published
  71. property name : string read Fname write Fname stored Hasname;
  72. property SN : ID read FSN write FSN stored HasSN;
  73. property manager : boolean read Fmanager write Fmanager stored Hasmanager;
  74. end;
  75. CompanyType_departmentsArray = class(TBaseObjectArrayRemotable)
  76. private
  77. function GetItem(AIndex: Integer): DepartmentType;
  78. public
  79. class function GetItemClass():TBaseRemotableClass;override;
  80. property Item[AIndex:Integer] : DepartmentType Read GetItem;Default;
  81. end;
  82. DepartmentType_employeesArray = class(TBaseObjectArrayRemotable)
  83. private
  84. function GetItem(AIndex: Integer): EmployeeType;
  85. public
  86. class function GetItemClass():TBaseRemotableClass;override;
  87. property Item[AIndex:Integer] : EmployeeType Read GetItem;Default;
  88. end;
  89. Implementation
  90. uses metadata_repository, record_rtti, wst_types;
  91. { CompanyType }
  92. constructor CompanyType.Create();
  93. begin
  94. inherited Create();
  95. Fdepartments := CompanyType_departmentsArray.Create();
  96. end;
  97. destructor CompanyType.Destroy();
  98. begin
  99. if Assigned(Fdepartments) then
  100. FreeAndNil(Fdepartments);
  101. inherited Destroy();
  102. end;
  103. function CompanyType.Hasname() : Boolean;
  104. begin
  105. Result := ( Fname <> '' );
  106. end;
  107. function CompanyType.HasemployeeOfTheMonth() : Boolean;
  108. begin
  109. Result := ( FemployeeOfTheMonth <> '' );
  110. end;
  111. { DepartmentType }
  112. constructor DepartmentType.Create();
  113. begin
  114. inherited Create();
  115. Femployees := DepartmentType_employeesArray.Create();
  116. end;
  117. destructor DepartmentType.Destroy();
  118. begin
  119. if Assigned(Femployees) then
  120. FreeAndNil(Femployees);
  121. inherited Destroy();
  122. end;
  123. function DepartmentType.Hasname() : Boolean;
  124. begin
  125. Result := ( Fname <> '' );
  126. end;
  127. function DepartmentType.Haslocation() : Boolean;
  128. begin
  129. Result := ( Flocation <> '' );
  130. end;
  131. function DepartmentType.Hasnumber() : Boolean;
  132. begin
  133. Result := ( Fnumber <> integer(0) );
  134. end;
  135. function EmployeeType.Hasname() : Boolean;
  136. begin
  137. Result := ( Fname <> '' );
  138. end;
  139. function EmployeeType.HasSN() : Boolean;
  140. begin
  141. Result := ( FSN <> ID(0) );
  142. end;
  143. function EmployeeType.Hasmanager() : Boolean;
  144. begin
  145. Result := ( Fmanager <> boolean(0) );
  146. end;
  147. { CompanyType_departmentsArray }
  148. function CompanyType_departmentsArray.GetItem(AIndex: Integer): DepartmentType;
  149. begin
  150. Result := Inherited GetItem(AIndex) As DepartmentType;
  151. end;
  152. class function CompanyType_departmentsArray.GetItemClass(): TBaseRemotableClass;
  153. begin
  154. Result:= DepartmentType;
  155. end;
  156. { DepartmentType_employeesArray }
  157. function DepartmentType_employeesArray.GetItem(AIndex: Integer): EmployeeType;
  158. begin
  159. Result := Inherited GetItem(AIndex) As EmployeeType;
  160. end;
  161. class function DepartmentType_employeesArray.GetItemClass(): TBaseRemotableClass;
  162. begin
  163. Result:= EmployeeType;
  164. end;
  165. initialization
  166. GetTypeRegistry().Register(sNAME_SPACE,TypeInfo(CompanyType),'CompanyType');
  167. GetTypeRegistry().Register(sNAME_SPACE,TypeInfo(DepartmentType),'DepartmentType');
  168. GetTypeRegistry().Register(sNAME_SPACE,TypeInfo(EmployeeType),'EmployeeType');
  169. GetTypeRegistry().Register(sNAME_SPACE,TypeInfo(CompanyType_departmentsArray),'CompanyType_departmentsArray');
  170. GetTypeRegistry().ItemByTypeInfo[TypeInfo(CompanyType_departmentsArray)].RegisterExternalPropertyName(sARRAY_STYLE,sEmbedded);
  171. GetTypeRegistry().Register(sNAME_SPACE,TypeInfo(DepartmentType_employeesArray),'DepartmentType_employeesArray');
  172. GetTypeRegistry().ItemByTypeInfo[TypeInfo(DepartmentType_employeesArray)].RegisterExternalPropertyName(sARRAY_STYLE,sEmbedded);
  173. CompanyType.RegisterAttributeProperty('name');
  174. CompanyType.RegisterAttributeProperty('employeeOfTheMonth');
  175. DepartmentType.RegisterAttributeProperty('name');
  176. DepartmentType.RegisterAttributeProperty('location');
  177. DepartmentType.RegisterAttributeProperty('number');
  178. EmployeeType.RegisterAttributeProperty('name');
  179. EmployeeType.RegisterAttributeProperty('SN');
  180. EmployeeType.RegisterAttributeProperty('manager');
  181. End.