Re: ARDBC plugin development again

2009-06-12 Thread Jarl Grøneng
In version 7.1 there was added support for creating plugins in java.

On your server in the api/javaplugins there are some samples.

--
Jarl

2009/6/12 Jonas Stumph Stevnsvig jonas.stumph.stevns...@bec.dk:
 Thanks for the response Jarl. You said that you would do it the Java way 
 today? As far as I have read, ARDBC plugins for vendor forms must still be in 
 dll form? Or have I missed something?


 with regards,



 Jonas Stumph Stevnsvig
 Remedy Developer
 BEC
 Phone  (+45) 46 38 20 08
 Mobile  (+45) 61 56 20 08
 jonas.stumph.stevns...@bec.dk
 becrem...@bec.dk

 -Oprindelig meddelelse-
 Fra: Action Request System discussion list(ARSList) 
 [mailto:arsl...@arslist.org] På vegne af Jarl Grøneng
 Sendt: 11. juni 2009 17:03
 Til: arslist@ARSLIST.ORG
 Emne: Re: ARDBC plugin development again

 This is how I used this. Its a few years since I wrote this, and would 
 definitly do it the Java way today:


 ARPLUGIN_EXPORT int ARDBCGetMultipleFields(
 void              *object,  /* IN; plug-in instance */
 ARCompoundSchema  *schema,  /* IN; form containing the data */ 
 ARFieldMappingList *mapping,/* OUT; list of fields */
 ARFieldLimitList  *limit,   /* OUT; corresponding field limits */
 ARUnsignedIntList *dataType,/* OUT; corresponding data types */
 ARStatusList      *status   /* OUT; status of the operation */
 )
 {
   /* verify that the form name is the one we know about otherwise */
   /* we will ignore this request                                  */

   if (schema-schemaType == AR_SCHEMA_VENDOR 
       strcmp(schema-u.vendor.tableName, VENDOR_FORM_NAME) == 0)
   {
      /* fill the field mapping list with the three fields other than */
      /* the id field that we are exposing                            */

      mapping-numItems = 3;

      mapping-mappingList =
         (ARFieldMappingStruct *) malloc(sizeof(ARFieldMappingStruct) *
                                         mapping-numItems);
      if (mapping-mappingList == NULL)
         return AddErrorMessage(status, NULL, AR_RETURN_ERROR,
                                PLUGIN_ERROR_MEMORY, );

      mapping-mappingList[0].fieldType = AR_FIELD_VENDOR;
      strcpy(mapping-mappingList[0].u.vendor.fieldName, employee_name);
      mapping-mappingList[1].fieldType = AR_FIELD_VENDOR;
      strcpy(mapping-mappingList[1].u.vendor.fieldName, employee_phone);
      mapping-mappingList[2].fieldType = AR_FIELD_VENDOR;
      strcpy(mapping-mappingList[2].u.vendor.fieldName, employee_email);

      /* fill the field limit list (in case the Admin Tool uses it someday) */

      limit-numItems = 3;

      limit-fieldLimitList =
         (ARFieldLimitStruct *) calloc(limit-numItems,
                                       sizeof(ARFieldLimitStruct));
      if (limit-fieldLimitList == NULL)
         return AddErrorMessage(status, NULL, AR_RETURN_ERROR,
                                PLUGIN_ERROR_MEMORY, );

      limit-fieldLimitList[0].dataType = AR_DATA_TYPE_CHAR;
      limit-fieldLimitList[0].u.charLimits.maxLength = 50;
      limit-fieldLimitList[0].u.charLimits.menuStyle = AR_MENU_APPEND;
      limit-fieldLimitList[0].u.charLimits.qbeMatchOperation = 
 AR_QBE_MATCH_ANYWHERE;
      limit-fieldLimitList[0].u.charLimits.fullTextOptions = 
 AR_FULLTEXT_OPTIONS_NONE;
      limit-fieldLimitList[1].dataType = AR_DATA_TYPE_CHAR;
      limit-fieldLimitList[1].u.charLimits.maxLength = 20;
      limit-fieldLimitList[1].u.charLimits.menuStyle = AR_MENU_APPEND;
      limit-fieldLimitList[1].u.charLimits.qbeMatchOperation = 
 AR_QBE_MATCH_ANYWHERE;
      limit-fieldLimitList[1].u.charLimits.fullTextOptions = 
 AR_FULLTEXT_OPTIONS_NONE;
      limit-fieldLimitList[2].dataType = AR_DATA_TYPE_CHAR;
      limit-fieldLimitList[2].u.charLimits.maxLength = 50;
      limit-fieldLimitList[2].u.charLimits.menuStyle = AR_MENU_APPEND;
      limit-fieldLimitList[2].u.charLimits.qbeMatchOperation = 
 AR_QBE_MATCH_ANYWHERE;
      limit-fieldLimitList[2].u.charLimits.fullTextOptions = 
 AR_FULLTEXT_OPTIONS_NONE;

      /* fill the data type list */

      dataType-numItems = 3;

      dataType-intList =
         (unsigned int *) malloc(sizeof(unsigned) * dataType-numItems);
      if (dataType-intList == NULL)
         return AddErrorMessage(status, NULL, AR_RETURN_ERROR,
                                PLUGIN_ERROR_MEMORY, );

      dataType-intList[0] = AR_DATA_TYPE_CHAR;
      dataType-intList[1] = AR_DATA_TYPE_CHAR;
      dataType-intList[2] = AR_DATA_TYPE_CHAR;
   }

   return AR_RETURN_OK;


 2009/6/11 Jonas Stumph Stevnsvig jonas.stumph.stevns...@bec.dk:
 **
 Hi listers

 I'm currently in the process of creating a hello world in remedy,
 based on the ardbcskl.c

 Unfortunately my efforts are not going well.. I'm getting an error 129
 - which i have resolved to  Field limit definition is invalid.
 The field limit specified for this field is invalid.
   For a numeric field, make sure that the high range is greater than
 the low range.
   For a character field, make sure

Re: ARDBC plugin development again

2009-06-11 Thread Jarl Grøneng
This is how I used this. Its a few years since I wrote this, and would
definitly do it the Java way today:


ARPLUGIN_EXPORT int ARDBCGetMultipleFields(
void  *object,  /* IN; plug-in instance */
ARCompoundSchema  *schema,  /* IN; form containing the data */
ARFieldMappingList *mapping,/* OUT; list of fields */
ARFieldLimitList  *limit,   /* OUT; corresponding field limits */
ARUnsignedIntList *dataType,/* OUT; corresponding data types */
ARStatusList  *status   /* OUT; status of the operation */
)
{
   /* verify that the form name is the one we know about otherwise */
   /* we will ignore this request  */

   if (schema-schemaType == AR_SCHEMA_VENDOR 
   strcmp(schema-u.vendor.tableName, VENDOR_FORM_NAME) == 0)
   {
  /* fill the field mapping list with the three fields other than */
  /* the id field that we are exposing*/

  mapping-numItems = 3;

  mapping-mappingList =
 (ARFieldMappingStruct *) malloc(sizeof(ARFieldMappingStruct) *
 mapping-numItems);
  if (mapping-mappingList == NULL)
 return AddErrorMessage(status, NULL, AR_RETURN_ERROR,
PLUGIN_ERROR_MEMORY, );

  mapping-mappingList[0].fieldType = AR_FIELD_VENDOR;
  strcpy(mapping-mappingList[0].u.vendor.fieldName, employee_name);
  mapping-mappingList[1].fieldType = AR_FIELD_VENDOR;
  strcpy(mapping-mappingList[1].u.vendor.fieldName, employee_phone);
  mapping-mappingList[2].fieldType = AR_FIELD_VENDOR;
  strcpy(mapping-mappingList[2].u.vendor.fieldName, employee_email);

  /* fill the field limit list (in case the Admin Tool uses it someday) */

  limit-numItems = 3;

  limit-fieldLimitList =
 (ARFieldLimitStruct *) calloc(limit-numItems,
   sizeof(ARFieldLimitStruct));
  if (limit-fieldLimitList == NULL)
 return AddErrorMessage(status, NULL, AR_RETURN_ERROR,
PLUGIN_ERROR_MEMORY, );

  limit-fieldLimitList[0].dataType = AR_DATA_TYPE_CHAR;
  limit-fieldLimitList[0].u.charLimits.maxLength = 50;
  limit-fieldLimitList[0].u.charLimits.menuStyle = AR_MENU_APPEND;
  limit-fieldLimitList[0].u.charLimits.qbeMatchOperation =
AR_QBE_MATCH_ANYWHERE;
  limit-fieldLimitList[0].u.charLimits.fullTextOptions =
AR_FULLTEXT_OPTIONS_NONE;
  limit-fieldLimitList[1].dataType = AR_DATA_TYPE_CHAR;
  limit-fieldLimitList[1].u.charLimits.maxLength = 20;
  limit-fieldLimitList[1].u.charLimits.menuStyle = AR_MENU_APPEND;
  limit-fieldLimitList[1].u.charLimits.qbeMatchOperation =
AR_QBE_MATCH_ANYWHERE;
  limit-fieldLimitList[1].u.charLimits.fullTextOptions =
AR_FULLTEXT_OPTIONS_NONE;
  limit-fieldLimitList[2].dataType = AR_DATA_TYPE_CHAR;
  limit-fieldLimitList[2].u.charLimits.maxLength = 50;
  limit-fieldLimitList[2].u.charLimits.menuStyle = AR_MENU_APPEND;
  limit-fieldLimitList[2].u.charLimits.qbeMatchOperation =
AR_QBE_MATCH_ANYWHERE;
  limit-fieldLimitList[2].u.charLimits.fullTextOptions =
AR_FULLTEXT_OPTIONS_NONE;

  /* fill the data type list */

  dataType-numItems = 3;

  dataType-intList =
 (unsigned int *) malloc(sizeof(unsigned) * dataType-numItems);
  if (dataType-intList == NULL)
 return AddErrorMessage(status, NULL, AR_RETURN_ERROR,
PLUGIN_ERROR_MEMORY, );

  dataType-intList[0] = AR_DATA_TYPE_CHAR;
  dataType-intList[1] = AR_DATA_TYPE_CHAR;
  dataType-intList[2] = AR_DATA_TYPE_CHAR;
   }

   return AR_RETURN_OK;


2009/6/11 Jonas Stumph Stevnsvig jonas.stumph.stevns...@bec.dk:
 **
 Hi listers

 I'm currently in the process of creating a hello world in remedy, based on
 the ardbcskl.c

 Unfortunately my efforts are not going well.. I'm getting an error 129 -
 which i have resolved to  Field limit definition is invalid.
 The field limit specified for this field is invalid.
  For a numeric field, make sure that the high range is greater than the low
 range.
  For a character field, make sure that the pattern is within the size limit
 of the field. Also, verify
 that the specified character menu, the menu style setting, and the match
 operation setting are
 legal.
  For a selection field, verify that the value is a legal value for the
 field.
 Using the 7.5 error messages guide (I get Message not in catalog; Message
 number = 129 DummyChar,  129,  TEST:JSS:HB2) When i try to save the form.
 I get another error if I try to make an integer field - any help is
 appreciated

 (ARS7.5, MSSQL 2005 DB, WIN2k3)


 /*/
 /*
 */
 /* ARDBCGetMultipleFields
 */
 /*
 */
 /*/
 /*
 */
 /*   Description:  This is used to get a list of candidate fields to which