Changeset 508 for branches


Ignore:
Timestamp:
04/06/14 09:52:25 (5 years ago)
Author:
jls17
Message:
  • added linking support directly to CARServerObject
Location:
branches/work_311/output
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/work_311/output/URLLink.cpp

    r507 r508  
    1616 
    1717#include "stdafx.h" 
     18#include "../core/ARServerObject.h" 
     19#include "../core/ARContainer.h" 
    1820#include "ImageTag.h" 
    1921#include "RootPath.h" 
     
    2325namespace OUTPUT 
    2426{ 
     27        ImageTag::ImageEnum GetContainerImage(unsigned int containerType) 
     28        { 
     29                switch (containerType) 
     30                { 
     31                case ARCON_GUIDE: return ImageTag::ActiveLinkGuide; 
     32                case ARCON_APP: return ImageTag::Application; 
     33                case ARCON_PACK: return ImageTag::PackingList; 
     34                case ARCON_FILTER_GUIDE: return ImageTag::FilterGuide; 
     35                case ARCON_WEBSERVICE: return ImageTag::Webservice; 
     36                default: return ImageTag::Document; 
     37                } 
     38        } 
    2539 
     40        ImageTag::ImageEnum MapXmlStructItemToImage(const CARServerObject &serverObj) 
     41        { 
     42                switch (serverObj.GetServerObjectTypeXML()) 
     43                { 
     44                case AR_STRUCT_ITEM_XML_ACTIVE_LINK: return ImageTag::ActiveLink; 
     45                case AR_STRUCT_ITEM_XML_FILTER: return ImageTag::Filter; 
     46                case AR_STRUCT_ITEM_XML_ESCALATION: return ImageTag::Escalation; 
     47                case AR_STRUCT_ITEM_XML_CHAR_MENU: return ImageTag::Menu; 
     48                case AR_STRUCT_ITEM_XML_CONTAINER: 
     49                        { 
     50                                const CARContainer &cnt = dynamic_cast<const CARContainer&>(serverObj); 
     51                                return GetContainerImage(cnt.GetType()); 
     52                        } 
     53                        break; 
     54                case AR_STRUCT_ITEM_XML_IMAGE: return ImageTag::Image; 
     55                default: return ImageTag::NoImage; 
     56                } 
     57        } 
     58 
     59        // constructors 
    2660        URLLink::URLLink(const std::string &caption, const CPageParams &linkToPage, const OUTPUT::ImageTag &image, int rootLevel, bool validate, OUTPUT::URLLink::LinkTargetMode target) 
    2761        { 
     
    3367                Init(caption, linkToPage, image, rootLevel, true, target); 
    3468        } 
     69        URLLink::URLLink(const CARServerObject &workflowObject, int rootLevel, bool showImage) 
     70        { 
     71                CPageParams linkToPage(PAGE_DETAILS, &workflowObject); 
     72                ImageTag image(showImage ? MapXmlStructItemToImage(workflowObject) : ImageTag::NoImage, rootLevel); 
     73                Init(workflowObject.GetName(), linkToPage, image, rootLevel, true, URLLink::TARGET_MODE_SELF); 
     74        } 
    3575 
     76        // Central class initialization 
    3677        void URLLink::Init(const std::string &caption, const CPageParams &linkToPage, const OUTPUT::ImageTag &image, int rootLevel, bool validate, OUTPUT::URLLink::LinkTargetMode target) 
    3778        { 
  • branches/work_311/output/URLLink.h

    r507 r508  
    1717#pragma once 
    1818 
     19class CARServerObject; 
    1920class CPageParams; 
    2021 
     
    3435 
    3536                URLLink(const std::string &caption, const CPageParams &linkToPage, const OUTPUT::ImageTag &image, int rootLevel, bool validate, OUTPUT::URLLink::LinkTargetMode target); 
    36                 URLLink(const std::string &caption, const CPageParams &linkToPage, const OUTPUT::ImageTag &image, int rootLevel, OUTPUT::URLLink::LinkTargetMode target);        
     37                URLLink(const std::string &caption, const CPageParams &linkToPage, const OUTPUT::ImageTag &image, int rootLevel, OUTPUT::URLLink::LinkTargetMode target); 
     38                URLLink(const CARServerObject &workflowObject, int rootLevel, bool showImage = true); 
    3739 
    3840                std::ostream& ToStream(std::ostream &strm) const; 
  • branches/work_311/output/URLLinkTest.cpp

    r506 r508  
    22#include "URLLink.h" 
    33 
     4#include "../core/ARServerObject.h" 
     5#include "../lists/ARListHelpers.h" 
    46#include "FileNaming.h" 
    57#include "IFileStructure.h" 
     
    1012using namespace OUTPUT; 
    1113 
     14const int rootLevel = 1; // we use rootLevel 1 in most cases 
     15 
    1216class URLLinkTests : public Test 
    1317{ 
    1418public: 
    1519        // TODO: replace the following with a fake implementation!! 
    16         OUTPUT::FileNaming::DefaultFileNamingStrategy defaultFileNaming; 
    17  
     20        OUTPUT::FileNaming::ObjectNameFileNamingStrategy defaultFileNaming; 
     21         
    1822        void SetUp()  
    1923        { 
     
    2832}; 
    2933 
     34class CFakeServerObject : public CARServerObject 
     35{ 
     36public: 
     37        CFakeServerObject(unsigned int xmlType = AR_STRUCT_ITEM_XML_ACTIVE_LINK)  
     38                : CARServerObject(0) { objName= "TheTestObj"; objType = xmlType; } 
     39 
     40        ARAccessNameType name; 
     41        string objName; 
     42        unsigned int objType; 
     43 
     44        // from CARServerObject 
     45        virtual bool Exists() const { return true; } 
     46 
     47        virtual const char* GetHelpText() const { return ""; } 
     48        virtual ARTimestamp GetTimestamp() const { return 0; } 
     49        virtual const ARAccessNameType& GetOwner() const { return name; } 
     50        virtual const ARAccessNameType& GetLastChanged() const { return name; } 
     51        virtual const char* GetChangeDiary() const { return ""; } 
     52        virtual const ARPropList& GetPropList() const { return emptyPropList; } 
     53        virtual string GetURL(int rootLevel, bool showImage = true) const { return ""; } 
     54        virtual int GetServerObjectTypeXML() const { return objType; } 
     55 
     56        virtual CARServerObject* Clone() const { return new CFakeServerObject(); } 
     57        virtual bool IsClonable() const { return true; } 
     58 
     59        // declarations for overlay support 
     60        virtual int GetOverlayType() const { return 0; } 
     61        virtual int GetOverlayGroup() const { return 0; } 
     62        virtual string GetOverlayBaseName() const { return ""; } 
     63        virtual string GetOverlayName() const { return ""; } 
     64 
     65        // from CARObject 
     66        virtual string GetName() { return objName; } 
     67        virtual string GetName() const { return objName; } 
     68        virtual string GetNameFirstChar() { return objName.substr(0, 1); } 
     69        virtual bool NameStandardFirstChar() { return true; } 
     70}; 
     71 
    3072TEST_F(URLLinkTests, BasicMainSelfLink) 
    3173{ 
    32         int rootLevel = 1; 
    3374        CPageParams page(PAGE_MAINHOME); 
    3475        ImageTag image(ImageTag::NoImage, rootLevel); 
     
    4384TEST_F(URLLinkTests, MainLinkWithImageAndTarget) 
    4485{ 
    45         int rootLevel = 1; 
    4686        CPageParams page(PAGE_MAINHOME); 
    4787        ImageTag image(ImageTag::Server, rootLevel); 
     
    5393        ASSERT_STREQ("<img src=\"../img/server.gif\" width=\"16\" height=\"16\" alt=\"server.gif\" /><a href=\"../index.htm\" target=\"_parent\">&lt;Main Page&gt;</a>", result.c_str()); 
    5494} 
     95 
     96TEST_F(URLLinkTests, ObjectLinkWithImage) 
     97{ 
     98        CFakeServerObject fakeWorkflow; 
     99 
     100        stringstream strm; 
     101        strm << URLLink(fakeWorkflow, rootLevel); 
     102        string result = strm.str(); 
     103 
     104        ASSERT_STREQ("<img src=\"../img/active_link.gif\" width=\"16\" height=\"16\" alt=\"active_link.gif\" /><a href=\"../active_link/TheTestObj.htm\">TheTestObj</a>", result.c_str()); 
     105} 
     106 
     107TEST_F(URLLinkTests, ObjectFilterLinkWithImage) 
     108{ 
     109        CFakeServerObject fakeWorkflow(AR_STRUCT_ITEM_XML_FILTER); 
     110 
     111        stringstream strm; 
     112        strm << URLLink(fakeWorkflow, rootLevel); 
     113        string result = strm.str(); 
     114 
     115        ASSERT_STREQ("<img src=\"../img/filter.gif\" width=\"16\" height=\"16\" alt=\"filter.gif\" /><a href=\"../filter/TheTestObj.htm\">TheTestObj</a>", result.c_str()); 
     116} 
     117 
     118TEST_F(URLLinkTests, ObjectEscalationLinkWithoutImage) 
     119{ 
     120        CFakeServerObject fakeWorkflow(AR_STRUCT_ITEM_XML_ESCALATION); 
     121 
     122        stringstream strm; 
     123        strm << URLLink(fakeWorkflow, rootLevel, false); 
     124        string result = strm.str(); 
     125 
     126        ASSERT_STREQ("<a href=\"../escalation/TheTestObj.htm\">TheTestObj</a>", result.c_str()); 
     127} 
Note: See TracChangeset for help on using the changeset viewer.