googleanalyticsreporting.pp 87 KB

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