fileview.hpp 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. /*##############################################################################
  2. HPCC SYSTEMS software Copyright (C) 2012 HPCC Systems®.
  3. Licensed under the Apache License, Version 2.0 (the "License");
  4. you may not use this file except in compliance with the License.
  5. You may obtain a copy of the License at
  6. http://www.apache.org/licenses/LICENSE-2.0
  7. Unless required by applicable law or agreed to in writing, software
  8. distributed under the License is distributed on an "AS IS" BASIS,
  9. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  10. See the License for the specific language governing permissions and
  11. limitations under the License.
  12. ############################################################################## */
  13. #ifndef FILEVIEW_INCL
  14. #define FILEVIEW_INCL
  15. #ifdef _WIN32
  16. #ifdef FILEVIEW2_EXPORTS
  17. #define FILEVIEW_API __declspec(dllexport)
  18. #else
  19. #define FILEVIEW_API __declspec(dllimport)
  20. #endif
  21. #else
  22. #define FILEVIEW_API
  23. #endif
  24. #include "workunit.hpp"
  25. #define UNKNOWN_NUM_ROWS (I64C(0x7FFFFFFFFFFFFFFF))
  26. enum DisplayType
  27. {
  28. TypeBoolean = 0,
  29. TypeInteger = 1,
  30. TypeUnsignedInteger = 2,
  31. TypeReal = 3,
  32. TypeString = 4,
  33. TypeData = 5,
  34. TypeUnicode = 6,
  35. TypeUnknown = 7,
  36. TypeBeginIfBlock = 8,
  37. TypeEndIfBlock = 9,
  38. TypeBeginRecord = 10,
  39. TypeEndRecord = 11,
  40. TypeSet = 12,
  41. TypeDataset = 13
  42. };
  43. enum ResultSetType
  44. {
  45. TYPE_FORWARD_ONLY = 0,
  46. TYPE_SCROLL_INSENSITIVE = 1,
  47. TYPE_SCROLL_SENSITIVE = 2
  48. };
  49. interface IXmlWriter;
  50. interface IResultSetMetaData : extends IInterface
  51. {
  52. virtual IResultSetMetaData * getChildMeta(int column) const = 0;
  53. virtual int getColumnCount() const = 0;
  54. virtual DisplayType getColumnDisplayType(int column) const = 0;
  55. virtual IStringVal & getColumnLabel(IStringVal & s, int column) const = 0;
  56. virtual IStringVal & getColumnEclType(IStringVal & s, int column) const = 0;
  57. virtual IStringVal & getColumnXmlType(IStringVal & s, int column) const = 0;
  58. virtual bool isSigned(int column) const = 0;
  59. virtual bool isEBCDIC(int column) const = 0;
  60. virtual bool isBigEndian(int column) const = 0;
  61. virtual unsigned getColumnRawType(int column) const = 0;
  62. virtual unsigned getColumnRawSize(int column) const = 0;
  63. virtual IStringVal & getXmlSchema(IStringVal & s, bool addHeader) const = 0;
  64. virtual unsigned getNumKeyedColumns() const = 0;
  65. virtual IStringVal & getXmlXPathSchema(IStringVal & str, bool addHeader) const = 0;
  66. virtual bool hasGetTranslation(int column) const = 0;
  67. virtual bool hasSetTranslation(int column) const = 0;
  68. virtual IStringVal & getNaturalColumnLabel(IStringVal & s, int column) const = 0;
  69. virtual bool isVirtual(int column) const = 0;
  70. };
  71. typedef double xdouble;
  72. interface INewResultSet;
  73. interface IXmlWriter;
  74. interface IResultSetCursor : extends IInterface
  75. {
  76. virtual bool absolute(__int64 row) = 0;
  77. virtual void afterLast() = 0;
  78. virtual void beforeFirst() = 0;
  79. virtual bool fetch(__int64 fileoffset) = 0;
  80. virtual bool first() = 0;
  81. virtual bool getBoolean(int columnIndex) = 0;
  82. virtual IDataVal & getBytes(IDataVal & d, int columnIndex) = 0;
  83. virtual xdouble getDouble(int columnIndex) = 0;
  84. virtual int getFetchSize() const = 0;
  85. virtual IResultSetCursor * getChildren(int columnIndex) const = 0;
  86. virtual bool getIsAll(int columnIndex) const = 0;
  87. virtual __int64 getInt(int columnIndex) = 0;
  88. virtual IDataVal & getRaw(IDataVal & d, int columnIndex) = 0;
  89. virtual IDataVal & getRawRow(IDataVal & d) = 0;
  90. virtual IStringVal & getString(IStringVal & ret, int columnIndex) = 0;
  91. virtual bool isAfterLast() const = 0;
  92. virtual bool isBeforeFirst() const = 0;
  93. virtual bool isFirst() const = 0;
  94. virtual bool isLast() const = 0;
  95. virtual bool isNull(int columnIndex) const = 0;
  96. virtual bool isValid() const = 0;
  97. virtual bool last() = 0;
  98. virtual bool next() = 0;
  99. virtual bool previous() = 0;
  100. virtual INewResultSet * queryResultSet() = 0;
  101. virtual bool relative(__int64 rows) = 0;
  102. virtual void serialize(IDataVal & d) = 0;
  103. virtual IStringVal & getDisplayText(IStringVal & ret, int columnIndex) = 0;
  104. virtual IStringVal & getXml(IStringVal & ret, int columnIndex) = 0;
  105. virtual IStringVal & getXmlRow(IStringVal & ret) = 0;
  106. virtual IStringVal & getXmlItem(IStringVal & ret) = 0;
  107. virtual void beginWriteXmlRows(IXmlWriter & writer) = 0;
  108. virtual void writeXmlRow(IXmlWriter & writer) = 0;
  109. virtual void endWriteXmlRows(IXmlWriter & writer) = 0;
  110. virtual void writeXmlItem(IXmlWriter & writer) = 0;
  111. virtual __int64 getNumRows() const = 0;
  112. };
  113. interface INewResultSet;
  114. interface IResultSetFilter : extends IInterface
  115. {
  116. virtual void clearFilter(unsigned columnIndex) = 0;
  117. virtual void addFilter(unsigned columnIndex, const char * value) = 0;
  118. virtual void addFilter(unsigned columnIndex, unsigned length, const char * utf8Value) = 0;
  119. virtual void addNaturalFilter(unsigned columnIndex, unsigned length, const char * utf8Value) = 0;
  120. virtual void clearFilters() = 0;
  121. };
  122. interface IFilteredResultSet : extends IResultSetFilter
  123. {
  124. virtual INewResultSet * create() = 0;
  125. };
  126. //Following interface is stateless, and can be shared...
  127. interface INewResultSet : extends IInterface
  128. {
  129. virtual IResultSetCursor * createCursor() = 0;
  130. virtual IResultSetCursor * createCursor(IDataVal & buffer) = 0;
  131. virtual IFilteredResultSet * createFiltered() = 0;
  132. virtual IResultSetCursor * createSortedCursor(unsigned column, bool descend) = 0;
  133. virtual const IResultSetMetaData & getMetaData() const = 0;
  134. virtual __int64 getNumRows() const = 0;
  135. virtual bool supportsRandomSeek() const = 0;
  136. };
  137. interface IResultSetFactory : extends IInterface
  138. {
  139. virtual INewResultSet * createNewResultSet(IConstWUResult * wuResult, const char * wuid) = 0;
  140. virtual INewResultSet * createNewFileResultSet(const char * logicalFile, const char * cluster) = 0;
  141. virtual INewResultSet * createNewResultSet(const char * wuid, unsigned sequence, const char * name) = 0;
  142. virtual INewResultSet * createNewFileResultSet(const char * logicalFile) = 0;
  143. virtual IResultSetMetaData * createResultSetMeta(IConstWUResult * wuResult) = 0;
  144. virtual IResultSetMetaData * createResultSetMeta(const char * wuid, unsigned sequence, const char * name) = 0;
  145. };
  146. //provided to wrap the exceptions for clarion....
  147. extern FILEVIEW_API INewResultSet* createNewResultSet(IResultSetFactory & factory, IStringVal & error, IConstWUResult * wuResult, const char * wuid);
  148. extern FILEVIEW_API INewResultSet* createNewFileResultSet(IResultSetFactory & factory, IStringVal & error, const char * logicalFile, const char * queue, const char * cluster);
  149. extern FILEVIEW_API INewResultSet* createNewResultSetSeqName(IResultSetFactory & factory, IStringVal & error, const char * wuid, unsigned sequence, const char * name);
  150. extern FILEVIEW_API IResultSetFactory * getResultSetFactory(const char * username, const char * password);
  151. extern FILEVIEW_API IResultSetFactory * getSecResultSetFactory(ISecManager *secmgr, ISecUser *secuser, const char * username, const char * password);
  152. extern FILEVIEW_API IResultSetFactory * getRemoteResultSetFactory(const char * remoteServer, const char * username, const char * password);
  153. extern FILEVIEW_API IResultSetFactory * getSecRemoteResultSetFactory(const char * remoteServer, ISecManager &secmgr, ISecUser &secuser);
  154. //Formatting applied remotely, so it can be accessed between different operating systems...
  155. extern FILEVIEW_API IResultSetFactory * getRemoteResultSetFactory(const char * remoteServer, const char * username, const char * password);
  156. extern FILEVIEW_API int findResultSetColumn(const INewResultSet * results, const char * columnName);
  157. extern FILEVIEW_API unsigned getResultCursorXml(IStringVal & ret, IResultSetCursor * cursor, const char * name, unsigned start=0, unsigned count=0, const char * schemaName=NULL, const IProperties *xmlns=NULL);
  158. extern FILEVIEW_API unsigned getResultXml(IStringVal & ret, INewResultSet * cursor, const char* name, unsigned start=0, unsigned count=0, const char * schemaName=NULL, const IProperties *xmlns=NULL);
  159. extern FILEVIEW_API unsigned getResultJSON(IStringVal & ret, INewResultSet * cursor, const char* name, unsigned start=0, unsigned count=0, const char * schemaName=NULL);
  160. extern FILEVIEW_API unsigned writeResultCursorXml(IXmlWriter & writer, IResultSetCursor * cursor, const char * name, unsigned start=0, unsigned count=0, const char * schemaName=NULL, const IProperties *xmlns = NULL);
  161. extern FILEVIEW_API unsigned writeResultXml(IXmlWriter & writer, INewResultSet * cursor, const char* name, unsigned start=0, unsigned count=0, const char * schemaName=NULL, const IProperties *xmlns = NULL);
  162. extern FILEVIEW_API unsigned getResultCursorBin(MemoryBuffer & ret, IResultSetCursor * cursor, unsigned start=0, unsigned count=0);
  163. extern FILEVIEW_API unsigned getResultBin(MemoryBuffer & ret, INewResultSet * cursor, unsigned start=0, unsigned count=0);
  164. #define WorkUnitXML_InclSchema 0x0001
  165. #define WorkUnitXML_NoRoot 0x0002
  166. #define WorkUnitXML_SeverityTags 0x0004
  167. extern FILEVIEW_API void writeFullWorkUnitResults(const char *username, const char *password, const IConstWorkUnit *cw, IXmlWriter &writer, unsigned flags, ErrorSeverity minSeverity, const char *rootTag);
  168. extern FILEVIEW_API IStringVal& getFullWorkUnitResultsXML(const char *user, const char *pw, const IConstWorkUnit *wu, IStringVal &str, unsigned flags=0, ErrorSeverity minSeverity=SeverityInformation);
  169. extern FILEVIEW_API IStringVal& getFullWorkUnitResultsJSON(const char *user, const char *pw, const IConstWorkUnit *wu, IStringVal &str, unsigned flags=0, ErrorSeverity minSeverity=SeverityInformation);
  170. extern FILEVIEW_API void startRemoteDataSourceServer(const char * queue, const char * cluster);
  171. extern FILEVIEW_API void stopRemoteDataSourceServer();
  172. #endif