EssOtlGetAttributeSpecifications

Retrieves attribute specifications for the outline.

Syntax

ParameterData TypeDescription

hOutline;

ESS_HOUTLINE_T

Handle to the outline

pAttrSpecs;

ESS_ATTRSPECS_T

Attribute specifications

Notes

 

Example

void  ESS_OtlGetAttributeSpecifications()
{
   ESS_STS_T         sts = ESS_STS_NOERR;
   ESS_PATTRSPECS_T  AttrSpecs;
    ESS_OBJDEF_T     Object;
    ESS_HOUTLINE_T   hOutline;
    ESS_APPNAME_T    szAppName;
    ESS_DBNAME_T     szDbName;
    ESS_OBJNAME_T    szFileName;
    ESS_PROCSTATE_T  pState;

   memset(&Object, '\0', sizeof(Object));
    Object.hCtx = hCtx;
    Object.ObjType = ESS_OBJTYPE_OUTLINE;
    strcpy(szAppName, "Sample");
    strcpy(szDbName, "Basic");
    strcpy(szFileName, "Basic");
    Object.AppName = szAppName;
    Object.DbName = szDbName;
    Object.FileName = szFileName;

    sts = EssOtlOpenOutline(hCtx, &Object, ESS_TRUE, ESS_TRUE, &hOutline);
   printf("EssOtlOpenOutline() sts: %ld\n",sts);

   sts = EssOtlGetAttributeSpecifications(hOutline,&AttrSpecs);
   printf("EssOtlGetAttributeSpecifications() sts: %ld\n",sts);

   switch(AttrSpecs->usGenNameBy)
   {
      case ESS_GENNAMEBY_PREFIX:
         printf("\n Prefix/Suffix   : Prefix");
         break;
      case ESS_GENNAMEBY_SUFFIX:
         printf("\n Prefix/Suffix   : Suffix");
         break;
      default:
         printf("\n Prefix/Suffix   : None");
         break;
   }
   switch(AttrSpecs->usUseNameOf)
   {
      case ESS_USENAMEOF_PARENT:
         printf("\n Use Name of     : Parent");
         break;
      case ESS_USENAMEOF_GRANDPARENTANDPARENT:
         printf("\n Use Name of     : Grand Parent and Parent");
         break;
      case ESS_USENAMEOF_ALLANCESTORS:
         printf("\n Use Name of     : All Ancestors");
         break;
      case ESS_USENAMEOF_DIMENSION:
         printf("\n Use Name of     : Dimension");
         break;
      case ESS_USENAMEOF_NONE:
         printf("\n Use Name of     : None");
         break;
      default:
         printf("\n Use Name of     : Invalid setting");
         break;
   }
   switch(AttrSpecs->cDelimiter)
   {
      case ESS_DELIMITER_PIPE:
         printf("\n Delimiter       : '|'");
         break;
      case ESS_DELIMITER_UNDERSCORE:
         printf("\n Delimiter       : '_'");
         break;
      case ESS_DELIMITER_CARET:
         printf("\n Delimiter       : '^'");
         break;
      default:
         printf("\n Delimiter       : Invalid setting");
         break;
   }

   switch(AttrSpecs->usDateFormat)
   {
      case ESS_DATEFORMAT_DDMMYYYY :
         printf("\n Date Format     : DD-MM-YYYY");
         break;
      case ESS_DATEFORMAT_MMDDYYYY :
         printf("\n Date Format     : MM-DD-YYYY");
         break;
      default:
         printf("\n Date Format     : Invalid setting");
         break;

   }
   switch(AttrSpecs->usBucketingType)
   {
      case ESS_UPPERBOUNDINCLUSIVE :
         printf("\n Bucketing Type  : Upper Bound inclusive");
         break;
      case ESS_UPPERBOUNDNONINCLUSIVE :
         printf("\n Bucketing Type  : Upper Bound non-inclusive");
         break;
      case ESS_LOWERBOUNDINCLUSIVE :
         printf("\n Bucketing Type  : Lower Bound inclusive");
         break;
      case ESS_LOWERBOUNDNONINCLUSIVE :
         printf("\n Bucketing Type  : Lower Bound non-inclusive");
         break;
      default:
         printf("\n Bucketing Type   : Invalid setting");
         break;
   }

   printf("\n Default for TRUE       : %s",
           AttrSpecs->pszDefaultTrueString);

   printf("\n Default for FALSE      : %s",
           AttrSpecs->pszDefaultFalseString);

   printf("\n Default for Attr Calc  : %s",
           AttrSpecs->pszDefaultAttrCalcDimName);

   printf("\n Default for Sum        : %s",
           AttrSpecs->pszDefaultSumMbrName);

   printf("\n Default for Count      : %s",
           AttrSpecs->pszDefaultCountMbrName);

   printf("\n Default for Average    : %s",
           AttrSpecs->pszDefaultAverageMbrName);

   printf("\n Default for Min        : %s",
           AttrSpecs->pszDefaultMinMbrName);

   printf("\n Default for Max        : %s",
           AttrSpecs->pszDefaultMaxMbrName);

   printf("\n");

   sts = EssOtlWriteOutline(hOutline, &Object);
   printf("EssOtlWriteOutline() sts: %ld\n",sts);

   sts = EssOtlRestructure(hCtx, ESS_DOR_ALLDATA);
   printf("EssOtlRestructure() sts: %ld\n",sts);

   if (!sts)
   {
      sts = EssGetProcessState (hCtx, &pState);
      while (!sts || (pState.State != ESS_STATE_DONE))
         sts = EssGetProcessState (hCtx, &pState);
   }
   sts = EssOtlCloseOutline(hOutline);
   printf("EssOtlCloseOutline() sts: %ld\n",sts);

   EssOtlFreeStructure(hInst, ESS_DT_STRUCT_ATTRSPECS, 1,&AttrSpecs);
}

See Also