This patch contains updates to Server.h and Field.h to make rtl compatible with the 7.x api. There was one new attribute added to the field properties (fieldOption), and one new parameter added to the createSchema call (auditInfo). The patch is backwards compatible with previous versions of the remedy api (6.3 and earlier).
This code needs review before being merged into the tree, but I believe it to be mostly complete.
The diffs were created using 'diff', so they can be applied to the files in the tree using 'patch'.
*** Server.h changes
@@ -44,6 +44,9 @@
throw Exception(sl); \
}
+#if AR_CURRENT_API_VERSION>=11
+ #define ARAPI_7PLUS
+#endif
namespace rtl {
@@ -500,6 +503,9 @@
fieldOwner = 0x800,
fieldLastChanged = 0x1000,
fieldChangeDiary = 0x2000,
+#ifdef ARAPI_7PLUS
+ fieldFieldOption = 0x4000,
+#endif
fieldCommonUserProperties = fieldName | fieldDataType | fieldDefaultValue | fieldDisplayInstanceList | fieldHelpText,
fieldAllProperties = 0xffff
};
@@ -548,6 +554,9 @@
(propertiesMask & fieldDataType) ? &field.dataType : NULL,
(propertiesMask & fieldOption) ? &field.option : NULL,
(propertiesMask & fieldCreateMode) ? &field.createMode : NULL,
+#ifdef ARAPI_7PLUS
+ (propertiesMask & fieldFieldOption) ? &field.fieldOption : NULL,
+#endif
(propertiesMask & fieldDefaultValue) ? &field.defaultVal : NULL,
(propertiesMask & fieldPermissionList) ? &field.permList : NULL,
(propertiesMask & fieldLimit) ? &field.limit : NULL,
@@ -609,6 +618,9 @@
ARUnsignedIntList unsignedIntList1 = {0, NULL};
ARUnsignedIntList unsignedIntList2 = {0, NULL};
ARUnsignedIntList unsignedIntList3 = {0, NULL};
+#ifdef ARAPI_7PLUS
+ ARUnsignedIntList unsignedIntList4 = {0, NULL};
+#endif
ARValueList valueList = {0, NULL};
ARPermissionListList permissionListList = {0, NULL};
ARFieldLimitList fieldLimitList = {0, NULL};
@@ -627,6 +639,9 @@
(propertiesMask & fieldDataType) ? &unsignedIntList1 : NULL,
(propertiesMask & fieldOption) ? &unsignedIntList2 : NULL,
(propertiesMask & fieldCreateMode) ? &unsignedIntList3 : NULL,
+#ifdef ARAPI_7PLUS
+ (propertiesMask & fieldFieldOption) ? &unsignedIntList4 : NULL,
+#endif
(propertiesMask & fieldDefaultValue) ? &valueList : NULL,
(propertiesMask & fieldPermissionList) ? &permissionListList : NULL,
(propertiesMask & fieldLimit) ? &fieldLimitList : NULL,
@@ -661,12 +676,17 @@
if (propertiesMask & fieldDataType) {
fieldInfo.dataType = unsignedIntList1.intList[i];
}
+#ifdef ARAPI_7PLUS
if (propertiesMask & fieldOption) {
fieldInfo.option = unsignedIntList2.intList[i];
}
+#endif
if (propertiesMask & fieldCreateMode) {
fieldInfo.createMode = unsignedIntList3.intList[i];
}
+ if (propertiesMask & fieldFieldOption) {
+ fieldInfo.fieldOption = unsignedIntList4.intList[i];
+ }
if (propertiesMask & fieldDefaultValue) {
memcpy(&fieldInfo.defaultVal, &valueList.valueList[i], sizeof(ARValueStruct));
}
@@ -705,6 +725,9 @@
FreeARUnsignedIntList(&unsignedIntList1, FALSE);
FreeARUnsignedIntList(&unsignedIntList2, FALSE);
FreeARUnsignedIntList(&unsignedIntList3, FALSE);
+#ifdef ARAPI_7PLUS
+ FreeARUnsignedIntList(&unsignedIntList4, FALSE);
+#endif
FreeARValueList(&valueList, FALSE);
FreeARPermissionListList(&permissionListList, FALSE);
FreeARDisplayInstanceListList(&dInstListList, FALSE);
@@ -762,6 +785,9 @@
ARCreateField(&control, const_cast<char *>(form.c_str()), &fieldId, reservedIdOk,
const_cast<char *>(field.getName().c_str()), const_cast<ARFieldMappingStruct *>(static_cast<const ARFieldMappingStruct *>(field.getFieldMapping())),
field.getDataType(), field.getOption(), field.getCreateMode(),
+#ifdef ARAPI_7PLUS
+ field.getFieldOption(),
+#endif
const_cast<ARValueStruct *>(static_cast<const ARValueStruct *>(field.getDefaultValue())),
const_cast<ARPermissionList *>(static_cast<const ARPermissionList *>(field.getPermissionList())),
const_cast<ARFieldLimitStruct *>(static_cast<const ARFieldLimitStruct *>(field.getFieldLimit())),
@@ -807,17 +833,27 @@
* @see getMultipleFields
* @see Field
*/
- void setField(const std::string &form, const Field &field, unsigned int propertiesMask = fieldCommonUserProperties) {
+ void setField(const std::string &form, const Field &field, unsigned int propertiesMask = fieldCommonUserProperties
+#ifdef ARAPI_7PLUS
+ , unsigned int setFieldOption = 0
+#endif
+ ) {
FreeARStatusList(&statusList, FALSE);
unsigned int option = field.getOption();
unsigned int createMode = field.getCreateMode();
+#ifdef ARAPI_7PLUS
+ unsigned int myfieldOption = field.getFieldOption();
+#endif
ARSetField(&control, const_cast<char *>(form.c_str()), field.getId(),
(propertiesMask & fieldName) ? const_cast<char *>(field.getName().c_str()) : NULL,
(propertiesMask & fieldMapping) ? const_cast<ARFieldMappingStruct *>(static_cast<const ARFieldMappingStruct *>(field.getFieldMapping())) : NULL,
+#ifdef ARAPI_7PLUS
(propertiesMask & fieldOption) ? &option : NULL,
+#endif
(propertiesMask & fieldCreateMode) ? &createMode : NULL,
+ (propertiesMask & fieldFieldOption) ? &myfieldOption : NULL,
(propertiesMask & fieldDefaultValue) ? const_cast<ARValueStruct *>(static_cast<const ARValueStruct *>(field.getDefaultValue())) : NULL,
(propertiesMask & fieldPermissionList) ? const_cast<ARPermissionList *>(static_cast<const ARPermissionList *>(field.getPermissionList())) : NULL,
(propertiesMask &fieldLimit) ? const_cast<ARFieldLimitStruct *>(static_cast<const ARFieldLimitStruct *>(field.getFieldLimit())) : NULL,
@@ -825,6 +861,9 @@
(propertiesMask & fieldHelpText) ? const_cast<char *>(field.getHelpText().c_str()) : NULL,
(propertiesMask & fieldOwner) ? const_cast<char *>(field.getOwner().c_str()) : NULL,
(propertiesMask & fieldChangeDiary) ? const_cast<char *>(field.getChangeDiary().c_str()) : NULL,
+#ifdef ARAPI_7PLUS
+ setFieldOption,
+#endif
&statusList);
HANDLE_ARSTATUSLIST(statusList);
@@ -1383,7 +1422,11 @@
memset(&compoundSchema, 0, sizeof(compoundSchema));
compoundSchema.schemaType = AR_SCHEMA_REGULAR;
- ARCreateSchema(&control, const_cast<char *>(name.c_str()), &compoundSchema, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &statusList);
+ ARCreateSchema(&control, const_cast<char *>(name.c_str()), &compoundSchema, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+#ifdef ARAPI_7PLUS
+ NULL,
+#endif
+ NULL, NULL, NULL, NULL, NULL, &statusList);
HANDLE_ARSTATUSLIST(statusList);
}
*** Field.h changes
@@ -30,6 +30,10 @@
#include "FieldLimit.h"
#include <string>
+#if AR_CURRENT_API_VERSION>=11
+ #define ARAPI_7PLUS
+#endif
+
namespace rtl {
@@ -47,7 +51,11 @@
{
public:
- Field() : id(0), timestamp(0), dataType(AR_DATA_TYPE_NULL), option(AR_FIELD_OPTION_OPTIONAL), createMode(AR_FIEL D_OPEN_AT_CREATE) {
+ Field() : id(0), timestamp(0), dataType(AR_DATA_TYPE_NULL), option(AR_FIELD_OPTION_OPTIONAL), createMode(AR_FIEL D_OPEN_AT_CREATE)
+#ifdef ARAPI_7PLUS
+ , fieldOption(AR_FIELD_BITOPTION_NONE)
+#endif
+ {
}
@@ -58,6 +66,9 @@
dataType = src.dataType;
option = src.option;
createMode = src.createMode;
+#ifdef ARAPI_7PLUS
+ fieldOption = src.fieldOption;
+#endif
helpText = src.helpText ? src.helpText : "";
changeDiary = src.changeDiary ? src.changeDiary : "";
owner = src.owner ? src.owner : "";
@@ -80,6 +91,9 @@
dataType = src.dataType;
option = src.option;
createMode = src.createMode;
+#ifdef ARAPI_7PLUS
+ fieldOption = src.fieldOption;
+#endif
defaultValue = src.defaultVal;
permissionList = src.permList;
fieldLimit = src.limit;
@@ -101,6 +115,9 @@
out.dataType = dataType;
out.option = option;
out.createMode = createMode;
+#ifdef ARAPI_7PLUS
+ out.fieldOption = fieldOption;
+#endif
memcpy(&out.defaultVal, static_cast<const ARValueStruct *>(defaultValue), sizeof(out.defaultVal));
memcpy(&out.permList, static_cast<const ARPermissionList *>(permissionList), sizeof(out.permList));
memcpy(&out.limit, static_cast<const ARFieldLimitStruct *>(fieldLimit), sizeof(out.limit));
@@ -139,6 +156,11 @@
unsigned int getCreateMode() const {return createMode;}
void setCreateMode(const unsigned int &value) {createMode = value;}
+#ifdef ARAPI_7PLUS
+ unsigned int getFieldOption() const {return fieldOption;}
+ void setFieldOption(const unsigned int &value) {fieldOption = value;}
+#endif
+
const Value &getDefaultValue() const {return defaultValue;}
void setDefaultValue(const Value &value) { defaultValue = value;}
@@ -169,6 +191,9 @@
unsigned int dataType;
unsigned int option;
unsigned int createMode;
+#ifdef ARAPI_7PLUS
+ unsigned int fieldOption;
+#endif
Value defaultValue;
PermissionList permissionList;
FieldLimit fieldLimit;
Axton Grams
Field.h - with updates
Field.h - diff
Server.h
Server.h.diff