1/*
2 * Legal Notice
3 *
4 * This document and associated source code (the "Work") is a part of a
5 * benchmark specification maintained by the TPC.
6 *
7 * The TPC reserves all right, title, and interest to the Work as provided
8 * under U.S. and international laws, including without limitation all patent
9 * and trademark rights therein.
10 *
11 * No Warranty
12 *
13 * 1.1 TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE INFORMATION
14 * CONTAINED HEREIN IS PROVIDED "AS IS" AND WITH ALL FAULTS, AND THE
15 * AUTHORS AND DEVELOPERS OF THE WORK HEREBY DISCLAIM ALL OTHER
16 * WARRANTIES AND CONDITIONS, EITHER EXPRESS, IMPLIED OR STATUTORY,
17 * INCLUDING, BUT NOT LIMITED TO, ANY (IF ANY) IMPLIED WARRANTIES,
18 * DUTIES OR CONDITIONS OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR
19 * PURPOSE, OF ACCURACY OR COMPLETENESS OF RESPONSES, OF RESULTS, OF
20 * WORKMANLIKE EFFORT, OF LACK OF VIRUSES, AND OF LACK OF NEGLIGENCE.
21 * ALSO, THERE IS NO WARRANTY OR CONDITION OF TITLE, QUIET ENJOYMENT,
22 * QUIET POSSESSION, CORRESPONDENCE TO DESCRIPTION OR NON-INFRINGEMENT
23 * WITH REGARD TO THE WORK.
24 * 1.2 IN NO EVENT WILL ANY AUTHOR OR DEVELOPER OF THE WORK BE LIABLE TO
25 * ANY OTHER PARTY FOR ANY DAMAGES, INCLUDING BUT NOT LIMITED TO THE
26 * COST OF PROCURING SUBSTITUTE GOODS OR SERVICES, LOST PROFITS, LOSS
27 * OF USE, LOSS OF DATA, OR ANY INCIDENTAL, CONSEQUENTIAL, DIRECT,
28 * INDIRECT, OR SPECIAL DAMAGES WHETHER UNDER CONTRACT, TORT, WARRANTY,
29 * OR OTHERWISE, ARISING IN ANY WAY OUT OF THIS OR ANY OTHER AGREEMENT
30 * RELATING TO THE WORK, WHETHER OR NOT SUCH AUTHOR OR DEVELOPER HAD
31 * ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.
32 *
33 * Contributors
34 * - Sergey Vasilevskiy
35 * - Doug Johnson
36 */
37
38/*
39 * Base interface for a loader class factory.
40 * This class instantiates particular table loader classs.
41 */
42
43#ifndef BASE_LOADER_FACTORY_H
44#define BASE_LOADER_FACTORY_H
45
46#include "BaseLoader.h"
47#include "TableRows.h"
48
49namespace TPCE {
50
51class CBaseLoaderFactory {
52
53public:
54 /*
55 * Virtual destructor. Provided so that a sponsor-specific
56 * destructor can be called on destruction from the base-class pointer.
57 *
58 * PARAMETERS:
59 * none.
60 *
61 * RETURNS:
62 * not applicable.
63 */
64 virtual ~CBaseLoaderFactory(){};
65
66 /*
67 * Create loader class for ACCOUNT_PERMISSION table.
68 * Should be defined in a subclass according to the subclass load type.
69 *
70 * PARAMETERS:
71 * none.
72 *
73 * RETURNS:
74 * Reference to the loader class.
75 */
76 virtual CBaseLoader<ACCOUNT_PERMISSION_ROW> *CreateAccountPermissionLoader() = 0;
77
78 /*
79 * Create loader class for ADDRESS table.
80 * Should be defined in a subclass according to the subclass load type.
81 *
82 * PARAMETERS:
83 * none.
84 *
85 * RETURNS:
86 * Reference to the loader class.
87 */
88 virtual CBaseLoader<ADDRESS_ROW> *CreateAddressLoader() = 0;
89
90 /*
91 * Create loader class for BROKER table.
92 * Should be defined in a subclass according to the subclass load type.
93 *
94 * PARAMETERS:
95 * none.
96 *
97 * RETURNS:
98 * Reference to the loader class.
99 */
100 virtual CBaseLoader<BROKER_ROW> *CreateBrokerLoader() = 0;
101
102 /*
103 * Create loader class for CASH_TRANSACTION table.
104 * Should be defined in a subclass according to the subclass load type.
105 *
106 * PARAMETERS:
107 * none.
108 *
109 * RETURNS:
110 * Reference to the loader class.
111 */
112 virtual CBaseLoader<CASH_TRANSACTION_ROW> *CreateCashTransactionLoader() = 0;
113
114 /*
115 * Create loader class for CHARGE table.
116 * Should be defined in a subclass according to the subclass load type.
117 *
118 * PARAMETERS:
119 * none.
120 *
121 * RETURNS:
122 * Reference to the loader class.
123 */
124 virtual CBaseLoader<CHARGE_ROW> *CreateChargeLoader() = 0;
125
126 /*
127 * Create loader class for COMMISSION_RATE table.
128 * Should be defined in a subclass according to the subclass load type.
129 *
130 * PARAMETERS:
131 * none.
132 *
133 * RETURNS:
134 * Reference to the loader class.
135 */
136 virtual CBaseLoader<COMMISSION_RATE_ROW> *CreateCommissionRateLoader() = 0;
137
138 /*
139 * Create loader class for COMPANY_COMPETITOR table.
140 * Should be defined in a subclass according to the subclass load type.
141 *
142 * PARAMETERS:
143 * none.
144 *
145 * RETURNS:
146 * Reference to the loader class.
147 */
148 virtual CBaseLoader<COMPANY_COMPETITOR_ROW> *CreateCompanyCompetitorLoader() = 0;
149
150 /*
151 * Create loader class for COMPANY table.
152 * Should be defined in a subclass according to the subclass load type.
153 *
154 * PARAMETERS:
155 * none.
156 *
157 * RETURNS:
158 * Reference to the loader class.
159 */
160 virtual CBaseLoader<COMPANY_ROW> *CreateCompanyLoader() = 0;
161
162 /*
163 * Create loader class for CUSTOMER_ACCOUNT table.
164 * Should be defined in a subclass according to the subclass load type.
165 *
166 * PARAMETERS:
167 * none.
168 *
169 * RETURNS:
170 * Reference to the loader class.
171 */
172 virtual CBaseLoader<CUSTOMER_ACCOUNT_ROW> *CreateCustomerAccountLoader() = 0;
173
174 /*
175 * Create loader class for CUSTOMER table.
176 * Should be defined in a subclass according to the subclass load type.
177 *
178 * PARAMETERS:
179 * none.
180 *
181 * RETURNS:
182 * Reference to the loader class.
183 */
184 virtual CBaseLoader<CUSTOMER_ROW> *CreateCustomerLoader() = 0;
185
186 /*
187 * Create loader class for CUSTOMER_TAXRATE table.
188 * Should be defined in a subclass according to the subclass load type.
189 *
190 * PARAMETERS:
191 * none.
192 *
193 * RETURNS:
194 * Reference to the loader class.
195 */
196 virtual CBaseLoader<CUSTOMER_TAXRATE_ROW> *CreateCustomerTaxrateLoader() = 0;
197
198 /*
199 * Create loader class for DAILY_MARKET table.
200 * Should be defined in a subclass according to the subclass load type.
201 *
202 * PARAMETERS:
203 * none.
204 *
205 * RETURNS:
206 * Reference to the loader class.
207 */
208 virtual CBaseLoader<DAILY_MARKET_ROW> *CreateDailyMarketLoader() = 0;
209
210 /*
211 * Create loader class for EXCHANGE table.
212 * Should be defined in a subclass according to the subclass load type.
213 *
214 * PARAMETERS:
215 * none.
216 *
217 * RETURNS:
218 * Reference to the loader class.
219 */
220 virtual CBaseLoader<EXCHANGE_ROW> *CreateExchangeLoader() = 0;
221
222 /*
223 * Create loader class for FINANCIAL table.
224 * Should be defined in a subclass according to the subclass load type.
225 *
226 * PARAMETERS:
227 * none.
228 *
229 * RETURNS:
230 * Reference to the loader class.
231 */
232 virtual CBaseLoader<FINANCIAL_ROW> *CreateFinancialLoader() = 0;
233
234 /*
235 * Create loader class for HOLDING table.
236 * Should be defined in a subclass according to the subclass load type.
237 *
238 * PARAMETERS:
239 * none.
240 *
241 * RETURNS:
242 * Reference to the loader class.
243 */
244 virtual CBaseLoader<HOLDING_ROW> *CreateHoldingLoader() = 0;
245
246 /*
247 * Create loader class for HOLDING_HISTORY table.
248 * Should be defined in a subclass according to the subclass load type.
249 *
250 * PARAMETERS:
251 * none.
252 *
253 * RETURNS:
254 * Reference to the loader class.
255 */
256 virtual CBaseLoader<HOLDING_HISTORY_ROW> *CreateHoldingHistoryLoader() = 0;
257
258 /*
259 * Create loader class for HOLDING_SUMMARY table.
260 * Should be defined in a subclass according to the subclass load type.
261 *
262 * PARAMETERS:
263 * none.
264 *
265 * RETURNS:
266 * Reference to the loader class.
267 */
268 virtual CBaseLoader<HOLDING_SUMMARY_ROW> *CreateHoldingSummaryLoader() = 0;
269
270 /*
271 * Create loader class for INDUSTRY table.
272 * Should be defined in a subclass according to the subclass load type.
273 *
274 * PARAMETERS:
275 * none.
276 *
277 * RETURNS:
278 * Reference to the loader class.
279 */
280 virtual CBaseLoader<INDUSTRY_ROW> *CreateIndustryLoader() = 0;
281
282 /*
283 * Create loader class for LAST_TRADE table.
284 * Should be defined in a subclass according to the subclass load type.
285 *
286 * PARAMETERS:
287 * none.
288 *
289 * RETURNS:
290 * Reference to the loader class.
291 */
292 virtual CBaseLoader<LAST_TRADE_ROW> *CreateLastTradeLoader() = 0;
293
294 /*
295 * Create loader class for NEWS_ITEM table.
296 * Should be defined in a subclass according to the subclass load type.
297 *
298 * PARAMETERS:
299 * none.
300 *
301 * RETURNS:
302 * Reference to the loader class.
303 */
304 virtual CBaseLoader<NEWS_ITEM_ROW> *CreateNewsItemLoader() = 0;
305
306 /*
307 * Create loader class for NEWS_XREF table.
308 * Should be defined in a subclass according to the subclass load type.
309 *
310 * PARAMETERS:
311 * none.
312 *
313 * RETURNS:
314 * Reference to the loader class.
315 */
316 virtual CBaseLoader<NEWS_XREF_ROW> *CreateNewsXRefLoader() = 0;
317
318 /*
319 * Create loader class for SECTOR table.
320 * Should be defined in a subclass according to the subclass load type.
321 *
322 * PARAMETERS:
323 * none.
324 *
325 * RETURNS:
326 * Reference to the loader class.
327 */
328 virtual CBaseLoader<SECTOR_ROW> *CreateSectorLoader() = 0;
329
330 /*
331 * Create loader class for SECURITY table.
332 * Should be defined in a subclass according to the subclass load type.
333 *
334 * PARAMETERS:
335 * none.
336 *
337 * RETURNS:
338 * Reference to the loader class.
339 */
340 virtual CBaseLoader<SECURITY_ROW> *CreateSecurityLoader() = 0;
341
342 /*
343 * Create loader class for SETTLEMENT table.
344 * Should be defined in a subclass according to the subclass load type.
345 *
346 * PARAMETERS:
347 * none.
348 *
349 * RETURNS:
350 * Reference to the loader class.
351 */
352 virtual CBaseLoader<SETTLEMENT_ROW> *CreateSettlementLoader() = 0;
353
354 /*
355 * Create loader class for STATUS_TYPE table.
356 * Should be defined in a subclass according to the subclass load type.
357 *
358 * PARAMETERS:
359 * none.
360 *
361 * RETURNS:
362 * Reference to the loader class.
363 */
364 virtual CBaseLoader<STATUS_TYPE_ROW> *CreateStatusTypeLoader() = 0;
365
366 /*
367 * Create loader class for TAXRATE table.
368 * Should be defined in a subclass according to the subclass load type.
369 *
370 * PARAMETERS:
371 * none.
372 *
373 * RETURNS:
374 * Reference to the loader class.
375 */
376 virtual CBaseLoader<TAX_RATE_ROW> *CreateTaxRateLoader() = 0;
377
378 /*
379 * Create loader class for TRADE_HISTORY table.
380 * Should be defined in a subclass according to the subclass load type.
381 *
382 * PARAMETERS:
383 * none.
384 *
385 * RETURNS:
386 * Reference to the loader class.
387 */
388 virtual CBaseLoader<TRADE_HISTORY_ROW> *CreateTradeHistoryLoader() = 0;
389
390 /*
391 * Create loader class for TRADE table.
392 * Should be defined in a subclass according to the subclass load type.
393 *
394 * PARAMETERS:
395 * none.
396 *
397 * RETURNS:
398 * Reference to the loader class.
399 */
400 virtual CBaseLoader<TRADE_ROW> *CreateTradeLoader() = 0;
401
402 /*
403 * Create loader class for TRADE_REQUEST table.
404 * Should be defined in a subclass according to the subclass load type.
405 *
406 * PARAMETERS:
407 * none.
408 *
409 * RETURNS:
410 * Reference to the loader class.
411 */
412 virtual CBaseLoader<TRADE_REQUEST_ROW> *CreateTradeRequestLoader() = 0;
413
414 /*
415 * Create loader class for TRADE_TYPE table.
416 * Should be defined in a subclass according to the subclass load type.
417 *
418 * PARAMETERS:
419 * none.
420 *
421 * RETURNS:
422 * Reference to the loader class.
423 */
424 virtual CBaseLoader<TRADE_TYPE_ROW> *CreateTradeTypeLoader() = 0;
425
426 /*
427 * Create loader class for WATCH_ITEM table.
428 * Should be defined in a subclass according to the subclass load type.
429 *
430 * PARAMETERS:
431 * none.
432 *
433 * RETURNS:
434 * Reference to the loader class.
435 */
436 virtual CBaseLoader<WATCH_ITEM_ROW> *CreateWatchItemLoader() = 0;
437
438 /*
439 * Create loader class for WATCH_LIST table.
440 * Should be defined in a subclass according to the subclass load type.
441 *
442 * PARAMETERS:
443 * none.
444 *
445 * RETURNS:
446 * Reference to the loader class.
447 */
448 virtual CBaseLoader<WATCH_LIST_ROW> *CreateWatchListLoader() = 0;
449
450 /*
451 * Create loader class for ZIP_CODE table.
452 * Should be defined in a subclass according to the subclass load type.
453 *
454 * PARAMETERS:
455 * none.
456 *
457 * RETURNS:
458 * Reference to the loader class.
459 */
460 virtual CBaseLoader<ZIP_CODE_ROW> *CreateZipCodeLoader() = 0;
461};
462
463} // namespace TPCE
464
465#endif // #ifndef BASE_LOADER_FACTORY_H
466