googleanalyticsreporting.pp 87 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027
  1. {$IFNDEF FPC_DOTTEDUNITS}
  2. unit googleanalyticsreporting;
  3. {$ENDIF FPC_DOTTEDUNITS}
  4. {$MODE objfpc}
  5. {$H+}
  6. interface
  7. {$IFDEF FPC_DOTTEDUNITS}
  8. uses System.SysUtils, System.Classes, GoogleApi.Service, FpWeb.Rest.Base, GoogleApi.Base;
  9. {$ELSE FPC_DOTTEDUNITS}
  10. uses sysutils, classes, googleservice, restbase, googlebase;
  11. {$ENDIF FPC_DOTTEDUNITS}
  12. type
  13. //Top-level schema types
  14. TPivotHeader = Class;
  15. TMetric = Class;
  16. TColumnHeader = Class;
  17. TDynamicSegment = Class;
  18. TMetricHeader = Class;
  19. TReport = Class;
  20. TSegmentFilterClause = Class;
  21. TDimensionFilter = Class;
  22. TSegmentDimensionFilter = Class;
  23. TReportRequest = Class;
  24. TSimpleSegment = Class;
  25. TSegmentDefinition = Class;
  26. TSegmentMetricFilter = Class;
  27. TReportData = Class;
  28. TGetReportsRequest = Class;
  29. TOrderBy = Class;
  30. TCohort = Class;
  31. TOrFiltersForSegment = Class;
  32. TSequenceSegment = Class;
  33. TSegmentFilter = Class;
  34. TPivotHeaderEntry = Class;
  35. TDimensionFilterClause = Class;
  36. TSegmentSequenceStep = Class;
  37. TPivot = Class;
  38. TDateRangeValues = Class;
  39. TMetricFilterClause = Class;
  40. TSegment = Class;
  41. TDateRange = Class;
  42. TReportRow = Class;
  43. TCohortGroup = Class;
  44. TGetReportsResponse = Class;
  45. TMetricHeaderEntry = Class;
  46. TMetricFilter = Class;
  47. TDimension = Class;
  48. TPivotValueRegion = Class;
  49. TPivotHeaderArray = Array of TPivotHeader;
  50. TMetricArray = Array of TMetric;
  51. TColumnHeaderArray = Array of TColumnHeader;
  52. TDynamicSegmentArray = Array of TDynamicSegment;
  53. TMetricHeaderArray = Array of TMetricHeader;
  54. TReportArray = Array of TReport;
  55. TSegmentFilterClauseArray = Array of TSegmentFilterClause;
  56. TDimensionFilterArray = Array of TDimensionFilter;
  57. TSegmentDimensionFilterArray = Array of TSegmentDimensionFilter;
  58. TReportRequestArray = Array of TReportRequest;
  59. TSimpleSegmentArray = Array of TSimpleSegment;
  60. TSegmentDefinitionArray = Array of TSegmentDefinition;
  61. TSegmentMetricFilterArray = Array of TSegmentMetricFilter;
  62. TReportDataArray = Array of TReportData;
  63. TGetReportsRequestArray = Array of TGetReportsRequest;
  64. TOrderByArray = Array of TOrderBy;
  65. TCohortArray = Array of TCohort;
  66. TOrFiltersForSegmentArray = Array of TOrFiltersForSegment;
  67. TSequenceSegmentArray = Array of TSequenceSegment;
  68. TSegmentFilterArray = Array of TSegmentFilter;
  69. TPivotHeaderEntryArray = Array of TPivotHeaderEntry;
  70. TDimensionFilterClauseArray = Array of TDimensionFilterClause;
  71. TSegmentSequenceStepArray = Array of TSegmentSequenceStep;
  72. TPivotArray = Array of TPivot;
  73. TDateRangeValuesArray = Array of TDateRangeValues;
  74. TMetricFilterClauseArray = Array of TMetricFilterClause;
  75. TSegmentArray = Array of TSegment;
  76. TDateRangeArray = Array of TDateRange;
  77. TReportRowArray = Array of TReportRow;
  78. TCohortGroupArray = Array of TCohortGroup;
  79. TGetReportsResponseArray = Array of TGetReportsResponse;
  80. TMetricHeaderEntryArray = Array of TMetricHeaderEntry;
  81. TMetricFilterArray = Array of TMetricFilter;
  82. TDimensionArray = Array of TDimension;
  83. TPivotValueRegionArray = Array of TPivotValueRegion;
  84. //Anonymous types, using auto-generated names
  85. TPivotHeaderTypepivotHeaderEntriesArray = Array of TPivotHeaderEntry;
  86. TMetricHeaderTypemetricHeaderEntriesArray = Array of TMetricHeaderEntry;
  87. TMetricHeaderTypepivotHeadersArray = Array of TPivotHeader;
  88. TReportRequestTypedimensionsArray = Array of TDimension;
  89. TReportRequestTypemetricFilterClausesArray = Array of TMetricFilterClause;
  90. TReportRequestTypedimensionFilterClausesArray = Array of TDimensionFilterClause;
  91. TReportRequestTypepivotsArray = Array of TPivot;
  92. TReportRequestTypedateRangesArray = Array of TDateRange;
  93. TReportRequestTypesegmentsArray = Array of TSegment;
  94. TReportRequestTypemetricsArray = Array of TMetric;
  95. TReportRequestTypeorderBysArray = Array of TOrderBy;
  96. TSimpleSegmentTypeorFiltersForSegmentArray = Array of TOrFiltersForSegment;
  97. TSegmentDefinitionTypesegmentFiltersArray = Array of TSegmentFilter;
  98. TReportDataTypemaximumsArray = Array of TDateRangeValues;
  99. TReportDataTypeminimumsArray = Array of TDateRangeValues;
  100. TReportDataTyperowsArray = Array of TReportRow;
  101. TReportDataTypetotalsArray = Array of TDateRangeValues;
  102. TGetReportsRequestTypereportRequestsArray = Array of TReportRequest;
  103. TOrFiltersForSegmentTypesegmentFilterClausesArray = Array of TSegmentFilterClause;
  104. TSequenceSegmentTypesegmentSequenceStepsArray = Array of TSegmentSequenceStep;
  105. TDimensionFilterClauseTypefiltersArray = Array of TDimensionFilter;
  106. TSegmentSequenceStepTypeorFiltersForSegmentArray = Array of TOrFiltersForSegment;
  107. TPivotTypedimensionsArray = Array of TDimension;
  108. TPivotTypemetricsArray = Array of TMetric;
  109. TPivotTypedimensionFilterClausesArray = Array of TDimensionFilterClause;
  110. TDateRangeValuesTypepivotValueRegionsArray = Array of TPivotValueRegion;
  111. TMetricFilterClauseTypefiltersArray = Array of TMetricFilter;
  112. TReportRowTypemetricsArray = Array of TDateRangeValues;
  113. TCohortGroupTypecohortsArray = Array of TCohort;
  114. TGetReportsResponseTypereportsArray = Array of TReport;
  115. { --------------------------------------------------------------------
  116. TPivotHeader
  117. --------------------------------------------------------------------}
  118. TPivotHeader = Class(TGoogleBaseObject)
  119. Private
  120. FtotalPivotGroupsCount : integer;
  121. FpivotHeaderEntries : TPivotHeaderTypepivotHeaderEntriesArray;
  122. Protected
  123. //Property setters
  124. Procedure SettotalPivotGroupsCount(AIndex : Integer; const AValue : integer); virtual;
  125. Procedure SetpivotHeaderEntries(AIndex : Integer; const AValue : TPivotHeaderTypepivotHeaderEntriesArray); virtual;
  126. //2.6.4. bug workaround
  127. {$IFDEF VER2_6}
  128. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  129. {$ENDIF VER2_6}
  130. Public
  131. Published
  132. Property totalPivotGroupsCount : integer Index 0 Read FtotalPivotGroupsCount Write SettotalPivotGroupsCount;
  133. Property pivotHeaderEntries : TPivotHeaderTypepivotHeaderEntriesArray Index 8 Read FpivotHeaderEntries Write SetpivotHeaderEntries;
  134. end;
  135. TPivotHeaderClass = Class of TPivotHeader;
  136. { --------------------------------------------------------------------
  137. TMetric
  138. --------------------------------------------------------------------}
  139. TMetric = Class(TGoogleBaseObject)
  140. Private
  141. Falias : String;
  142. FformattingType : String;
  143. Fexpression : String;
  144. Protected
  145. //Property setters
  146. Procedure Setalias(AIndex : Integer; const AValue : String); virtual;
  147. Procedure SetformattingType(AIndex : Integer; const AValue : String); virtual;
  148. Procedure Setexpression(AIndex : Integer; const AValue : String); virtual;
  149. Public
  150. Published
  151. Property alias : String Index 0 Read Falias Write Setalias;
  152. Property formattingType : String Index 8 Read FformattingType Write SetformattingType;
  153. Property expression : String Index 16 Read Fexpression Write Setexpression;
  154. end;
  155. TMetricClass = Class of TMetric;
  156. { --------------------------------------------------------------------
  157. TColumnHeader
  158. --------------------------------------------------------------------}
  159. TColumnHeader = Class(TGoogleBaseObject)
  160. Private
  161. Fdimensions : TStringArray;
  162. FmetricHeader : TMetricHeader;
  163. Protected
  164. //Property setters
  165. Procedure Setdimensions(AIndex : Integer; const AValue : TStringArray); virtual;
  166. Procedure SetmetricHeader(AIndex : Integer; const AValue : TMetricHeader); virtual;
  167. //2.6.4. bug workaround
  168. {$IFDEF VER2_6}
  169. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  170. {$ENDIF VER2_6}
  171. Public
  172. Published
  173. Property dimensions : TStringArray Index 0 Read Fdimensions Write Setdimensions;
  174. Property metricHeader : TMetricHeader Index 8 Read FmetricHeader Write SetmetricHeader;
  175. end;
  176. TColumnHeaderClass = Class of TColumnHeader;
  177. { --------------------------------------------------------------------
  178. TDynamicSegment
  179. --------------------------------------------------------------------}
  180. TDynamicSegment = Class(TGoogleBaseObject)
  181. Private
  182. FsessionSegment : TSegmentDefinition;
  183. Fname : String;
  184. FuserSegment : TSegmentDefinition;
  185. Protected
  186. //Property setters
  187. Procedure SetsessionSegment(AIndex : Integer; const AValue : TSegmentDefinition); virtual;
  188. Procedure Setname(AIndex : Integer; const AValue : String); virtual;
  189. Procedure SetuserSegment(AIndex : Integer; const AValue : TSegmentDefinition); virtual;
  190. Public
  191. Published
  192. Property sessionSegment : TSegmentDefinition Index 0 Read FsessionSegment Write SetsessionSegment;
  193. Property name : String Index 8 Read Fname Write Setname;
  194. Property userSegment : TSegmentDefinition Index 16 Read FuserSegment Write SetuserSegment;
  195. end;
  196. TDynamicSegmentClass = Class of TDynamicSegment;
  197. { --------------------------------------------------------------------
  198. TMetricHeader
  199. --------------------------------------------------------------------}
  200. TMetricHeader = Class(TGoogleBaseObject)
  201. Private
  202. FmetricHeaderEntries : TMetricHeaderTypemetricHeaderEntriesArray;
  203. FpivotHeaders : TMetricHeaderTypepivotHeadersArray;
  204. Protected
  205. //Property setters
  206. Procedure SetmetricHeaderEntries(AIndex : Integer; const AValue : TMetricHeaderTypemetricHeaderEntriesArray); virtual;
  207. Procedure SetpivotHeaders(AIndex : Integer; const AValue : TMetricHeaderTypepivotHeadersArray); virtual;
  208. //2.6.4. bug workaround
  209. {$IFDEF VER2_6}
  210. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  211. {$ENDIF VER2_6}
  212. Public
  213. Published
  214. Property metricHeaderEntries : TMetricHeaderTypemetricHeaderEntriesArray Index 0 Read FmetricHeaderEntries Write SetmetricHeaderEntries;
  215. Property pivotHeaders : TMetricHeaderTypepivotHeadersArray Index 8 Read FpivotHeaders Write SetpivotHeaders;
  216. end;
  217. TMetricHeaderClass = Class of TMetricHeader;
  218. { --------------------------------------------------------------------
  219. TReport
  220. --------------------------------------------------------------------}
  221. TReport = Class(TGoogleBaseObject)
  222. Private
  223. FcolumnHeader : TColumnHeader;
  224. Fdata : TReportData;
  225. FnextPageToken : String;
  226. Protected
  227. //Property setters
  228. Procedure SetcolumnHeader(AIndex : Integer; const AValue : TColumnHeader); virtual;
  229. Procedure Setdata(AIndex : Integer; const AValue : TReportData); virtual;
  230. Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
  231. Public
  232. Published
  233. Property columnHeader : TColumnHeader Index 0 Read FcolumnHeader Write SetcolumnHeader;
  234. Property data : TReportData Index 8 Read Fdata Write Setdata;
  235. Property nextPageToken : String Index 16 Read FnextPageToken Write SetnextPageToken;
  236. end;
  237. TReportClass = Class of TReport;
  238. { --------------------------------------------------------------------
  239. TSegmentFilterClause
  240. --------------------------------------------------------------------}
  241. TSegmentFilterClause = Class(TGoogleBaseObject)
  242. Private
  243. FdimensionFilter : TSegmentDimensionFilter;
  244. FmetricFilter : TSegmentMetricFilter;
  245. F_not : boolean;
  246. Protected
  247. Class Function ExportPropertyName(Const AName : String) : string; override;
  248. //Property setters
  249. Procedure SetdimensionFilter(AIndex : Integer; const AValue : TSegmentDimensionFilter); virtual;
  250. Procedure SetmetricFilter(AIndex : Integer; const AValue : TSegmentMetricFilter); virtual;
  251. Procedure Set_not(AIndex : Integer; const AValue : boolean); virtual;
  252. Public
  253. Published
  254. Property dimensionFilter : TSegmentDimensionFilter Index 0 Read FdimensionFilter Write SetdimensionFilter;
  255. Property metricFilter : TSegmentMetricFilter Index 8 Read FmetricFilter Write SetmetricFilter;
  256. Property _not : boolean Index 16 Read F_not Write Set_not;
  257. end;
  258. TSegmentFilterClauseClass = Class of TSegmentFilterClause;
  259. { --------------------------------------------------------------------
  260. TDimensionFilter
  261. --------------------------------------------------------------------}
  262. TDimensionFilter = Class(TGoogleBaseObject)
  263. Private
  264. FdimensionName : String;
  265. F_operator : String;
  266. FcaseSensitive : boolean;
  267. Fexpressions : TStringArray;
  268. F_not : boolean;
  269. Protected
  270. Class Function ExportPropertyName(Const AName : String) : string; override;
  271. //Property setters
  272. Procedure SetdimensionName(AIndex : Integer; const AValue : String); virtual;
  273. Procedure Set_operator(AIndex : Integer; const AValue : String); virtual;
  274. Procedure SetcaseSensitive(AIndex : Integer; const AValue : boolean); virtual;
  275. Procedure Setexpressions(AIndex : Integer; const AValue : TStringArray); virtual;
  276. Procedure Set_not(AIndex : Integer; const AValue : boolean); virtual;
  277. //2.6.4. bug workaround
  278. {$IFDEF VER2_6}
  279. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  280. {$ENDIF VER2_6}
  281. Public
  282. Published
  283. Property dimensionName : String Index 0 Read FdimensionName Write SetdimensionName;
  284. Property _operator : String Index 8 Read F_operator Write Set_operator;
  285. Property caseSensitive : boolean Index 16 Read FcaseSensitive Write SetcaseSensitive;
  286. Property expressions : TStringArray Index 24 Read Fexpressions Write Setexpressions;
  287. Property _not : boolean Index 32 Read F_not Write Set_not;
  288. end;
  289. TDimensionFilterClass = Class of TDimensionFilter;
  290. { --------------------------------------------------------------------
  291. TSegmentDimensionFilter
  292. --------------------------------------------------------------------}
  293. TSegmentDimensionFilter = Class(TGoogleBaseObject)
  294. Private
  295. FmaxComparisonValue : String;
  296. FdimensionName : String;
  297. FcaseSensitive : boolean;
  298. F_operator : String;
  299. Fexpressions : TStringArray;
  300. FminComparisonValue : String;
  301. Protected
  302. Class Function ExportPropertyName(Const AName : String) : string; override;
  303. //Property setters
  304. Procedure SetmaxComparisonValue(AIndex : Integer; const AValue : String); virtual;
  305. Procedure SetdimensionName(AIndex : Integer; const AValue : String); virtual;
  306. Procedure SetcaseSensitive(AIndex : Integer; const AValue : boolean); virtual;
  307. Procedure Set_operator(AIndex : Integer; const AValue : String); virtual;
  308. Procedure Setexpressions(AIndex : Integer; const AValue : TStringArray); virtual;
  309. Procedure SetminComparisonValue(AIndex : Integer; const AValue : String); virtual;
  310. //2.6.4. bug workaround
  311. {$IFDEF VER2_6}
  312. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  313. {$ENDIF VER2_6}
  314. Public
  315. Published
  316. Property maxComparisonValue : String Index 0 Read FmaxComparisonValue Write SetmaxComparisonValue;
  317. Property dimensionName : String Index 8 Read FdimensionName Write SetdimensionName;
  318. Property caseSensitive : boolean Index 16 Read FcaseSensitive Write SetcaseSensitive;
  319. Property _operator : String Index 24 Read F_operator Write Set_operator;
  320. Property expressions : TStringArray Index 32 Read Fexpressions Write Setexpressions;
  321. Property minComparisonValue : String Index 40 Read FminComparisonValue Write SetminComparisonValue;
  322. end;
  323. TSegmentDimensionFilterClass = Class of TSegmentDimensionFilter;
  324. { --------------------------------------------------------------------
  325. TReportRequest
  326. --------------------------------------------------------------------}
  327. TReportRequest = Class(TGoogleBaseObject)
  328. Private
  329. FcohortGroup : TCohortGroup;
  330. Fdimensions : TReportRequestTypedimensionsArray;
  331. FmetricFilterClauses : TReportRequestTypemetricFilterClausesArray;
  332. FhideTotals : boolean;
  333. FincludeEmptyRows : boolean;
  334. FdimensionFilterClauses : TReportRequestTypedimensionFilterClausesArray;
  335. Fpivots : TReportRequestTypepivotsArray;
  336. FdateRanges : TReportRequestTypedateRangesArray;
  337. Fsegments : TReportRequestTypesegmentsArray;
  338. FsamplingLevel : String;
  339. Fmetrics : TReportRequestTypemetricsArray;
  340. FpageSize : integer;
  341. ForderBys : TReportRequestTypeorderBysArray;
  342. FfiltersExpression : String;
  343. FhideValueRanges : boolean;
  344. FviewId : String;
  345. FpageToken : String;
  346. Protected
  347. //Property setters
  348. Procedure SetcohortGroup(AIndex : Integer; const AValue : TCohortGroup); virtual;
  349. Procedure Setdimensions(AIndex : Integer; const AValue : TReportRequestTypedimensionsArray); virtual;
  350. Procedure SetmetricFilterClauses(AIndex : Integer; const AValue : TReportRequestTypemetricFilterClausesArray); virtual;
  351. Procedure SethideTotals(AIndex : Integer; const AValue : boolean); virtual;
  352. Procedure SetincludeEmptyRows(AIndex : Integer; const AValue : boolean); virtual;
  353. Procedure SetdimensionFilterClauses(AIndex : Integer; const AValue : TReportRequestTypedimensionFilterClausesArray); virtual;
  354. Procedure Setpivots(AIndex : Integer; const AValue : TReportRequestTypepivotsArray); virtual;
  355. Procedure SetdateRanges(AIndex : Integer; const AValue : TReportRequestTypedateRangesArray); virtual;
  356. Procedure Setsegments(AIndex : Integer; const AValue : TReportRequestTypesegmentsArray); virtual;
  357. Procedure SetsamplingLevel(AIndex : Integer; const AValue : String); virtual;
  358. Procedure Setmetrics(AIndex : Integer; const AValue : TReportRequestTypemetricsArray); virtual;
  359. Procedure SetpageSize(AIndex : Integer; const AValue : integer); virtual;
  360. Procedure SetorderBys(AIndex : Integer; const AValue : TReportRequestTypeorderBysArray); virtual;
  361. Procedure SetfiltersExpression(AIndex : Integer; const AValue : String); virtual;
  362. Procedure SethideValueRanges(AIndex : Integer; const AValue : boolean); virtual;
  363. Procedure SetviewId(AIndex : Integer; const AValue : String); virtual;
  364. Procedure SetpageToken(AIndex : Integer; const AValue : String); virtual;
  365. //2.6.4. bug workaround
  366. {$IFDEF VER2_6}
  367. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  368. {$ENDIF VER2_6}
  369. Public
  370. Published
  371. Property cohortGroup : TCohortGroup Index 0 Read FcohortGroup Write SetcohortGroup;
  372. Property dimensions : TReportRequestTypedimensionsArray Index 8 Read Fdimensions Write Setdimensions;
  373. Property metricFilterClauses : TReportRequestTypemetricFilterClausesArray Index 16 Read FmetricFilterClauses Write SetmetricFilterClauses;
  374. Property hideTotals : boolean Index 24 Read FhideTotals Write SethideTotals;
  375. Property includeEmptyRows : boolean Index 32 Read FincludeEmptyRows Write SetincludeEmptyRows;
  376. Property dimensionFilterClauses : TReportRequestTypedimensionFilterClausesArray Index 40 Read FdimensionFilterClauses Write SetdimensionFilterClauses;
  377. Property pivots : TReportRequestTypepivotsArray Index 48 Read Fpivots Write Setpivots;
  378. Property dateRanges : TReportRequestTypedateRangesArray Index 56 Read FdateRanges Write SetdateRanges;
  379. Property segments : TReportRequestTypesegmentsArray Index 64 Read Fsegments Write Setsegments;
  380. Property samplingLevel : String Index 72 Read FsamplingLevel Write SetsamplingLevel;
  381. Property metrics : TReportRequestTypemetricsArray Index 80 Read Fmetrics Write Setmetrics;
  382. Property pageSize : integer Index 88 Read FpageSize Write SetpageSize;
  383. Property orderBys : TReportRequestTypeorderBysArray Index 96 Read ForderBys Write SetorderBys;
  384. Property filtersExpression : String Index 104 Read FfiltersExpression Write SetfiltersExpression;
  385. Property hideValueRanges : boolean Index 112 Read FhideValueRanges Write SethideValueRanges;
  386. Property viewId : String Index 120 Read FviewId Write SetviewId;
  387. Property pageToken : String Index 128 Read FpageToken Write SetpageToken;
  388. end;
  389. TReportRequestClass = Class of TReportRequest;
  390. { --------------------------------------------------------------------
  391. TSimpleSegment
  392. --------------------------------------------------------------------}
  393. TSimpleSegment = Class(TGoogleBaseObject)
  394. Private
  395. ForFiltersForSegment : TSimpleSegmentTypeorFiltersForSegmentArray;
  396. Protected
  397. //Property setters
  398. Procedure SetorFiltersForSegment(AIndex : Integer; const AValue : TSimpleSegmentTypeorFiltersForSegmentArray); virtual;
  399. //2.6.4. bug workaround
  400. {$IFDEF VER2_6}
  401. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  402. {$ENDIF VER2_6}
  403. Public
  404. Published
  405. Property orFiltersForSegment : TSimpleSegmentTypeorFiltersForSegmentArray Index 0 Read ForFiltersForSegment Write SetorFiltersForSegment;
  406. end;
  407. TSimpleSegmentClass = Class of TSimpleSegment;
  408. { --------------------------------------------------------------------
  409. TSegmentDefinition
  410. --------------------------------------------------------------------}
  411. TSegmentDefinition = Class(TGoogleBaseObject)
  412. Private
  413. FsegmentFilters : TSegmentDefinitionTypesegmentFiltersArray;
  414. Protected
  415. //Property setters
  416. Procedure SetsegmentFilters(AIndex : Integer; const AValue : TSegmentDefinitionTypesegmentFiltersArray); virtual;
  417. //2.6.4. bug workaround
  418. {$IFDEF VER2_6}
  419. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  420. {$ENDIF VER2_6}
  421. Public
  422. Published
  423. Property segmentFilters : TSegmentDefinitionTypesegmentFiltersArray Index 0 Read FsegmentFilters Write SetsegmentFilters;
  424. end;
  425. TSegmentDefinitionClass = Class of TSegmentDefinition;
  426. { --------------------------------------------------------------------
  427. TSegmentMetricFilter
  428. --------------------------------------------------------------------}
  429. TSegmentMetricFilter = Class(TGoogleBaseObject)
  430. Private
  431. FmetricName : String;
  432. F_operator : String;
  433. FcomparisonValue : String;
  434. Fscope : String;
  435. FmaxComparisonValue : String;
  436. Protected
  437. Class Function ExportPropertyName(Const AName : String) : string; override;
  438. //Property setters
  439. Procedure SetmetricName(AIndex : Integer; const AValue : String); virtual;
  440. Procedure Set_operator(AIndex : Integer; const AValue : String); virtual;
  441. Procedure SetcomparisonValue(AIndex : Integer; const AValue : String); virtual;
  442. Procedure Setscope(AIndex : Integer; const AValue : String); virtual;
  443. Procedure SetmaxComparisonValue(AIndex : Integer; const AValue : String); virtual;
  444. Public
  445. Published
  446. Property metricName : String Index 0 Read FmetricName Write SetmetricName;
  447. Property _operator : String Index 8 Read F_operator Write Set_operator;
  448. Property comparisonValue : String Index 16 Read FcomparisonValue Write SetcomparisonValue;
  449. Property scope : String Index 24 Read Fscope Write Setscope;
  450. Property maxComparisonValue : String Index 32 Read FmaxComparisonValue Write SetmaxComparisonValue;
  451. end;
  452. TSegmentMetricFilterClass = Class of TSegmentMetricFilter;
  453. { --------------------------------------------------------------------
  454. TReportData
  455. --------------------------------------------------------------------}
  456. TReportData = Class(TGoogleBaseObject)
  457. Private
  458. FrowCount : integer;
  459. FsamplingSpaceSizes : TStringArray;
  460. Fmaximums : TReportDataTypemaximumsArray;
  461. FsamplesReadCounts : TStringArray;
  462. Fminimums : TReportDataTypeminimumsArray;
  463. Frows : TReportDataTyperowsArray;
  464. Ftotals : TReportDataTypetotalsArray;
  465. FisDataGolden : boolean;
  466. Protected
  467. //Property setters
  468. Procedure SetrowCount(AIndex : Integer; const AValue : integer); virtual;
  469. Procedure SetsamplingSpaceSizes(AIndex : Integer; const AValue : TStringArray); virtual;
  470. Procedure Setmaximums(AIndex : Integer; const AValue : TReportDataTypemaximumsArray); virtual;
  471. Procedure SetsamplesReadCounts(AIndex : Integer; const AValue : TStringArray); virtual;
  472. Procedure Setminimums(AIndex : Integer; const AValue : TReportDataTypeminimumsArray); virtual;
  473. Procedure Setrows(AIndex : Integer; const AValue : TReportDataTyperowsArray); virtual;
  474. Procedure Settotals(AIndex : Integer; const AValue : TReportDataTypetotalsArray); virtual;
  475. Procedure SetisDataGolden(AIndex : Integer; const AValue : boolean); virtual;
  476. //2.6.4. bug workaround
  477. {$IFDEF VER2_6}
  478. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  479. {$ENDIF VER2_6}
  480. Public
  481. Published
  482. Property rowCount : integer Index 0 Read FrowCount Write SetrowCount;
  483. Property samplingSpaceSizes : TStringArray Index 8 Read FsamplingSpaceSizes Write SetsamplingSpaceSizes;
  484. Property maximums : TReportDataTypemaximumsArray Index 16 Read Fmaximums Write Setmaximums;
  485. Property samplesReadCounts : TStringArray Index 24 Read FsamplesReadCounts Write SetsamplesReadCounts;
  486. Property minimums : TReportDataTypeminimumsArray Index 32 Read Fminimums Write Setminimums;
  487. Property rows : TReportDataTyperowsArray Index 40 Read Frows Write Setrows;
  488. Property totals : TReportDataTypetotalsArray Index 48 Read Ftotals Write Settotals;
  489. Property isDataGolden : boolean Index 56 Read FisDataGolden Write SetisDataGolden;
  490. end;
  491. TReportDataClass = Class of TReportData;
  492. { --------------------------------------------------------------------
  493. TGetReportsRequest
  494. --------------------------------------------------------------------}
  495. TGetReportsRequest = Class(TGoogleBaseObject)
  496. Private
  497. FreportRequests : TGetReportsRequestTypereportRequestsArray;
  498. Protected
  499. //Property setters
  500. Procedure SetreportRequests(AIndex : Integer; const AValue : TGetReportsRequestTypereportRequestsArray); virtual;
  501. //2.6.4. bug workaround
  502. {$IFDEF VER2_6}
  503. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  504. {$ENDIF VER2_6}
  505. Public
  506. Published
  507. Property reportRequests : TGetReportsRequestTypereportRequestsArray Index 0 Read FreportRequests Write SetreportRequests;
  508. end;
  509. TGetReportsRequestClass = Class of TGetReportsRequest;
  510. { --------------------------------------------------------------------
  511. TOrderBy
  512. --------------------------------------------------------------------}
  513. TOrderBy = Class(TGoogleBaseObject)
  514. Private
  515. FsortOrder : String;
  516. ForderType : String;
  517. FfieldName : String;
  518. Protected
  519. //Property setters
  520. Procedure SetsortOrder(AIndex : Integer; const AValue : String); virtual;
  521. Procedure SetorderType(AIndex : Integer; const AValue : String); virtual;
  522. Procedure SetfieldName(AIndex : Integer; const AValue : String); virtual;
  523. Public
  524. Published
  525. Property sortOrder : String Index 0 Read FsortOrder Write SetsortOrder;
  526. Property orderType : String Index 8 Read ForderType Write SetorderType;
  527. Property fieldName : String Index 16 Read FfieldName Write SetfieldName;
  528. end;
  529. TOrderByClass = Class of TOrderBy;
  530. { --------------------------------------------------------------------
  531. TCohort
  532. --------------------------------------------------------------------}
  533. TCohort = Class(TGoogleBaseObject)
  534. Private
  535. F_type : String;
  536. FdateRange : TDateRange;
  537. Fname : String;
  538. Protected
  539. Class Function ExportPropertyName(Const AName : String) : string; override;
  540. //Property setters
  541. Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
  542. Procedure SetdateRange(AIndex : Integer; const AValue : TDateRange); virtual;
  543. Procedure Setname(AIndex : Integer; const AValue : String); virtual;
  544. Public
  545. Published
  546. Property _type : String Index 0 Read F_type Write Set_type;
  547. Property dateRange : TDateRange Index 8 Read FdateRange Write SetdateRange;
  548. Property name : String Index 16 Read Fname Write Setname;
  549. end;
  550. TCohortClass = Class of TCohort;
  551. { --------------------------------------------------------------------
  552. TOrFiltersForSegment
  553. --------------------------------------------------------------------}
  554. TOrFiltersForSegment = Class(TGoogleBaseObject)
  555. Private
  556. FsegmentFilterClauses : TOrFiltersForSegmentTypesegmentFilterClausesArray;
  557. Protected
  558. //Property setters
  559. Procedure SetsegmentFilterClauses(AIndex : Integer; const AValue : TOrFiltersForSegmentTypesegmentFilterClausesArray); virtual;
  560. //2.6.4. bug workaround
  561. {$IFDEF VER2_6}
  562. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  563. {$ENDIF VER2_6}
  564. Public
  565. Published
  566. Property segmentFilterClauses : TOrFiltersForSegmentTypesegmentFilterClausesArray Index 0 Read FsegmentFilterClauses Write SetsegmentFilterClauses;
  567. end;
  568. TOrFiltersForSegmentClass = Class of TOrFiltersForSegment;
  569. { --------------------------------------------------------------------
  570. TSequenceSegment
  571. --------------------------------------------------------------------}
  572. TSequenceSegment = Class(TGoogleBaseObject)
  573. Private
  574. FfirstStepShouldMatchFirstHit : boolean;
  575. FsegmentSequenceSteps : TSequenceSegmentTypesegmentSequenceStepsArray;
  576. Protected
  577. //Property setters
  578. Procedure SetfirstStepShouldMatchFirstHit(AIndex : Integer; const AValue : boolean); virtual;
  579. Procedure SetsegmentSequenceSteps(AIndex : Integer; const AValue : TSequenceSegmentTypesegmentSequenceStepsArray); virtual;
  580. //2.6.4. bug workaround
  581. {$IFDEF VER2_6}
  582. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  583. {$ENDIF VER2_6}
  584. Public
  585. Published
  586. Property firstStepShouldMatchFirstHit : boolean Index 0 Read FfirstStepShouldMatchFirstHit Write SetfirstStepShouldMatchFirstHit;
  587. Property segmentSequenceSteps : TSequenceSegmentTypesegmentSequenceStepsArray Index 8 Read FsegmentSequenceSteps Write SetsegmentSequenceSteps;
  588. end;
  589. TSequenceSegmentClass = Class of TSequenceSegment;
  590. { --------------------------------------------------------------------
  591. TSegmentFilter
  592. --------------------------------------------------------------------}
  593. TSegmentFilter = Class(TGoogleBaseObject)
  594. Private
  595. FsequenceSegment : TSequenceSegment;
  596. F_not : boolean;
  597. FsimpleSegment : TSimpleSegment;
  598. Protected
  599. Class Function ExportPropertyName(Const AName : String) : string; override;
  600. //Property setters
  601. Procedure SetsequenceSegment(AIndex : Integer; const AValue : TSequenceSegment); virtual;
  602. Procedure Set_not(AIndex : Integer; const AValue : boolean); virtual;
  603. Procedure SetsimpleSegment(AIndex : Integer; const AValue : TSimpleSegment); virtual;
  604. Public
  605. Published
  606. Property sequenceSegment : TSequenceSegment Index 0 Read FsequenceSegment Write SetsequenceSegment;
  607. Property _not : boolean Index 8 Read F_not Write Set_not;
  608. Property simpleSegment : TSimpleSegment Index 16 Read FsimpleSegment Write SetsimpleSegment;
  609. end;
  610. TSegmentFilterClass = Class of TSegmentFilter;
  611. { --------------------------------------------------------------------
  612. TPivotHeaderEntry
  613. --------------------------------------------------------------------}
  614. TPivotHeaderEntry = Class(TGoogleBaseObject)
  615. Private
  616. FdimensionNames : TStringArray;
  617. FdimensionValues : TStringArray;
  618. Fmetric : TMetricHeaderEntry;
  619. Protected
  620. //Property setters
  621. Procedure SetdimensionNames(AIndex : Integer; const AValue : TStringArray); virtual;
  622. Procedure SetdimensionValues(AIndex : Integer; const AValue : TStringArray); virtual;
  623. Procedure Setmetric(AIndex : Integer; const AValue : TMetricHeaderEntry); virtual;
  624. //2.6.4. bug workaround
  625. {$IFDEF VER2_6}
  626. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  627. {$ENDIF VER2_6}
  628. Public
  629. Published
  630. Property dimensionNames : TStringArray Index 0 Read FdimensionNames Write SetdimensionNames;
  631. Property dimensionValues : TStringArray Index 8 Read FdimensionValues Write SetdimensionValues;
  632. Property metric : TMetricHeaderEntry Index 16 Read Fmetric Write Setmetric;
  633. end;
  634. TPivotHeaderEntryClass = Class of TPivotHeaderEntry;
  635. { --------------------------------------------------------------------
  636. TDimensionFilterClause
  637. --------------------------------------------------------------------}
  638. TDimensionFilterClause = Class(TGoogleBaseObject)
  639. Private
  640. F_operator : String;
  641. Ffilters : TDimensionFilterClauseTypefiltersArray;
  642. Protected
  643. Class Function ExportPropertyName(Const AName : String) : string; override;
  644. //Property setters
  645. Procedure Set_operator(AIndex : Integer; const AValue : String); virtual;
  646. Procedure Setfilters(AIndex : Integer; const AValue : TDimensionFilterClauseTypefiltersArray); virtual;
  647. //2.6.4. bug workaround
  648. {$IFDEF VER2_6}
  649. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  650. {$ENDIF VER2_6}
  651. Public
  652. Published
  653. Property _operator : String Index 0 Read F_operator Write Set_operator;
  654. Property filters : TDimensionFilterClauseTypefiltersArray Index 8 Read Ffilters Write Setfilters;
  655. end;
  656. TDimensionFilterClauseClass = Class of TDimensionFilterClause;
  657. { --------------------------------------------------------------------
  658. TSegmentSequenceStep
  659. --------------------------------------------------------------------}
  660. TSegmentSequenceStep = Class(TGoogleBaseObject)
  661. Private
  662. FmatchType : String;
  663. ForFiltersForSegment : TSegmentSequenceStepTypeorFiltersForSegmentArray;
  664. Protected
  665. //Property setters
  666. Procedure SetmatchType(AIndex : Integer; const AValue : String); virtual;
  667. Procedure SetorFiltersForSegment(AIndex : Integer; const AValue : TSegmentSequenceStepTypeorFiltersForSegmentArray); virtual;
  668. //2.6.4. bug workaround
  669. {$IFDEF VER2_6}
  670. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  671. {$ENDIF VER2_6}
  672. Public
  673. Published
  674. Property matchType : String Index 0 Read FmatchType Write SetmatchType;
  675. Property orFiltersForSegment : TSegmentSequenceStepTypeorFiltersForSegmentArray Index 8 Read ForFiltersForSegment Write SetorFiltersForSegment;
  676. end;
  677. TSegmentSequenceStepClass = Class of TSegmentSequenceStep;
  678. { --------------------------------------------------------------------
  679. TPivot
  680. --------------------------------------------------------------------}
  681. TPivot = Class(TGoogleBaseObject)
  682. Private
  683. Fdimensions : TPivotTypedimensionsArray;
  684. Fmetrics : TPivotTypemetricsArray;
  685. FmaxGroupCount : integer;
  686. FdimensionFilterClauses : TPivotTypedimensionFilterClausesArray;
  687. FstartGroup : integer;
  688. Protected
  689. //Property setters
  690. Procedure Setdimensions(AIndex : Integer; const AValue : TPivotTypedimensionsArray); virtual;
  691. Procedure Setmetrics(AIndex : Integer; const AValue : TPivotTypemetricsArray); virtual;
  692. Procedure SetmaxGroupCount(AIndex : Integer; const AValue : integer); virtual;
  693. Procedure SetdimensionFilterClauses(AIndex : Integer; const AValue : TPivotTypedimensionFilterClausesArray); virtual;
  694. Procedure SetstartGroup(AIndex : Integer; const AValue : integer); virtual;
  695. //2.6.4. bug workaround
  696. {$IFDEF VER2_6}
  697. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  698. {$ENDIF VER2_6}
  699. Public
  700. Published
  701. Property dimensions : TPivotTypedimensionsArray Index 0 Read Fdimensions Write Setdimensions;
  702. Property metrics : TPivotTypemetricsArray Index 8 Read Fmetrics Write Setmetrics;
  703. Property maxGroupCount : integer Index 16 Read FmaxGroupCount Write SetmaxGroupCount;
  704. Property dimensionFilterClauses : TPivotTypedimensionFilterClausesArray Index 24 Read FdimensionFilterClauses Write SetdimensionFilterClauses;
  705. Property startGroup : integer Index 32 Read FstartGroup Write SetstartGroup;
  706. end;
  707. TPivotClass = Class of TPivot;
  708. { --------------------------------------------------------------------
  709. TDateRangeValues
  710. --------------------------------------------------------------------}
  711. TDateRangeValues = Class(TGoogleBaseObject)
  712. Private
  713. Fvalues : TStringArray;
  714. FpivotValueRegions : TDateRangeValuesTypepivotValueRegionsArray;
  715. Protected
  716. //Property setters
  717. Procedure Setvalues(AIndex : Integer; const AValue : TStringArray); virtual;
  718. Procedure SetpivotValueRegions(AIndex : Integer; const AValue : TDateRangeValuesTypepivotValueRegionsArray); virtual;
  719. //2.6.4. bug workaround
  720. {$IFDEF VER2_6}
  721. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  722. {$ENDIF VER2_6}
  723. Public
  724. Published
  725. Property values : TStringArray Index 0 Read Fvalues Write Setvalues;
  726. Property pivotValueRegions : TDateRangeValuesTypepivotValueRegionsArray Index 8 Read FpivotValueRegions Write SetpivotValueRegions;
  727. end;
  728. TDateRangeValuesClass = Class of TDateRangeValues;
  729. { --------------------------------------------------------------------
  730. TMetricFilterClause
  731. --------------------------------------------------------------------}
  732. TMetricFilterClause = Class(TGoogleBaseObject)
  733. Private
  734. F_operator : String;
  735. Ffilters : TMetricFilterClauseTypefiltersArray;
  736. Protected
  737. Class Function ExportPropertyName(Const AName : String) : string; override;
  738. //Property setters
  739. Procedure Set_operator(AIndex : Integer; const AValue : String); virtual;
  740. Procedure Setfilters(AIndex : Integer; const AValue : TMetricFilterClauseTypefiltersArray); virtual;
  741. //2.6.4. bug workaround
  742. {$IFDEF VER2_6}
  743. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  744. {$ENDIF VER2_6}
  745. Public
  746. Published
  747. Property _operator : String Index 0 Read F_operator Write Set_operator;
  748. Property filters : TMetricFilterClauseTypefiltersArray Index 8 Read Ffilters Write Setfilters;
  749. end;
  750. TMetricFilterClauseClass = Class of TMetricFilterClause;
  751. { --------------------------------------------------------------------
  752. TSegment
  753. --------------------------------------------------------------------}
  754. TSegment = Class(TGoogleBaseObject)
  755. Private
  756. FdynamicSegment : TDynamicSegment;
  757. FsegmentId : String;
  758. Protected
  759. //Property setters
  760. Procedure SetdynamicSegment(AIndex : Integer; const AValue : TDynamicSegment); virtual;
  761. Procedure SetsegmentId(AIndex : Integer; const AValue : String); virtual;
  762. Public
  763. Published
  764. Property dynamicSegment : TDynamicSegment Index 0 Read FdynamicSegment Write SetdynamicSegment;
  765. Property segmentId : String Index 8 Read FsegmentId Write SetsegmentId;
  766. end;
  767. TSegmentClass = Class of TSegment;
  768. { --------------------------------------------------------------------
  769. TDateRange
  770. --------------------------------------------------------------------}
  771. TDateRange = Class(TGoogleBaseObject)
  772. Private
  773. FstartDate : String;
  774. FendDate : String;
  775. Protected
  776. //Property setters
  777. Procedure SetstartDate(AIndex : Integer; const AValue : String); virtual;
  778. Procedure SetendDate(AIndex : Integer; const AValue : String); virtual;
  779. Public
  780. Published
  781. Property startDate : String Index 0 Read FstartDate Write SetstartDate;
  782. Property endDate : String Index 8 Read FendDate Write SetendDate;
  783. end;
  784. TDateRangeClass = Class of TDateRange;
  785. { --------------------------------------------------------------------
  786. TReportRow
  787. --------------------------------------------------------------------}
  788. TReportRow = Class(TGoogleBaseObject)
  789. Private
  790. Fdimensions : TStringArray;
  791. Fmetrics : TReportRowTypemetricsArray;
  792. Protected
  793. //Property setters
  794. Procedure Setdimensions(AIndex : Integer; const AValue : TStringArray); virtual;
  795. Procedure Setmetrics(AIndex : Integer; const AValue : TReportRowTypemetricsArray); virtual;
  796. //2.6.4. bug workaround
  797. {$IFDEF VER2_6}
  798. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  799. {$ENDIF VER2_6}
  800. Public
  801. Published
  802. Property dimensions : TStringArray Index 0 Read Fdimensions Write Setdimensions;
  803. Property metrics : TReportRowTypemetricsArray Index 8 Read Fmetrics Write Setmetrics;
  804. end;
  805. TReportRowClass = Class of TReportRow;
  806. { --------------------------------------------------------------------
  807. TCohortGroup
  808. --------------------------------------------------------------------}
  809. TCohortGroup = Class(TGoogleBaseObject)
  810. Private
  811. FlifetimeValue : boolean;
  812. Fcohorts : TCohortGroupTypecohortsArray;
  813. Protected
  814. //Property setters
  815. Procedure SetlifetimeValue(AIndex : Integer; const AValue : boolean); virtual;
  816. Procedure Setcohorts(AIndex : Integer; const AValue : TCohortGroupTypecohortsArray); virtual;
  817. //2.6.4. bug workaround
  818. {$IFDEF VER2_6}
  819. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  820. {$ENDIF VER2_6}
  821. Public
  822. Published
  823. Property lifetimeValue : boolean Index 0 Read FlifetimeValue Write SetlifetimeValue;
  824. Property cohorts : TCohortGroupTypecohortsArray Index 8 Read Fcohorts Write Setcohorts;
  825. end;
  826. TCohortGroupClass = Class of TCohortGroup;
  827. { --------------------------------------------------------------------
  828. TGetReportsResponse
  829. --------------------------------------------------------------------}
  830. TGetReportsResponse = Class(TGoogleBaseObject)
  831. Private
  832. Freports : TGetReportsResponseTypereportsArray;
  833. Protected
  834. //Property setters
  835. Procedure Setreports(AIndex : Integer; const AValue : TGetReportsResponseTypereportsArray); virtual;
  836. //2.6.4. bug workaround
  837. {$IFDEF VER2_6}
  838. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  839. {$ENDIF VER2_6}
  840. Public
  841. Published
  842. Property reports : TGetReportsResponseTypereportsArray Index 0 Read Freports Write Setreports;
  843. end;
  844. TGetReportsResponseClass = Class of TGetReportsResponse;
  845. { --------------------------------------------------------------------
  846. TMetricHeaderEntry
  847. --------------------------------------------------------------------}
  848. TMetricHeaderEntry = Class(TGoogleBaseObject)
  849. Private
  850. F_type : String;
  851. Fname : String;
  852. Protected
  853. Class Function ExportPropertyName(Const AName : String) : string; override;
  854. //Property setters
  855. Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
  856. Procedure Setname(AIndex : Integer; const AValue : String); virtual;
  857. Public
  858. Published
  859. Property _type : String Index 0 Read F_type Write Set_type;
  860. Property name : String Index 8 Read Fname Write Setname;
  861. end;
  862. TMetricHeaderEntryClass = Class of TMetricHeaderEntry;
  863. { --------------------------------------------------------------------
  864. TMetricFilter
  865. --------------------------------------------------------------------}
  866. TMetricFilter = Class(TGoogleBaseObject)
  867. Private
  868. FmetricName : String;
  869. F_operator : String;
  870. FcomparisonValue : String;
  871. F_not : boolean;
  872. Protected
  873. Class Function ExportPropertyName(Const AName : String) : string; override;
  874. //Property setters
  875. Procedure SetmetricName(AIndex : Integer; const AValue : String); virtual;
  876. Procedure Set_operator(AIndex : Integer; const AValue : String); virtual;
  877. Procedure SetcomparisonValue(AIndex : Integer; const AValue : String); virtual;
  878. Procedure Set_not(AIndex : Integer; const AValue : boolean); virtual;
  879. Public
  880. Published
  881. Property metricName : String Index 0 Read FmetricName Write SetmetricName;
  882. Property _operator : String Index 8 Read F_operator Write Set_operator;
  883. Property comparisonValue : String Index 16 Read FcomparisonValue Write SetcomparisonValue;
  884. Property _not : boolean Index 24 Read F_not Write Set_not;
  885. end;
  886. TMetricFilterClass = Class of TMetricFilter;
  887. { --------------------------------------------------------------------
  888. TDimension
  889. --------------------------------------------------------------------}
  890. TDimension = Class(TGoogleBaseObject)
  891. Private
  892. FhistogramBuckets : TStringArray;
  893. Fname : String;
  894. Protected
  895. //Property setters
  896. Procedure SethistogramBuckets(AIndex : Integer; const AValue : TStringArray); virtual;
  897. Procedure Setname(AIndex : Integer; const AValue : String); virtual;
  898. //2.6.4. bug workaround
  899. {$IFDEF VER2_6}
  900. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  901. {$ENDIF VER2_6}
  902. Public
  903. Published
  904. Property histogramBuckets : TStringArray Index 0 Read FhistogramBuckets Write SethistogramBuckets;
  905. Property name : String Index 8 Read Fname Write Setname;
  906. end;
  907. TDimensionClass = Class of TDimension;
  908. { --------------------------------------------------------------------
  909. TPivotValueRegion
  910. --------------------------------------------------------------------}
  911. TPivotValueRegion = Class(TGoogleBaseObject)
  912. Private
  913. Fvalues : TStringArray;
  914. Protected
  915. //Property setters
  916. Procedure Setvalues(AIndex : Integer; const AValue : TStringArray); virtual;
  917. //2.6.4. bug workaround
  918. {$IFDEF VER2_6}
  919. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  920. {$ENDIF VER2_6}
  921. Public
  922. Published
  923. Property values : TStringArray Index 0 Read Fvalues Write Setvalues;
  924. end;
  925. TPivotValueRegionClass = Class of TPivotValueRegion;
  926. { --------------------------------------------------------------------
  927. TReportsResource
  928. --------------------------------------------------------------------}
  929. TReportsResource = Class(TGoogleResource)
  930. Public
  931. Class Function ResourceName : String; override;
  932. Class Function DefaultAPI : TGoogleAPIClass; override;
  933. Function BatchGet(aGetReportsRequest : TGetReportsRequest) : TGetReportsResponse;
  934. end;
  935. { --------------------------------------------------------------------
  936. TAnalyticsreportingAPI
  937. --------------------------------------------------------------------}
  938. TAnalyticsreportingAPI = Class(TGoogleAPI)
  939. Private
  940. FReportsInstance : TReportsResource;
  941. Function GetReportsInstance : TReportsResource;virtual;
  942. Public
  943. //Override class functions with API info
  944. Class Function APIName : String; override;
  945. Class Function APIVersion : String; override;
  946. Class Function APIRevision : String; override;
  947. Class Function APIID : String; override;
  948. Class Function APITitle : String; override;
  949. Class Function APIDescription : String; override;
  950. Class Function APIOwnerDomain : String; override;
  951. Class Function APIOwnerName : String; override;
  952. Class Function APIIcon16 : String; override;
  953. Class Function APIIcon32 : String; override;
  954. Class Function APIdocumentationLink : String; override;
  955. Class Function APIrootUrl : string; override;
  956. Class Function APIbasePath : string;override;
  957. Class Function APIbaseURL : String;override;
  958. Class Function APIProtocol : string;override;
  959. Class Function APIservicePath : string;override;
  960. Class Function APIbatchPath : String;override;
  961. Class Function APIAuthScopes : TScopeInfoArray;override;
  962. Class Function APINeedsAuth : Boolean;override;
  963. Class Procedure RegisterAPIResources; override;
  964. //Add create function for resources
  965. Function CreateReportsResource(AOwner : TComponent) : TReportsResource;virtual;overload;
  966. Function CreateReportsResource : TReportsResource;virtual;overload;
  967. //Add default on-demand instances for resources
  968. Property ReportsResource : TReportsResource Read GetReportsInstance;
  969. end;
  970. implementation
  971. { --------------------------------------------------------------------
  972. TPivotHeader
  973. --------------------------------------------------------------------}
  974. Procedure TPivotHeader.SettotalPivotGroupsCount(AIndex : Integer; const AValue : integer);
  975. begin
  976. If (FtotalPivotGroupsCount=AValue) then exit;
  977. FtotalPivotGroupsCount:=AValue;
  978. MarkPropertyChanged(AIndex);
  979. end;
  980. Procedure TPivotHeader.SetpivotHeaderEntries(AIndex : Integer; const AValue : TPivotHeaderTypepivotHeaderEntriesArray);
  981. begin
  982. If (FpivotHeaderEntries=AValue) then exit;
  983. FpivotHeaderEntries:=AValue;
  984. MarkPropertyChanged(AIndex);
  985. end;
  986. //2.6.4. bug workaround
  987. {$IFDEF VER2_6}
  988. Procedure TPivotHeader.SetArrayLength(Const AName : String; ALength : Longint);
  989. begin
  990. Case AName of
  991. 'pivotheaderentries' : SetLength(FpivotHeaderEntries,ALength);
  992. else
  993. Inherited SetArrayLength(AName,ALength);
  994. end;
  995. end;
  996. {$ENDIF VER2_6}
  997. { --------------------------------------------------------------------
  998. TMetric
  999. --------------------------------------------------------------------}
  1000. Procedure TMetric.Setalias(AIndex : Integer; const AValue : String);
  1001. begin
  1002. If (Falias=AValue) then exit;
  1003. Falias:=AValue;
  1004. MarkPropertyChanged(AIndex);
  1005. end;
  1006. Procedure TMetric.SetformattingType(AIndex : Integer; const AValue : String);
  1007. begin
  1008. If (FformattingType=AValue) then exit;
  1009. FformattingType:=AValue;
  1010. MarkPropertyChanged(AIndex);
  1011. end;
  1012. Procedure TMetric.Setexpression(AIndex : Integer; const AValue : String);
  1013. begin
  1014. If (Fexpression=AValue) then exit;
  1015. Fexpression:=AValue;
  1016. MarkPropertyChanged(AIndex);
  1017. end;
  1018. { --------------------------------------------------------------------
  1019. TColumnHeader
  1020. --------------------------------------------------------------------}
  1021. Procedure TColumnHeader.Setdimensions(AIndex : Integer; const AValue : TStringArray);
  1022. begin
  1023. If (Fdimensions=AValue) then exit;
  1024. Fdimensions:=AValue;
  1025. MarkPropertyChanged(AIndex);
  1026. end;
  1027. Procedure TColumnHeader.SetmetricHeader(AIndex : Integer; const AValue : TMetricHeader);
  1028. begin
  1029. If (FmetricHeader=AValue) then exit;
  1030. FmetricHeader:=AValue;
  1031. MarkPropertyChanged(AIndex);
  1032. end;
  1033. //2.6.4. bug workaround
  1034. {$IFDEF VER2_6}
  1035. Procedure TColumnHeader.SetArrayLength(Const AName : String; ALength : Longint);
  1036. begin
  1037. Case AName of
  1038. 'dimensions' : SetLength(Fdimensions,ALength);
  1039. else
  1040. Inherited SetArrayLength(AName,ALength);
  1041. end;
  1042. end;
  1043. {$ENDIF VER2_6}
  1044. { --------------------------------------------------------------------
  1045. TDynamicSegment
  1046. --------------------------------------------------------------------}
  1047. Procedure TDynamicSegment.SetsessionSegment(AIndex : Integer; const AValue : TSegmentDefinition);
  1048. begin
  1049. If (FsessionSegment=AValue) then exit;
  1050. FsessionSegment:=AValue;
  1051. MarkPropertyChanged(AIndex);
  1052. end;
  1053. Procedure TDynamicSegment.Setname(AIndex : Integer; const AValue : String);
  1054. begin
  1055. If (Fname=AValue) then exit;
  1056. Fname:=AValue;
  1057. MarkPropertyChanged(AIndex);
  1058. end;
  1059. Procedure TDynamicSegment.SetuserSegment(AIndex : Integer; const AValue : TSegmentDefinition);
  1060. begin
  1061. If (FuserSegment=AValue) then exit;
  1062. FuserSegment:=AValue;
  1063. MarkPropertyChanged(AIndex);
  1064. end;
  1065. { --------------------------------------------------------------------
  1066. TMetricHeader
  1067. --------------------------------------------------------------------}
  1068. Procedure TMetricHeader.SetmetricHeaderEntries(AIndex : Integer; const AValue : TMetricHeaderTypemetricHeaderEntriesArray);
  1069. begin
  1070. If (FmetricHeaderEntries=AValue) then exit;
  1071. FmetricHeaderEntries:=AValue;
  1072. MarkPropertyChanged(AIndex);
  1073. end;
  1074. Procedure TMetricHeader.SetpivotHeaders(AIndex : Integer; const AValue : TMetricHeaderTypepivotHeadersArray);
  1075. begin
  1076. If (FpivotHeaders=AValue) then exit;
  1077. FpivotHeaders:=AValue;
  1078. MarkPropertyChanged(AIndex);
  1079. end;
  1080. //2.6.4. bug workaround
  1081. {$IFDEF VER2_6}
  1082. Procedure TMetricHeader.SetArrayLength(Const AName : String; ALength : Longint);
  1083. begin
  1084. Case AName of
  1085. 'metricheaderentries' : SetLength(FmetricHeaderEntries,ALength);
  1086. 'pivotheaders' : SetLength(FpivotHeaders,ALength);
  1087. else
  1088. Inherited SetArrayLength(AName,ALength);
  1089. end;
  1090. end;
  1091. {$ENDIF VER2_6}
  1092. { --------------------------------------------------------------------
  1093. TReport
  1094. --------------------------------------------------------------------}
  1095. Procedure TReport.SetcolumnHeader(AIndex : Integer; const AValue : TColumnHeader);
  1096. begin
  1097. If (FcolumnHeader=AValue) then exit;
  1098. FcolumnHeader:=AValue;
  1099. MarkPropertyChanged(AIndex);
  1100. end;
  1101. Procedure TReport.Setdata(AIndex : Integer; const AValue : TReportData);
  1102. begin
  1103. If (Fdata=AValue) then exit;
  1104. Fdata:=AValue;
  1105. MarkPropertyChanged(AIndex);
  1106. end;
  1107. Procedure TReport.SetnextPageToken(AIndex : Integer; const AValue : String);
  1108. begin
  1109. If (FnextPageToken=AValue) then exit;
  1110. FnextPageToken:=AValue;
  1111. MarkPropertyChanged(AIndex);
  1112. end;
  1113. { --------------------------------------------------------------------
  1114. TSegmentFilterClause
  1115. --------------------------------------------------------------------}
  1116. Procedure TSegmentFilterClause.SetdimensionFilter(AIndex : Integer; const AValue : TSegmentDimensionFilter);
  1117. begin
  1118. If (FdimensionFilter=AValue) then exit;
  1119. FdimensionFilter:=AValue;
  1120. MarkPropertyChanged(AIndex);
  1121. end;
  1122. Procedure TSegmentFilterClause.SetmetricFilter(AIndex : Integer; const AValue : TSegmentMetricFilter);
  1123. begin
  1124. If (FmetricFilter=AValue) then exit;
  1125. FmetricFilter:=AValue;
  1126. MarkPropertyChanged(AIndex);
  1127. end;
  1128. Procedure TSegmentFilterClause.Set_not(AIndex : Integer; const AValue : boolean);
  1129. begin
  1130. If (F_not=AValue) then exit;
  1131. F_not:=AValue;
  1132. MarkPropertyChanged(AIndex);
  1133. end;
  1134. Class Function TSegmentFilterClause.ExportPropertyName(Const AName : String) :String;
  1135. begin
  1136. Case AName of
  1137. '_not' : Result:='not';
  1138. else
  1139. Result:=Inherited ExportPropertyName(AName);
  1140. end;
  1141. end;
  1142. { --------------------------------------------------------------------
  1143. TDimensionFilter
  1144. --------------------------------------------------------------------}
  1145. Procedure TDimensionFilter.SetdimensionName(AIndex : Integer; const AValue : String);
  1146. begin
  1147. If (FdimensionName=AValue) then exit;
  1148. FdimensionName:=AValue;
  1149. MarkPropertyChanged(AIndex);
  1150. end;
  1151. Procedure TDimensionFilter.Set_operator(AIndex : Integer; const AValue : String);
  1152. begin
  1153. If (F_operator=AValue) then exit;
  1154. F_operator:=AValue;
  1155. MarkPropertyChanged(AIndex);
  1156. end;
  1157. Procedure TDimensionFilter.SetcaseSensitive(AIndex : Integer; const AValue : boolean);
  1158. begin
  1159. If (FcaseSensitive=AValue) then exit;
  1160. FcaseSensitive:=AValue;
  1161. MarkPropertyChanged(AIndex);
  1162. end;
  1163. Procedure TDimensionFilter.Setexpressions(AIndex : Integer; const AValue : TStringArray);
  1164. begin
  1165. If (Fexpressions=AValue) then exit;
  1166. Fexpressions:=AValue;
  1167. MarkPropertyChanged(AIndex);
  1168. end;
  1169. Procedure TDimensionFilter.Set_not(AIndex : Integer; const AValue : boolean);
  1170. begin
  1171. If (F_not=AValue) then exit;
  1172. F_not:=AValue;
  1173. MarkPropertyChanged(AIndex);
  1174. end;
  1175. Class Function TDimensionFilter.ExportPropertyName(Const AName : String) :String;
  1176. begin
  1177. Case AName of
  1178. '_operator' : Result:='operator';
  1179. '_not' : Result:='not';
  1180. else
  1181. Result:=Inherited ExportPropertyName(AName);
  1182. end;
  1183. end;
  1184. //2.6.4. bug workaround
  1185. {$IFDEF VER2_6}
  1186. Procedure TDimensionFilter.SetArrayLength(Const AName : String; ALength : Longint);
  1187. begin
  1188. Case AName of
  1189. 'expressions' : SetLength(Fexpressions,ALength);
  1190. else
  1191. Inherited SetArrayLength(AName,ALength);
  1192. end;
  1193. end;
  1194. {$ENDIF VER2_6}
  1195. { --------------------------------------------------------------------
  1196. TSegmentDimensionFilter
  1197. --------------------------------------------------------------------}
  1198. Procedure TSegmentDimensionFilter.SetmaxComparisonValue(AIndex : Integer; const AValue : String);
  1199. begin
  1200. If (FmaxComparisonValue=AValue) then exit;
  1201. FmaxComparisonValue:=AValue;
  1202. MarkPropertyChanged(AIndex);
  1203. end;
  1204. Procedure TSegmentDimensionFilter.SetdimensionName(AIndex : Integer; const AValue : String);
  1205. begin
  1206. If (FdimensionName=AValue) then exit;
  1207. FdimensionName:=AValue;
  1208. MarkPropertyChanged(AIndex);
  1209. end;
  1210. Procedure TSegmentDimensionFilter.SetcaseSensitive(AIndex : Integer; const AValue : boolean);
  1211. begin
  1212. If (FcaseSensitive=AValue) then exit;
  1213. FcaseSensitive:=AValue;
  1214. MarkPropertyChanged(AIndex);
  1215. end;
  1216. Procedure TSegmentDimensionFilter.Set_operator(AIndex : Integer; const AValue : String);
  1217. begin
  1218. If (F_operator=AValue) then exit;
  1219. F_operator:=AValue;
  1220. MarkPropertyChanged(AIndex);
  1221. end;
  1222. Procedure TSegmentDimensionFilter.Setexpressions(AIndex : Integer; const AValue : TStringArray);
  1223. begin
  1224. If (Fexpressions=AValue) then exit;
  1225. Fexpressions:=AValue;
  1226. MarkPropertyChanged(AIndex);
  1227. end;
  1228. Procedure TSegmentDimensionFilter.SetminComparisonValue(AIndex : Integer; const AValue : String);
  1229. begin
  1230. If (FminComparisonValue=AValue) then exit;
  1231. FminComparisonValue:=AValue;
  1232. MarkPropertyChanged(AIndex);
  1233. end;
  1234. Class Function TSegmentDimensionFilter.ExportPropertyName(Const AName : String) :String;
  1235. begin
  1236. Case AName of
  1237. '_operator' : Result:='operator';
  1238. else
  1239. Result:=Inherited ExportPropertyName(AName);
  1240. end;
  1241. end;
  1242. //2.6.4. bug workaround
  1243. {$IFDEF VER2_6}
  1244. Procedure TSegmentDimensionFilter.SetArrayLength(Const AName : String; ALength : Longint);
  1245. begin
  1246. Case AName of
  1247. 'expressions' : SetLength(Fexpressions,ALength);
  1248. else
  1249. Inherited SetArrayLength(AName,ALength);
  1250. end;
  1251. end;
  1252. {$ENDIF VER2_6}
  1253. { --------------------------------------------------------------------
  1254. TReportRequest
  1255. --------------------------------------------------------------------}
  1256. Procedure TReportRequest.SetcohortGroup(AIndex : Integer; const AValue : TCohortGroup);
  1257. begin
  1258. If (FcohortGroup=AValue) then exit;
  1259. FcohortGroup:=AValue;
  1260. MarkPropertyChanged(AIndex);
  1261. end;
  1262. Procedure TReportRequest.Setdimensions(AIndex : Integer; const AValue : TReportRequestTypedimensionsArray);
  1263. begin
  1264. If (Fdimensions=AValue) then exit;
  1265. Fdimensions:=AValue;
  1266. MarkPropertyChanged(AIndex);
  1267. end;
  1268. Procedure TReportRequest.SetmetricFilterClauses(AIndex : Integer; const AValue : TReportRequestTypemetricFilterClausesArray);
  1269. begin
  1270. If (FmetricFilterClauses=AValue) then exit;
  1271. FmetricFilterClauses:=AValue;
  1272. MarkPropertyChanged(AIndex);
  1273. end;
  1274. Procedure TReportRequest.SethideTotals(AIndex : Integer; const AValue : boolean);
  1275. begin
  1276. If (FhideTotals=AValue) then exit;
  1277. FhideTotals:=AValue;
  1278. MarkPropertyChanged(AIndex);
  1279. end;
  1280. Procedure TReportRequest.SetincludeEmptyRows(AIndex : Integer; const AValue : boolean);
  1281. begin
  1282. If (FincludeEmptyRows=AValue) then exit;
  1283. FincludeEmptyRows:=AValue;
  1284. MarkPropertyChanged(AIndex);
  1285. end;
  1286. Procedure TReportRequest.SetdimensionFilterClauses(AIndex : Integer; const AValue : TReportRequestTypedimensionFilterClausesArray);
  1287. begin
  1288. If (FdimensionFilterClauses=AValue) then exit;
  1289. FdimensionFilterClauses:=AValue;
  1290. MarkPropertyChanged(AIndex);
  1291. end;
  1292. Procedure TReportRequest.Setpivots(AIndex : Integer; const AValue : TReportRequestTypepivotsArray);
  1293. begin
  1294. If (Fpivots=AValue) then exit;
  1295. Fpivots:=AValue;
  1296. MarkPropertyChanged(AIndex);
  1297. end;
  1298. Procedure TReportRequest.SetdateRanges(AIndex : Integer; const AValue : TReportRequestTypedateRangesArray);
  1299. begin
  1300. If (FdateRanges=AValue) then exit;
  1301. FdateRanges:=AValue;
  1302. MarkPropertyChanged(AIndex);
  1303. end;
  1304. Procedure TReportRequest.Setsegments(AIndex : Integer; const AValue : TReportRequestTypesegmentsArray);
  1305. begin
  1306. If (Fsegments=AValue) then exit;
  1307. Fsegments:=AValue;
  1308. MarkPropertyChanged(AIndex);
  1309. end;
  1310. Procedure TReportRequest.SetsamplingLevel(AIndex : Integer; const AValue : String);
  1311. begin
  1312. If (FsamplingLevel=AValue) then exit;
  1313. FsamplingLevel:=AValue;
  1314. MarkPropertyChanged(AIndex);
  1315. end;
  1316. Procedure TReportRequest.Setmetrics(AIndex : Integer; const AValue : TReportRequestTypemetricsArray);
  1317. begin
  1318. If (Fmetrics=AValue) then exit;
  1319. Fmetrics:=AValue;
  1320. MarkPropertyChanged(AIndex);
  1321. end;
  1322. Procedure TReportRequest.SetpageSize(AIndex : Integer; const AValue : integer);
  1323. begin
  1324. If (FpageSize=AValue) then exit;
  1325. FpageSize:=AValue;
  1326. MarkPropertyChanged(AIndex);
  1327. end;
  1328. Procedure TReportRequest.SetorderBys(AIndex : Integer; const AValue : TReportRequestTypeorderBysArray);
  1329. begin
  1330. If (ForderBys=AValue) then exit;
  1331. ForderBys:=AValue;
  1332. MarkPropertyChanged(AIndex);
  1333. end;
  1334. Procedure TReportRequest.SetfiltersExpression(AIndex : Integer; const AValue : String);
  1335. begin
  1336. If (FfiltersExpression=AValue) then exit;
  1337. FfiltersExpression:=AValue;
  1338. MarkPropertyChanged(AIndex);
  1339. end;
  1340. Procedure TReportRequest.SethideValueRanges(AIndex : Integer; const AValue : boolean);
  1341. begin
  1342. If (FhideValueRanges=AValue) then exit;
  1343. FhideValueRanges:=AValue;
  1344. MarkPropertyChanged(AIndex);
  1345. end;
  1346. Procedure TReportRequest.SetviewId(AIndex : Integer; const AValue : String);
  1347. begin
  1348. If (FviewId=AValue) then exit;
  1349. FviewId:=AValue;
  1350. MarkPropertyChanged(AIndex);
  1351. end;
  1352. Procedure TReportRequest.SetpageToken(AIndex : Integer; const AValue : String);
  1353. begin
  1354. If (FpageToken=AValue) then exit;
  1355. FpageToken:=AValue;
  1356. MarkPropertyChanged(AIndex);
  1357. end;
  1358. //2.6.4. bug workaround
  1359. {$IFDEF VER2_6}
  1360. Procedure TReportRequest.SetArrayLength(Const AName : String; ALength : Longint);
  1361. begin
  1362. Case AName of
  1363. 'dimensions' : SetLength(Fdimensions,ALength);
  1364. 'metricfilterclauses' : SetLength(FmetricFilterClauses,ALength);
  1365. 'dimensionfilterclauses' : SetLength(FdimensionFilterClauses,ALength);
  1366. 'pivots' : SetLength(Fpivots,ALength);
  1367. 'dateranges' : SetLength(FdateRanges,ALength);
  1368. 'segments' : SetLength(Fsegments,ALength);
  1369. 'metrics' : SetLength(Fmetrics,ALength);
  1370. 'orderbys' : SetLength(ForderBys,ALength);
  1371. else
  1372. Inherited SetArrayLength(AName,ALength);
  1373. end;
  1374. end;
  1375. {$ENDIF VER2_6}
  1376. { --------------------------------------------------------------------
  1377. TSimpleSegment
  1378. --------------------------------------------------------------------}
  1379. Procedure TSimpleSegment.SetorFiltersForSegment(AIndex : Integer; const AValue : TSimpleSegmentTypeorFiltersForSegmentArray);
  1380. begin
  1381. If (ForFiltersForSegment=AValue) then exit;
  1382. ForFiltersForSegment:=AValue;
  1383. MarkPropertyChanged(AIndex);
  1384. end;
  1385. //2.6.4. bug workaround
  1386. {$IFDEF VER2_6}
  1387. Procedure TSimpleSegment.SetArrayLength(Const AName : String; ALength : Longint);
  1388. begin
  1389. Case AName of
  1390. 'orfiltersforsegment' : SetLength(ForFiltersForSegment,ALength);
  1391. else
  1392. Inherited SetArrayLength(AName,ALength);
  1393. end;
  1394. end;
  1395. {$ENDIF VER2_6}
  1396. { --------------------------------------------------------------------
  1397. TSegmentDefinition
  1398. --------------------------------------------------------------------}
  1399. Procedure TSegmentDefinition.SetsegmentFilters(AIndex : Integer; const AValue : TSegmentDefinitionTypesegmentFiltersArray);
  1400. begin
  1401. If (FsegmentFilters=AValue) then exit;
  1402. FsegmentFilters:=AValue;
  1403. MarkPropertyChanged(AIndex);
  1404. end;
  1405. //2.6.4. bug workaround
  1406. {$IFDEF VER2_6}
  1407. Procedure TSegmentDefinition.SetArrayLength(Const AName : String; ALength : Longint);
  1408. begin
  1409. Case AName of
  1410. 'segmentfilters' : SetLength(FsegmentFilters,ALength);
  1411. else
  1412. Inherited SetArrayLength(AName,ALength);
  1413. end;
  1414. end;
  1415. {$ENDIF VER2_6}
  1416. { --------------------------------------------------------------------
  1417. TSegmentMetricFilter
  1418. --------------------------------------------------------------------}
  1419. Procedure TSegmentMetricFilter.SetmetricName(AIndex : Integer; const AValue : String);
  1420. begin
  1421. If (FmetricName=AValue) then exit;
  1422. FmetricName:=AValue;
  1423. MarkPropertyChanged(AIndex);
  1424. end;
  1425. Procedure TSegmentMetricFilter.Set_operator(AIndex : Integer; const AValue : String);
  1426. begin
  1427. If (F_operator=AValue) then exit;
  1428. F_operator:=AValue;
  1429. MarkPropertyChanged(AIndex);
  1430. end;
  1431. Procedure TSegmentMetricFilter.SetcomparisonValue(AIndex : Integer; const AValue : String);
  1432. begin
  1433. If (FcomparisonValue=AValue) then exit;
  1434. FcomparisonValue:=AValue;
  1435. MarkPropertyChanged(AIndex);
  1436. end;
  1437. Procedure TSegmentMetricFilter.Setscope(AIndex : Integer; const AValue : String);
  1438. begin
  1439. If (Fscope=AValue) then exit;
  1440. Fscope:=AValue;
  1441. MarkPropertyChanged(AIndex);
  1442. end;
  1443. Procedure TSegmentMetricFilter.SetmaxComparisonValue(AIndex : Integer; const AValue : String);
  1444. begin
  1445. If (FmaxComparisonValue=AValue) then exit;
  1446. FmaxComparisonValue:=AValue;
  1447. MarkPropertyChanged(AIndex);
  1448. end;
  1449. Class Function TSegmentMetricFilter.ExportPropertyName(Const AName : String) :String;
  1450. begin
  1451. Case AName of
  1452. '_operator' : Result:='operator';
  1453. else
  1454. Result:=Inherited ExportPropertyName(AName);
  1455. end;
  1456. end;
  1457. { --------------------------------------------------------------------
  1458. TReportData
  1459. --------------------------------------------------------------------}
  1460. Procedure TReportData.SetrowCount(AIndex : Integer; const AValue : integer);
  1461. begin
  1462. If (FrowCount=AValue) then exit;
  1463. FrowCount:=AValue;
  1464. MarkPropertyChanged(AIndex);
  1465. end;
  1466. Procedure TReportData.SetsamplingSpaceSizes(AIndex : Integer; const AValue : TStringArray);
  1467. begin
  1468. If (FsamplingSpaceSizes=AValue) then exit;
  1469. FsamplingSpaceSizes:=AValue;
  1470. MarkPropertyChanged(AIndex);
  1471. end;
  1472. Procedure TReportData.Setmaximums(AIndex : Integer; const AValue : TReportDataTypemaximumsArray);
  1473. begin
  1474. If (Fmaximums=AValue) then exit;
  1475. Fmaximums:=AValue;
  1476. MarkPropertyChanged(AIndex);
  1477. end;
  1478. Procedure TReportData.SetsamplesReadCounts(AIndex : Integer; const AValue : TStringArray);
  1479. begin
  1480. If (FsamplesReadCounts=AValue) then exit;
  1481. FsamplesReadCounts:=AValue;
  1482. MarkPropertyChanged(AIndex);
  1483. end;
  1484. Procedure TReportData.Setminimums(AIndex : Integer; const AValue : TReportDataTypeminimumsArray);
  1485. begin
  1486. If (Fminimums=AValue) then exit;
  1487. Fminimums:=AValue;
  1488. MarkPropertyChanged(AIndex);
  1489. end;
  1490. Procedure TReportData.Setrows(AIndex : Integer; const AValue : TReportDataTyperowsArray);
  1491. begin
  1492. If (Frows=AValue) then exit;
  1493. Frows:=AValue;
  1494. MarkPropertyChanged(AIndex);
  1495. end;
  1496. Procedure TReportData.Settotals(AIndex : Integer; const AValue : TReportDataTypetotalsArray);
  1497. begin
  1498. If (Ftotals=AValue) then exit;
  1499. Ftotals:=AValue;
  1500. MarkPropertyChanged(AIndex);
  1501. end;
  1502. Procedure TReportData.SetisDataGolden(AIndex : Integer; const AValue : boolean);
  1503. begin
  1504. If (FisDataGolden=AValue) then exit;
  1505. FisDataGolden:=AValue;
  1506. MarkPropertyChanged(AIndex);
  1507. end;
  1508. //2.6.4. bug workaround
  1509. {$IFDEF VER2_6}
  1510. Procedure TReportData.SetArrayLength(Const AName : String; ALength : Longint);
  1511. begin
  1512. Case AName of
  1513. 'samplingspacesizes' : SetLength(FsamplingSpaceSizes,ALength);
  1514. 'maximums' : SetLength(Fmaximums,ALength);
  1515. 'samplesreadcounts' : SetLength(FsamplesReadCounts,ALength);
  1516. 'minimums' : SetLength(Fminimums,ALength);
  1517. 'rows' : SetLength(Frows,ALength);
  1518. 'totals' : SetLength(Ftotals,ALength);
  1519. else
  1520. Inherited SetArrayLength(AName,ALength);
  1521. end;
  1522. end;
  1523. {$ENDIF VER2_6}
  1524. { --------------------------------------------------------------------
  1525. TGetReportsRequest
  1526. --------------------------------------------------------------------}
  1527. Procedure TGetReportsRequest.SetreportRequests(AIndex : Integer; const AValue : TGetReportsRequestTypereportRequestsArray);
  1528. begin
  1529. If (FreportRequests=AValue) then exit;
  1530. FreportRequests:=AValue;
  1531. MarkPropertyChanged(AIndex);
  1532. end;
  1533. //2.6.4. bug workaround
  1534. {$IFDEF VER2_6}
  1535. Procedure TGetReportsRequest.SetArrayLength(Const AName : String; ALength : Longint);
  1536. begin
  1537. Case AName of
  1538. 'reportrequests' : SetLength(FreportRequests,ALength);
  1539. else
  1540. Inherited SetArrayLength(AName,ALength);
  1541. end;
  1542. end;
  1543. {$ENDIF VER2_6}
  1544. { --------------------------------------------------------------------
  1545. TOrderBy
  1546. --------------------------------------------------------------------}
  1547. Procedure TOrderBy.SetsortOrder(AIndex : Integer; const AValue : String);
  1548. begin
  1549. If (FsortOrder=AValue) then exit;
  1550. FsortOrder:=AValue;
  1551. MarkPropertyChanged(AIndex);
  1552. end;
  1553. Procedure TOrderBy.SetorderType(AIndex : Integer; const AValue : String);
  1554. begin
  1555. If (ForderType=AValue) then exit;
  1556. ForderType:=AValue;
  1557. MarkPropertyChanged(AIndex);
  1558. end;
  1559. Procedure TOrderBy.SetfieldName(AIndex : Integer; const AValue : String);
  1560. begin
  1561. If (FfieldName=AValue) then exit;
  1562. FfieldName:=AValue;
  1563. MarkPropertyChanged(AIndex);
  1564. end;
  1565. { --------------------------------------------------------------------
  1566. TCohort
  1567. --------------------------------------------------------------------}
  1568. Procedure TCohort.Set_type(AIndex : Integer; const AValue : String);
  1569. begin
  1570. If (F_type=AValue) then exit;
  1571. F_type:=AValue;
  1572. MarkPropertyChanged(AIndex);
  1573. end;
  1574. Procedure TCohort.SetdateRange(AIndex : Integer; const AValue : TDateRange);
  1575. begin
  1576. If (FdateRange=AValue) then exit;
  1577. FdateRange:=AValue;
  1578. MarkPropertyChanged(AIndex);
  1579. end;
  1580. Procedure TCohort.Setname(AIndex : Integer; const AValue : String);
  1581. begin
  1582. If (Fname=AValue) then exit;
  1583. Fname:=AValue;
  1584. MarkPropertyChanged(AIndex);
  1585. end;
  1586. Class Function TCohort.ExportPropertyName(Const AName : String) :String;
  1587. begin
  1588. Case AName of
  1589. '_type' : Result:='type';
  1590. else
  1591. Result:=Inherited ExportPropertyName(AName);
  1592. end;
  1593. end;
  1594. { --------------------------------------------------------------------
  1595. TOrFiltersForSegment
  1596. --------------------------------------------------------------------}
  1597. Procedure TOrFiltersForSegment.SetsegmentFilterClauses(AIndex : Integer; const AValue : TOrFiltersForSegmentTypesegmentFilterClausesArray);
  1598. begin
  1599. If (FsegmentFilterClauses=AValue) then exit;
  1600. FsegmentFilterClauses:=AValue;
  1601. MarkPropertyChanged(AIndex);
  1602. end;
  1603. //2.6.4. bug workaround
  1604. {$IFDEF VER2_6}
  1605. Procedure TOrFiltersForSegment.SetArrayLength(Const AName : String; ALength : Longint);
  1606. begin
  1607. Case AName of
  1608. 'segmentfilterclauses' : SetLength(FsegmentFilterClauses,ALength);
  1609. else
  1610. Inherited SetArrayLength(AName,ALength);
  1611. end;
  1612. end;
  1613. {$ENDIF VER2_6}
  1614. { --------------------------------------------------------------------
  1615. TSequenceSegment
  1616. --------------------------------------------------------------------}
  1617. Procedure TSequenceSegment.SetfirstStepShouldMatchFirstHit(AIndex : Integer; const AValue : boolean);
  1618. begin
  1619. If (FfirstStepShouldMatchFirstHit=AValue) then exit;
  1620. FfirstStepShouldMatchFirstHit:=AValue;
  1621. MarkPropertyChanged(AIndex);
  1622. end;
  1623. Procedure TSequenceSegment.SetsegmentSequenceSteps(AIndex : Integer; const AValue : TSequenceSegmentTypesegmentSequenceStepsArray);
  1624. begin
  1625. If (FsegmentSequenceSteps=AValue) then exit;
  1626. FsegmentSequenceSteps:=AValue;
  1627. MarkPropertyChanged(AIndex);
  1628. end;
  1629. //2.6.4. bug workaround
  1630. {$IFDEF VER2_6}
  1631. Procedure TSequenceSegment.SetArrayLength(Const AName : String; ALength : Longint);
  1632. begin
  1633. Case AName of
  1634. 'segmentsequencesteps' : SetLength(FsegmentSequenceSteps,ALength);
  1635. else
  1636. Inherited SetArrayLength(AName,ALength);
  1637. end;
  1638. end;
  1639. {$ENDIF VER2_6}
  1640. { --------------------------------------------------------------------
  1641. TSegmentFilter
  1642. --------------------------------------------------------------------}
  1643. Procedure TSegmentFilter.SetsequenceSegment(AIndex : Integer; const AValue : TSequenceSegment);
  1644. begin
  1645. If (FsequenceSegment=AValue) then exit;
  1646. FsequenceSegment:=AValue;
  1647. MarkPropertyChanged(AIndex);
  1648. end;
  1649. Procedure TSegmentFilter.Set_not(AIndex : Integer; const AValue : boolean);
  1650. begin
  1651. If (F_not=AValue) then exit;
  1652. F_not:=AValue;
  1653. MarkPropertyChanged(AIndex);
  1654. end;
  1655. Procedure TSegmentFilter.SetsimpleSegment(AIndex : Integer; const AValue : TSimpleSegment);
  1656. begin
  1657. If (FsimpleSegment=AValue) then exit;
  1658. FsimpleSegment:=AValue;
  1659. MarkPropertyChanged(AIndex);
  1660. end;
  1661. Class Function TSegmentFilter.ExportPropertyName(Const AName : String) :String;
  1662. begin
  1663. Case AName of
  1664. '_not' : Result:='not';
  1665. else
  1666. Result:=Inherited ExportPropertyName(AName);
  1667. end;
  1668. end;
  1669. { --------------------------------------------------------------------
  1670. TPivotHeaderEntry
  1671. --------------------------------------------------------------------}
  1672. Procedure TPivotHeaderEntry.SetdimensionNames(AIndex : Integer; const AValue : TStringArray);
  1673. begin
  1674. If (FdimensionNames=AValue) then exit;
  1675. FdimensionNames:=AValue;
  1676. MarkPropertyChanged(AIndex);
  1677. end;
  1678. Procedure TPivotHeaderEntry.SetdimensionValues(AIndex : Integer; const AValue : TStringArray);
  1679. begin
  1680. If (FdimensionValues=AValue) then exit;
  1681. FdimensionValues:=AValue;
  1682. MarkPropertyChanged(AIndex);
  1683. end;
  1684. Procedure TPivotHeaderEntry.Setmetric(AIndex : Integer; const AValue : TMetricHeaderEntry);
  1685. begin
  1686. If (Fmetric=AValue) then exit;
  1687. Fmetric:=AValue;
  1688. MarkPropertyChanged(AIndex);
  1689. end;
  1690. //2.6.4. bug workaround
  1691. {$IFDEF VER2_6}
  1692. Procedure TPivotHeaderEntry.SetArrayLength(Const AName : String; ALength : Longint);
  1693. begin
  1694. Case AName of
  1695. 'dimensionnames' : SetLength(FdimensionNames,ALength);
  1696. 'dimensionvalues' : SetLength(FdimensionValues,ALength);
  1697. else
  1698. Inherited SetArrayLength(AName,ALength);
  1699. end;
  1700. end;
  1701. {$ENDIF VER2_6}
  1702. { --------------------------------------------------------------------
  1703. TDimensionFilterClause
  1704. --------------------------------------------------------------------}
  1705. Procedure TDimensionFilterClause.Set_operator(AIndex : Integer; const AValue : String);
  1706. begin
  1707. If (F_operator=AValue) then exit;
  1708. F_operator:=AValue;
  1709. MarkPropertyChanged(AIndex);
  1710. end;
  1711. Procedure TDimensionFilterClause.Setfilters(AIndex : Integer; const AValue : TDimensionFilterClauseTypefiltersArray);
  1712. begin
  1713. If (Ffilters=AValue) then exit;
  1714. Ffilters:=AValue;
  1715. MarkPropertyChanged(AIndex);
  1716. end;
  1717. Class Function TDimensionFilterClause.ExportPropertyName(Const AName : String) :String;
  1718. begin
  1719. Case AName of
  1720. '_operator' : Result:='operator';
  1721. else
  1722. Result:=Inherited ExportPropertyName(AName);
  1723. end;
  1724. end;
  1725. //2.6.4. bug workaround
  1726. {$IFDEF VER2_6}
  1727. Procedure TDimensionFilterClause.SetArrayLength(Const AName : String; ALength : Longint);
  1728. begin
  1729. Case AName of
  1730. 'filters' : SetLength(Ffilters,ALength);
  1731. else
  1732. Inherited SetArrayLength(AName,ALength);
  1733. end;
  1734. end;
  1735. {$ENDIF VER2_6}
  1736. { --------------------------------------------------------------------
  1737. TSegmentSequenceStep
  1738. --------------------------------------------------------------------}
  1739. Procedure TSegmentSequenceStep.SetmatchType(AIndex : Integer; const AValue : String);
  1740. begin
  1741. If (FmatchType=AValue) then exit;
  1742. FmatchType:=AValue;
  1743. MarkPropertyChanged(AIndex);
  1744. end;
  1745. Procedure TSegmentSequenceStep.SetorFiltersForSegment(AIndex : Integer; const AValue : TSegmentSequenceStepTypeorFiltersForSegmentArray);
  1746. begin
  1747. If (ForFiltersForSegment=AValue) then exit;
  1748. ForFiltersForSegment:=AValue;
  1749. MarkPropertyChanged(AIndex);
  1750. end;
  1751. //2.6.4. bug workaround
  1752. {$IFDEF VER2_6}
  1753. Procedure TSegmentSequenceStep.SetArrayLength(Const AName : String; ALength : Longint);
  1754. begin
  1755. Case AName of
  1756. 'orfiltersforsegment' : SetLength(ForFiltersForSegment,ALength);
  1757. else
  1758. Inherited SetArrayLength(AName,ALength);
  1759. end;
  1760. end;
  1761. {$ENDIF VER2_6}
  1762. { --------------------------------------------------------------------
  1763. TPivot
  1764. --------------------------------------------------------------------}
  1765. Procedure TPivot.Setdimensions(AIndex : Integer; const AValue : TPivotTypedimensionsArray);
  1766. begin
  1767. If (Fdimensions=AValue) then exit;
  1768. Fdimensions:=AValue;
  1769. MarkPropertyChanged(AIndex);
  1770. end;
  1771. Procedure TPivot.Setmetrics(AIndex : Integer; const AValue : TPivotTypemetricsArray);
  1772. begin
  1773. If (Fmetrics=AValue) then exit;
  1774. Fmetrics:=AValue;
  1775. MarkPropertyChanged(AIndex);
  1776. end;
  1777. Procedure TPivot.SetmaxGroupCount(AIndex : Integer; const AValue : integer);
  1778. begin
  1779. If (FmaxGroupCount=AValue) then exit;
  1780. FmaxGroupCount:=AValue;
  1781. MarkPropertyChanged(AIndex);
  1782. end;
  1783. Procedure TPivot.SetdimensionFilterClauses(AIndex : Integer; const AValue : TPivotTypedimensionFilterClausesArray);
  1784. begin
  1785. If (FdimensionFilterClauses=AValue) then exit;
  1786. FdimensionFilterClauses:=AValue;
  1787. MarkPropertyChanged(AIndex);
  1788. end;
  1789. Procedure TPivot.SetstartGroup(AIndex : Integer; const AValue : integer);
  1790. begin
  1791. If (FstartGroup=AValue) then exit;
  1792. FstartGroup:=AValue;
  1793. MarkPropertyChanged(AIndex);
  1794. end;
  1795. //2.6.4. bug workaround
  1796. {$IFDEF VER2_6}
  1797. Procedure TPivot.SetArrayLength(Const AName : String; ALength : Longint);
  1798. begin
  1799. Case AName of
  1800. 'dimensions' : SetLength(Fdimensions,ALength);
  1801. 'metrics' : SetLength(Fmetrics,ALength);
  1802. 'dimensionfilterclauses' : SetLength(FdimensionFilterClauses,ALength);
  1803. else
  1804. Inherited SetArrayLength(AName,ALength);
  1805. end;
  1806. end;
  1807. {$ENDIF VER2_6}
  1808. { --------------------------------------------------------------------
  1809. TDateRangeValues
  1810. --------------------------------------------------------------------}
  1811. Procedure TDateRangeValues.Setvalues(AIndex : Integer; const AValue : TStringArray);
  1812. begin
  1813. If (Fvalues=AValue) then exit;
  1814. Fvalues:=AValue;
  1815. MarkPropertyChanged(AIndex);
  1816. end;
  1817. Procedure TDateRangeValues.SetpivotValueRegions(AIndex : Integer; const AValue : TDateRangeValuesTypepivotValueRegionsArray);
  1818. begin
  1819. If (FpivotValueRegions=AValue) then exit;
  1820. FpivotValueRegions:=AValue;
  1821. MarkPropertyChanged(AIndex);
  1822. end;
  1823. //2.6.4. bug workaround
  1824. {$IFDEF VER2_6}
  1825. Procedure TDateRangeValues.SetArrayLength(Const AName : String; ALength : Longint);
  1826. begin
  1827. Case AName of
  1828. 'values' : SetLength(Fvalues,ALength);
  1829. 'pivotvalueregions' : SetLength(FpivotValueRegions,ALength);
  1830. else
  1831. Inherited SetArrayLength(AName,ALength);
  1832. end;
  1833. end;
  1834. {$ENDIF VER2_6}
  1835. { --------------------------------------------------------------------
  1836. TMetricFilterClause
  1837. --------------------------------------------------------------------}
  1838. Procedure TMetricFilterClause.Set_operator(AIndex : Integer; const AValue : String);
  1839. begin
  1840. If (F_operator=AValue) then exit;
  1841. F_operator:=AValue;
  1842. MarkPropertyChanged(AIndex);
  1843. end;
  1844. Procedure TMetricFilterClause.Setfilters(AIndex : Integer; const AValue : TMetricFilterClauseTypefiltersArray);
  1845. begin
  1846. If (Ffilters=AValue) then exit;
  1847. Ffilters:=AValue;
  1848. MarkPropertyChanged(AIndex);
  1849. end;
  1850. Class Function TMetricFilterClause.ExportPropertyName(Const AName : String) :String;
  1851. begin
  1852. Case AName of
  1853. '_operator' : Result:='operator';
  1854. else
  1855. Result:=Inherited ExportPropertyName(AName);
  1856. end;
  1857. end;
  1858. //2.6.4. bug workaround
  1859. {$IFDEF VER2_6}
  1860. Procedure TMetricFilterClause.SetArrayLength(Const AName : String; ALength : Longint);
  1861. begin
  1862. Case AName of
  1863. 'filters' : SetLength(Ffilters,ALength);
  1864. else
  1865. Inherited SetArrayLength(AName,ALength);
  1866. end;
  1867. end;
  1868. {$ENDIF VER2_6}
  1869. { --------------------------------------------------------------------
  1870. TSegment
  1871. --------------------------------------------------------------------}
  1872. Procedure TSegment.SetdynamicSegment(AIndex : Integer; const AValue : TDynamicSegment);
  1873. begin
  1874. If (FdynamicSegment=AValue) then exit;
  1875. FdynamicSegment:=AValue;
  1876. MarkPropertyChanged(AIndex);
  1877. end;
  1878. Procedure TSegment.SetsegmentId(AIndex : Integer; const AValue : String);
  1879. begin
  1880. If (FsegmentId=AValue) then exit;
  1881. FsegmentId:=AValue;
  1882. MarkPropertyChanged(AIndex);
  1883. end;
  1884. { --------------------------------------------------------------------
  1885. TDateRange
  1886. --------------------------------------------------------------------}
  1887. Procedure TDateRange.SetstartDate(AIndex : Integer; const AValue : String);
  1888. begin
  1889. If (FstartDate=AValue) then exit;
  1890. FstartDate:=AValue;
  1891. MarkPropertyChanged(AIndex);
  1892. end;
  1893. Procedure TDateRange.SetendDate(AIndex : Integer; const AValue : String);
  1894. begin
  1895. If (FendDate=AValue) then exit;
  1896. FendDate:=AValue;
  1897. MarkPropertyChanged(AIndex);
  1898. end;
  1899. { --------------------------------------------------------------------
  1900. TReportRow
  1901. --------------------------------------------------------------------}
  1902. Procedure TReportRow.Setdimensions(AIndex : Integer; const AValue : TStringArray);
  1903. begin
  1904. If (Fdimensions=AValue) then exit;
  1905. Fdimensions:=AValue;
  1906. MarkPropertyChanged(AIndex);
  1907. end;
  1908. Procedure TReportRow.Setmetrics(AIndex : Integer; const AValue : TReportRowTypemetricsArray);
  1909. begin
  1910. If (Fmetrics=AValue) then exit;
  1911. Fmetrics:=AValue;
  1912. MarkPropertyChanged(AIndex);
  1913. end;
  1914. //2.6.4. bug workaround
  1915. {$IFDEF VER2_6}
  1916. Procedure TReportRow.SetArrayLength(Const AName : String; ALength : Longint);
  1917. begin
  1918. Case AName of
  1919. 'dimensions' : SetLength(Fdimensions,ALength);
  1920. 'metrics' : SetLength(Fmetrics,ALength);
  1921. else
  1922. Inherited SetArrayLength(AName,ALength);
  1923. end;
  1924. end;
  1925. {$ENDIF VER2_6}
  1926. { --------------------------------------------------------------------
  1927. TCohortGroup
  1928. --------------------------------------------------------------------}
  1929. Procedure TCohortGroup.SetlifetimeValue(AIndex : Integer; const AValue : boolean);
  1930. begin
  1931. If (FlifetimeValue=AValue) then exit;
  1932. FlifetimeValue:=AValue;
  1933. MarkPropertyChanged(AIndex);
  1934. end;
  1935. Procedure TCohortGroup.Setcohorts(AIndex : Integer; const AValue : TCohortGroupTypecohortsArray);
  1936. begin
  1937. If (Fcohorts=AValue) then exit;
  1938. Fcohorts:=AValue;
  1939. MarkPropertyChanged(AIndex);
  1940. end;
  1941. //2.6.4. bug workaround
  1942. {$IFDEF VER2_6}
  1943. Procedure TCohortGroup.SetArrayLength(Const AName : String; ALength : Longint);
  1944. begin
  1945. Case AName of
  1946. 'cohorts' : SetLength(Fcohorts,ALength);
  1947. else
  1948. Inherited SetArrayLength(AName,ALength);
  1949. end;
  1950. end;
  1951. {$ENDIF VER2_6}
  1952. { --------------------------------------------------------------------
  1953. TGetReportsResponse
  1954. --------------------------------------------------------------------}
  1955. Procedure TGetReportsResponse.Setreports(AIndex : Integer; const AValue : TGetReportsResponseTypereportsArray);
  1956. begin
  1957. If (Freports=AValue) then exit;
  1958. Freports:=AValue;
  1959. MarkPropertyChanged(AIndex);
  1960. end;
  1961. //2.6.4. bug workaround
  1962. {$IFDEF VER2_6}
  1963. Procedure TGetReportsResponse.SetArrayLength(Const AName : String; ALength : Longint);
  1964. begin
  1965. Case AName of
  1966. 'reports' : SetLength(Freports,ALength);
  1967. else
  1968. Inherited SetArrayLength(AName,ALength);
  1969. end;
  1970. end;
  1971. {$ENDIF VER2_6}
  1972. { --------------------------------------------------------------------
  1973. TMetricHeaderEntry
  1974. --------------------------------------------------------------------}
  1975. Procedure TMetricHeaderEntry.Set_type(AIndex : Integer; const AValue : String);
  1976. begin
  1977. If (F_type=AValue) then exit;
  1978. F_type:=AValue;
  1979. MarkPropertyChanged(AIndex);
  1980. end;
  1981. Procedure TMetricHeaderEntry.Setname(AIndex : Integer; const AValue : String);
  1982. begin
  1983. If (Fname=AValue) then exit;
  1984. Fname:=AValue;
  1985. MarkPropertyChanged(AIndex);
  1986. end;
  1987. Class Function TMetricHeaderEntry.ExportPropertyName(Const AName : String) :String;
  1988. begin
  1989. Case AName of
  1990. '_type' : Result:='type';
  1991. else
  1992. Result:=Inherited ExportPropertyName(AName);
  1993. end;
  1994. end;
  1995. { --------------------------------------------------------------------
  1996. TMetricFilter
  1997. --------------------------------------------------------------------}
  1998. Procedure TMetricFilter.SetmetricName(AIndex : Integer; const AValue : String);
  1999. begin
  2000. If (FmetricName=AValue) then exit;
  2001. FmetricName:=AValue;
  2002. MarkPropertyChanged(AIndex);
  2003. end;
  2004. Procedure TMetricFilter.Set_operator(AIndex : Integer; const AValue : String);
  2005. begin
  2006. If (F_operator=AValue) then exit;
  2007. F_operator:=AValue;
  2008. MarkPropertyChanged(AIndex);
  2009. end;
  2010. Procedure TMetricFilter.SetcomparisonValue(AIndex : Integer; const AValue : String);
  2011. begin
  2012. If (FcomparisonValue=AValue) then exit;
  2013. FcomparisonValue:=AValue;
  2014. MarkPropertyChanged(AIndex);
  2015. end;
  2016. Procedure TMetricFilter.Set_not(AIndex : Integer; const AValue : boolean);
  2017. begin
  2018. If (F_not=AValue) then exit;
  2019. F_not:=AValue;
  2020. MarkPropertyChanged(AIndex);
  2021. end;
  2022. Class Function TMetricFilter.ExportPropertyName(Const AName : String) :String;
  2023. begin
  2024. Case AName of
  2025. '_operator' : Result:='operator';
  2026. '_not' : Result:='not';
  2027. else
  2028. Result:=Inherited ExportPropertyName(AName);
  2029. end;
  2030. end;
  2031. { --------------------------------------------------------------------
  2032. TDimension
  2033. --------------------------------------------------------------------}
  2034. Procedure TDimension.SethistogramBuckets(AIndex : Integer; const AValue : TStringArray);
  2035. begin
  2036. If (FhistogramBuckets=AValue) then exit;
  2037. FhistogramBuckets:=AValue;
  2038. MarkPropertyChanged(AIndex);
  2039. end;
  2040. Procedure TDimension.Setname(AIndex : Integer; const AValue : String);
  2041. begin
  2042. If (Fname=AValue) then exit;
  2043. Fname:=AValue;
  2044. MarkPropertyChanged(AIndex);
  2045. end;
  2046. //2.6.4. bug workaround
  2047. {$IFDEF VER2_6}
  2048. Procedure TDimension.SetArrayLength(Const AName : String; ALength : Longint);
  2049. begin
  2050. Case AName of
  2051. 'histogrambuckets' : SetLength(FhistogramBuckets,ALength);
  2052. else
  2053. Inherited SetArrayLength(AName,ALength);
  2054. end;
  2055. end;
  2056. {$ENDIF VER2_6}
  2057. { --------------------------------------------------------------------
  2058. TPivotValueRegion
  2059. --------------------------------------------------------------------}
  2060. Procedure TPivotValueRegion.Setvalues(AIndex : Integer; const AValue : TStringArray);
  2061. begin
  2062. If (Fvalues=AValue) then exit;
  2063. Fvalues:=AValue;
  2064. MarkPropertyChanged(AIndex);
  2065. end;
  2066. //2.6.4. bug workaround
  2067. {$IFDEF VER2_6}
  2068. Procedure TPivotValueRegion.SetArrayLength(Const AName : String; ALength : Longint);
  2069. begin
  2070. Case AName of
  2071. 'values' : SetLength(Fvalues,ALength);
  2072. else
  2073. Inherited SetArrayLength(AName,ALength);
  2074. end;
  2075. end;
  2076. {$ENDIF VER2_6}
  2077. { --------------------------------------------------------------------
  2078. TReportsResource
  2079. --------------------------------------------------------------------}
  2080. Class Function TReportsResource.ResourceName : String;
  2081. begin
  2082. Result:='reports';
  2083. end;
  2084. Class Function TReportsResource.DefaultAPI : TGoogleAPIClass;
  2085. begin
  2086. Result:=TanalyticsreportingAPI;
  2087. end;
  2088. Function TReportsResource.BatchGet(aGetReportsRequest : TGetReportsRequest) : TGetReportsResponse;
  2089. Const
  2090. _HTTPMethod = 'POST';
  2091. _Path = 'v4/reports:batchGet';
  2092. _Methodid = 'analyticsreporting.reports.batchGet';
  2093. begin
  2094. Result:=ServiceCall(_HTTPMethod,_Path,'',aGetReportsRequest,TGetReportsResponse) as TGetReportsResponse;
  2095. end;
  2096. { --------------------------------------------------------------------
  2097. TAnalyticsreportingAPI
  2098. --------------------------------------------------------------------}
  2099. Class Function TAnalyticsreportingAPI.APIName : String;
  2100. begin
  2101. Result:='analyticsreporting';
  2102. end;
  2103. Class Function TAnalyticsreportingAPI.APIVersion : String;
  2104. begin
  2105. Result:='v4';
  2106. end;
  2107. Class Function TAnalyticsreportingAPI.APIRevision : String;
  2108. begin
  2109. Result:='20160512';
  2110. end;
  2111. Class Function TAnalyticsreportingAPI.APIID : String;
  2112. begin
  2113. Result:='analyticsreporting:v4';
  2114. end;
  2115. Class Function TAnalyticsreportingAPI.APITitle : String;
  2116. begin
  2117. Result:='Google Analytics Reporting API';
  2118. end;
  2119. Class Function TAnalyticsreportingAPI.APIDescription : String;
  2120. begin
  2121. Result:='Accesses Analytics report data.';
  2122. end;
  2123. Class Function TAnalyticsreportingAPI.APIOwnerDomain : String;
  2124. begin
  2125. Result:='google.com';
  2126. end;
  2127. Class Function TAnalyticsreportingAPI.APIOwnerName : String;
  2128. begin
  2129. Result:='Google';
  2130. end;
  2131. Class Function TAnalyticsreportingAPI.APIIcon16 : String;
  2132. begin
  2133. Result:='http://www.google.com/images/icons/product/search-16.gif';
  2134. end;
  2135. Class Function TAnalyticsreportingAPI.APIIcon32 : String;
  2136. begin
  2137. Result:='http://www.google.com/images/icons/product/search-32.gif';
  2138. end;
  2139. Class Function TAnalyticsreportingAPI.APIdocumentationLink : String;
  2140. begin
  2141. Result:='https://developers.google.com/analytics/devguides/reporting/core/v4/';
  2142. end;
  2143. Class Function TAnalyticsreportingAPI.APIrootUrl : string;
  2144. begin
  2145. Result:='https://analyticsreporting.googleapis.com/';
  2146. end;
  2147. Class Function TAnalyticsreportingAPI.APIbasePath : string;
  2148. begin
  2149. Result:='';
  2150. end;
  2151. Class Function TAnalyticsreportingAPI.APIbaseURL : String;
  2152. begin
  2153. Result:='https://analyticsreporting.googleapis.com/';
  2154. end;
  2155. Class Function TAnalyticsreportingAPI.APIProtocol : string;
  2156. begin
  2157. Result:='rest';
  2158. end;
  2159. Class Function TAnalyticsreportingAPI.APIservicePath : string;
  2160. begin
  2161. Result:='';
  2162. end;
  2163. Class Function TAnalyticsreportingAPI.APIbatchPath : String;
  2164. begin
  2165. Result:='batch';
  2166. end;
  2167. Class Function TAnalyticsreportingAPI.APIAuthScopes : TScopeInfoArray;
  2168. begin
  2169. SetLength(Result,2);
  2170. Result[0].Name:='https://www.googleapis.com/auth/analytics.readonly';
  2171. Result[0].Description:='View your Google Analytics data';
  2172. Result[1].Name:='https://www.googleapis.com/auth/analytics';
  2173. Result[1].Description:='View and manage your Google Analytics data';
  2174. end;
  2175. Class Function TAnalyticsreportingAPI.APINeedsAuth : Boolean;
  2176. begin
  2177. Result:=True;
  2178. end;
  2179. Class Procedure TAnalyticsreportingAPI.RegisterAPIResources;
  2180. begin
  2181. TPivotHeader.RegisterObject;
  2182. TMetric.RegisterObject;
  2183. TColumnHeader.RegisterObject;
  2184. TDynamicSegment.RegisterObject;
  2185. TMetricHeader.RegisterObject;
  2186. TReport.RegisterObject;
  2187. TSegmentFilterClause.RegisterObject;
  2188. TDimensionFilter.RegisterObject;
  2189. TSegmentDimensionFilter.RegisterObject;
  2190. TReportRequest.RegisterObject;
  2191. TSimpleSegment.RegisterObject;
  2192. TSegmentDefinition.RegisterObject;
  2193. TSegmentMetricFilter.RegisterObject;
  2194. TReportData.RegisterObject;
  2195. TGetReportsRequest.RegisterObject;
  2196. TOrderBy.RegisterObject;
  2197. TCohort.RegisterObject;
  2198. TOrFiltersForSegment.RegisterObject;
  2199. TSequenceSegment.RegisterObject;
  2200. TSegmentFilter.RegisterObject;
  2201. TPivotHeaderEntry.RegisterObject;
  2202. TDimensionFilterClause.RegisterObject;
  2203. TSegmentSequenceStep.RegisterObject;
  2204. TPivot.RegisterObject;
  2205. TDateRangeValues.RegisterObject;
  2206. TMetricFilterClause.RegisterObject;
  2207. TSegment.RegisterObject;
  2208. TDateRange.RegisterObject;
  2209. TReportRow.RegisterObject;
  2210. TCohortGroup.RegisterObject;
  2211. TGetReportsResponse.RegisterObject;
  2212. TMetricHeaderEntry.RegisterObject;
  2213. TMetricFilter.RegisterObject;
  2214. TDimension.RegisterObject;
  2215. TPivotValueRegion.RegisterObject;
  2216. end;
  2217. Function TAnalyticsreportingAPI.GetReportsInstance : TReportsResource;
  2218. begin
  2219. if (FReportsInstance=Nil) then
  2220. FReportsInstance:=CreateReportsResource;
  2221. Result:=FReportsInstance;
  2222. end;
  2223. Function TAnalyticsreportingAPI.CreateReportsResource : TReportsResource;
  2224. begin
  2225. Result:=CreateReportsResource(Self);
  2226. end;
  2227. Function TAnalyticsreportingAPI.CreateReportsResource(AOwner : TComponent) : TReportsResource;
  2228. begin
  2229. Result:=TReportsResource.Create(AOwner);
  2230. Result.API:=Self.API;
  2231. end;
  2232. initialization
  2233. TAnalyticsreportingAPI.RegisterAPI;
  2234. end.