Changeset 349 for branches


Ignore:
Timestamp:
10/13/13 18:29:47 (6 years ago)
Author:
jls17
Message:
  • added some of the form's FTS settings to the schema page
  • new field reference added, if fields are used as multi-form-search weighted relevancy fields
  • moved code for splitting intervals into days, hours and minutes into CARDayStructHelper and added some tests
  • depending on schemaType, unnecessary form properties aren't documented
Location:
branches/work_304
Files:
1 added
10 edited

Legend:

Unmodified
Added
Removed
  • branches/work_304/ARInsideTest.vcproj

    r327 r349  
    524524                </Filter> 
    525525                <Filter 
    526                         Name="lists" 
    527                         > 
    528                         <File 
    529                                 RelativePath=".\lists\ARListHelpersTest.cpp" 
    530                                 > 
    531                         </File> 
    532                 </Filter> 
    533                 <Filter 
    534526                        Name="output" 
    535527                        > 
     
    542534                                </File> 
    543535                        </Filter> 
     536                </Filter> 
     537                <Filter 
     538                        Name="core" 
     539                        > 
     540                        <File 
     541                                RelativePath=".\core\ARDayStructHelperTest.cpp" 
     542                                > 
     543                        </File> 
     544                </Filter> 
     545                <Filter 
     546                        Name="lists" 
     547                        > 
     548                        <File 
     549                                RelativePath=".\lists\ARListHelpersTest.cpp" 
     550                                > 
     551                        </File> 
    544552                </Filter> 
    545553                <File 
  • branches/work_304/core/ARDayStructHelper.cpp

    r133 r349  
    7878        return strm.str(); 
    7979} 
     80 
     81void CARDayStructHelper::SplitInterval(unsigned int interval, unsigned int &days, unsigned int &hours, unsigned int &minutes, unsigned int &seconds) 
     82{ 
     83        days = interval / (3600 * 24); 
     84        if (days > 0) 
     85                interval -= (days * (3600 * 24)); 
     86        hours = interval / 3600; 
     87        if (hours > 0) 
     88                interval -= (hours * 3600); 
     89        minutes = interval / 60; 
     90        if (minutes > 0) 
     91                interval -= minutes * 60; 
     92        seconds = interval; 
     93} 
  • branches/work_304/core/ARDayStructHelper.h

    r133 r349  
    2222public: 
    2323        static string DayStructToHTMLString(const ARDayStruct* dayStruct); 
     24        static void SplitInterval(unsigned int interval, unsigned int &days, unsigned int &hours, unsigned int &minutes, unsigned int &seconds); 
    2425}; 
  • branches/work_304/core/AREnum.cpp

    r342 r349  
    26002600        return EnumDefault; 
    26012601} 
     2602 
     2603const char* CAREnum::WeightedRelevancyFieldType(int nType) 
     2604{ 
     2605        switch (nType) 
     2606        { 
     2607        case AR_MFS_WEIGHTED_RELEVANCY_TITLE_FIELD_TAG: return "Title"; 
     2608        case AR_MFS_WEIGHTED_RELEVANCY_ENVIRONMENT_FIELD_TAG: return "Environment"; 
     2609        case AR_MFS_WEIGHTED_RELEVANCY_KEYWORDS_FIELD_TAG: return "Keywords"; 
     2610        default: return EnumDefault; 
     2611        } 
     2612} 
  • branches/work_304/core/AREnum.h

    r342 r349  
    8989        static const char* GetOverlayType(int overlayType); 
    9090        static const char* CallGuideMode(int mode); 
     91        static const char* WeightedRelevancyFieldType(int nType); 
    9192}; 
  • branches/work_304/core/AREscalation.cpp

    r253 r349  
    7777                if (escalationTm.escalationTmType == AR_ESCALATION_TYPE_INTERVAL) 
    7878                { 
    79                         unsigned int interval, days, hours, minutes; 
    80                         interval = escalationTm.u.interval; 
    81                         days = interval / (3600 * 24); 
    82                         if (days > 0) 
    83                                 interval -= (days * (3600 * 24)); 
    84                         hours = interval / 3600; 
    85                         if (hours > 0) 
    86                                 interval -= (hours * 3600); 
    87                         minutes = interval / 60; 
     79                        unsigned int days, hours, minutes, seconds; 
     80                        CARDayStructHelper::SplitInterval(escalationTm.u.interval, days, hours, minutes, seconds); 
    8881                        strm << days << " Days " << hours << " Hours " << minutes << " Minutes"; 
    8982                } 
  • branches/work_304/doc/DocSchemaDetails.cpp

    r348 r349  
    955955                                perm << CAREnum::ObjectPermission(perms.permissionList[i].permissions); 
    956956 
     957                                row.AddCell(CTableCell(this->pInside->LinkToGroup(this->schema.GetAppRefName(), perms.permissionList[i].groupId, rootLevel))); 
    957958                                row.AddCell(CTableCell(perms.permissionList[i].groupId)); 
    958                                 row.AddCell(CTableCell(this->pInside->LinkToGroup(this->schema.GetAppRefName(), perms.permissionList[i].groupId, rootLevel))); 
    959959                                row.AddCell(perm.str()); 
    960960                                tbl.AddRow(row); 
     
    20222022        strm.str(""); 
    20232023        map<ARLong32,ARValueStruct*> propIdx; 
    2024  
     2024        int schemaType = this->schema.GetCompound().schemaType; 
     2025         
    20252026        try 
    20262027        { 
     
    20332034                ShowBasicProperties(strm, &propIdx); 
    20342035                ShowEntryPointProperties(strm, &propIdx); 
    2035                 ShowResultListProperties(strm, &propIdx); 
    2036                 ShowSortListProperties(strm, &propIdx); 
    2037  
    2038                 if (this->schema.GetCompound().schemaType != AR_SCHEMA_DIALOG) 
    2039                 { 
    2040                         // doc archive properties 
     2036 
     2037                if (schemaType != AR_SCHEMA_DIALOG) 
     2038                { 
     2039                        ShowResultListProperties(strm, &propIdx); 
     2040                        ShowSortListProperties(strm, &propIdx); 
    20412041                        ShowArchiveProperties(strm); 
    20422042 
    20432043                        if (pInside->CompareServerVersion(7,0) >= 0)  
    20442044                        { 
    2045                                 // doc audit properties 
    20462045                                ShowAuditProperties(strm); 
    20472046                        } 
    2048                 } 
    2049  
    2050                 ShowIndexProperties(strm, &propIdx); 
     2047                         
     2048                        if (schemaType != AR_SCHEMA_VENDOR && schemaType != AR_SCHEMA_VIEW) 
     2049                                ShowIndexProperties(strm, &propIdx); 
     2050 
     2051                        ShowFTSMTSProperties(strm, &propIdx); 
     2052                } 
     2053 
    20512054                ShowPermissionProperties(strm, &propIdx); 
    20522055 
    2053                 // doc properties left 
    20542056                propIdx.UnusedPropertiesToHTML(strm); 
    20552057 
     
    26672669        return strm.str(); 
    26682670} 
     2671 
     2672void CDocSchemaDetails::ShowFTSMTSProperties(std::ostream& strm, CARProplistHelper *propIndex) 
     2673{ 
     2674#if AR_CURRENT_API_VERSION >= AR_API_VERSION_763 
     2675        if (pInside->CompareServerVersion(7,6,3) < 0) 
     2676                return; 
     2677 
     2678        ARValueStruct* propVal; 
     2679        int iValue; 
     2680 
     2681        try 
     2682        { 
     2683                stringstream tmpStrm; 
     2684                CTable tbl("ftsProps", "TblNoBorder"); 
     2685                tbl.AddColumn(20, "Description"); 
     2686                tbl.AddColumn(80, "Value"); 
     2687                tbl.DisableHeader(); 
     2688 
     2689                /////////////////////////////////////////////////////////////////////////////////////// 
     2690 
     2691                CTableRow       row(""); 
     2692                iValue = 0; 
     2693                propVal = propIndex->GetAndUseValue(AR_OPROP_MFS_OPTION_MASK); 
     2694                if (propVal != NULL && propVal->dataType == AR_DATA_TYPE_INTEGER) 
     2695                        iValue = propVal->u.intVal; 
     2696                 
     2697                row.AddCell("Exclude from multi-form search"); 
     2698                row.AddCell((iValue & AR_MULTI_FORM_SEARCH_OPTION_EXCLUDE ? "Yes" : "No"));              
     2699                tbl.AddRow(row); 
     2700 
     2701                /////////////////////////////////////////////////////////////////////////////////////// 
     2702 
     2703                row.ClearCells(); 
     2704                char* strValue = NULL; 
     2705                vector<int> weightedRelevancyFields; weightedRelevancyFields.resize(4); 
     2706 
     2707                propVal = propIndex->GetAndUseValue(AR_OPROP_MFS_WEIGHTED_RELEVANCY_FIELDS); 
     2708                if (propVal != NULL && propVal->dataType == AR_DATA_TYPE_CHAR) 
     2709                        strValue = propVal->u.charVal; 
     2710 
     2711 
     2712                if (strValue != NULL && strValue[0] != 0) 
     2713                { 
     2714                        int numFields = atoi(strValue); 
     2715                        char* newPos = strchr(strValue, ';'); 
     2716                        if (newPos) 
     2717                        { 
     2718                                strValue = newPos + 1; 
     2719                                for (int fieldPos = 0; fieldPos < numFields; fieldPos++) 
     2720                                { 
     2721                                        int fieldTag = atoi(strValue); 
     2722                                         
     2723                                        newPos = strchr(strValue, ';'); 
     2724                                        if (newPos) 
     2725                                        { 
     2726                                                strValue = newPos + 1; 
     2727                                                int fieldId = atoi(strValue); 
     2728                                                 
     2729                                                if (fieldTag > 0 && fieldTag <= AR_MFS_WEIGHTED_RELEVANCY_KEYWORDS_FIELD_TAG) 
     2730                                                { 
     2731                                                        weightedRelevancyFields[fieldTag-1] = fieldId; 
     2732                                                } 
     2733                                        } 
     2734                                } 
     2735                        } 
     2736                } 
     2737 
     2738                CTable weightedRelFields("WRFields", "TblNoBorder"); 
     2739                weightedRelFields.AddColumn(0, ""); 
     2740                weightedRelFields.AddColumn(80, ""); 
     2741                weightedRelFields.DisableHeader(); 
     2742 
     2743                for (unsigned int wrfPos = 0; wrfPos < AR_MFS_WEIGHTED_RELEVANCY_KEYWORDS_FIELD_TAG; wrfPos++) 
     2744                { 
     2745                        int fieldId = weightedRelevancyFields[wrfPos]; 
     2746 
     2747                        CTableRow wrfRow(""); 
     2748                        wrfRow.AddCell(CAREnum::WeightedRelevancyFieldType(wrfPos+1)); 
     2749                        wrfRow.AddCell((fieldId > 0 ? pInside->LinkToField(this->schema.GetInsideId(), fieldId, rootLevel) : "")); 
     2750                        weightedRelFields.AddRow(wrfRow); 
     2751 
     2752                        if (fieldId > 0) 
     2753                        { 
     2754                                CRefItem ref(schema, REFM_SCHEMA_FTS_WEIGHTED_RELEVANCY_FIELD); 
     2755                                pInside->AddFieldReference(schema.GetInsideId(), fieldId, ref); 
     2756                        } 
     2757                } 
     2758 
     2759                row.AddCell("Weighted relevancy fields"); 
     2760                row.AddCell(weightedRelFields.ToXHtml()); 
     2761                tbl.AddRow(row); 
     2762 
     2763                /////////////////////////////////////////////////////////////////////////////////////// 
     2764 
     2765                row.ClearCells(); 
     2766                ARDayStruct timeValue; 
     2767                unsigned int intervalValue = 0; 
     2768 
     2769                ARZeroMemory(&timeValue); 
     2770 
     2771                propVal = propIndex->GetAndUseValue(AR_OPROP_FT_SCAN_TIME_MONTH_MASK); 
     2772                if (propVal != NULL && propVal->dataType == AR_DATA_TYPE_INTEGER) 
     2773                        timeValue.monthday = propVal->u.intVal; 
     2774 
     2775                propVal = propIndex->GetAndUseValue(AR_OPROP_FT_SCAN_TIME_WEEKDAY_MASK); 
     2776                if (propVal != NULL && propVal->dataType == AR_DATA_TYPE_INTEGER) 
     2777                        timeValue.weekday = propVal->u.intVal; 
     2778 
     2779                propVal = propIndex->GetAndUseValue(AR_OPROP_FT_SCAN_TIME_HOUR_MASK); 
     2780                if (propVal != NULL && propVal->dataType == AR_DATA_TYPE_INTEGER) 
     2781                        timeValue.hourmask = propVal->u.intVal; 
     2782                 
     2783                propVal = propIndex->GetAndUseValue(AR_OPROP_FT_SCAN_TIME_MINUTE); 
     2784                if (propVal != NULL && propVal->dataType == AR_DATA_TYPE_INTEGER) 
     2785                        timeValue.minute = propVal->u.intVal; 
     2786 
     2787                propVal = propIndex->GetAndUseValue(AR_OPROP_FT_SCAN_TIME_INTERVAL); 
     2788                if (propVal != NULL && (propVal->dataType == AR_DATA_TYPE_INTEGER || propVal->dataType == AR_DATA_TYPE_ULONG)) 
     2789                        intervalValue = propVal->u.ulongVal; 
     2790                 
     2791                row.AddCell("FT-indexed field updates"); 
     2792                if (timeValue.monthday != 0 || timeValue.weekday != 0 || timeValue.hourmask != 0 || timeValue.minute != 0) 
     2793                { 
     2794                        row.AddCell(CARDayStructHelper::DayStructToHTMLString(&timeValue)); 
     2795                } 
     2796                else if (intervalValue != 0) 
     2797                { 
     2798                        unsigned int days, hours, minutes, seconds; 
     2799                        CARDayStructHelper::SplitInterval(intervalValue, days, hours, minutes, seconds); 
     2800 
     2801                        tmpStrm.str(""); 
     2802                        tmpStrm << days << " Days " << hours << " Hours " << minutes << " Minutes"; 
     2803                        row.AddCell(tmpStrm.str()); 
     2804                } 
     2805                else 
     2806                { 
     2807                        row.AddCell("No Time specified"); 
     2808                } 
     2809                tbl.AddRow(row); 
     2810 
     2811                /////////////////////////////////////////////////////////////////////////////////////// 
     2812 
     2813                strm << "<h2>" << CWebUtil::ImageTag("doc.gif", rootLevel) + "Full Text Search:" << "</h2>"; 
     2814                strm << "<div>" << tbl << "</div>"; 
     2815        } 
     2816        catch (exception &e) 
     2817        { 
     2818                cerr << "EXCEPTION in ShowFTSMTSProperties: " << e.what() << endl; 
     2819        } 
     2820#endif 
     2821} 
  • branches/work_304/doc/DocSchemaDetails.h

    r348 r349  
    7676        void ShowAuditProperties(std::ostream& strm); 
    7777        void ShowArchiveProperties(std::ostream& strm); 
     78        void ShowFTSMTSProperties(std::ostream& strm, CARProplistHelper *propIndex); 
    7879 
    7980        string SchemaNavigation();       
  • branches/work_304/util/RefItem.cpp

    r210 r349  
    600600                strm << "Archive Qualification"; 
    601601                break; 
     602        case REFM_SCHEMA_FTS_WEIGHTED_RELEVANCY_FIELD: 
     603                strm << "FTS Weighted Relevancy Field"; 
     604                break; 
    602605        case REFM_WEBSERVICE_PROPERTY: 
    603606                strm << "Webservice Property"; 
  • branches/work_304/util/RefItem.h

    r187 r349  
    8686        REFM_SCHEMA_AUDIT_QUALIFICATION, 
    8787        REFM_SCHEMA_ARCHIVE_QUALIFICATION, 
     88        REFM_SCHEMA_FTS_WEIGHTED_RELEVANCY_FIELD, 
    8889 
    8990        // basic workflow references 
Note: See TracChangeset for help on using the changeset viewer.