source: branches/work_304/doc/DocWebserviceDetails.cpp @ 405

Revision 405, 7.1 KB checked in by jls17, 6 years ago (diff)
  • changed some of the still existent calls to CARInside::GetSchemaInsideId? and replaced them by lookups via CARSchema
Line 
1//Copyright (C) 2009 Stefan Nerlich | stefan.nerlich@hotmail.com
2//
3//This file is part of ARInside.
4//
5//    ARInside is free software: you can redistribute it and/or modify
6//    it under the terms of the GNU General Public License as published by
7//    the Free Software Foundation, version 2 of the License.
8//
9//    ARInside is distributed in the hope that it will be useful,
10//    but WITHOUT ANY WARRANTY; without even the implied warranty of
11//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12//    GNU General Public License for more details.
13//
14//    You should have received a copy of the GNU General Public License
15//    along with Foobar.  If not, see <http://www.gnu.org/licenses/>.
16
17#include "stdafx.h"
18#include "DocWebserviceDetails.h"
19#include "DocOverlayHelper.h"
20
21CDocWebserviceDetails::CDocWebserviceDetails(CARContainer &obj)
22: ws(obj)
23{
24}
25
26CDocWebserviceDetails::~CDocWebserviceDetails(void)
27{
28}
29
30void CDocWebserviceDetails::Documentation()
31{
32        CPageParams file(PAGE_DETAILS, &ws);
33        this->rootLevel = file->GetRootLevel();
34
35        try
36        {
37                string dir = file->GetPath();
38
39                FileSystemUtil fsUtil(this->pInside->appConfig);
40                if(fsUtil.CreateSubDirectory(dir)>=0)   // TODO: depending on the file structure there might be more or less directories to create .. move this to an Init function in IFileStructure
41                {
42                        CWebPage webPage(file->GetFileName(), ws.GetName(), rootLevel, pInside->appConfig);
43                        CDocOverlayHelper overlayHelper(ws, rootLevel);
44
45                        //ContentHead informations
46                        stringstream strmHead;
47                        strmHead << CWebUtil::LinkToWebServiceIndex(this->rootLevel) << MenuSeparator << CWebUtil::ObjName(this->ws.GetName());
48                        strmHead << CAREnum::GetOverlayTypeString(ws.GetOverlayType());
49
50                        webPage.AddContentHead(strmHead.str(), overlayHelper.PlaceOverlayLink());
51                        webPage.AddContent(overlayHelper.PlaceOverlaidNotice());
52
53                        //Container Base Informations
54                        CDocContainerHelper *contHelper = new CDocContainerHelper(this->ws, this->rootLevel);
55                        webPage.AddContent(contHelper->BaseInfo());
56                        delete contHelper;
57
58                        //Object specific documentation
59                        webPage.AddContent(WSInformation());
60
61                        //History
62                        webPage.AddContent(this->pInside->ServerObjectHistory(&this->ws, this->rootLevel));
63
64                        //Save File
65                        webPage.SaveInFolder(dir);
66                }
67        }
68        catch(exception& e)
69        {
70                cout << "EXCEPTION in WebserviceDetails_Documentation: " << e.what() << endl; 
71        }
72}
73
74string CDocWebserviceDetails::WSInformation()
75{
76        //Container specific properties
77        CTable tblProp("specificPropList", "TblObjectList");
78        tblProp.AddColumn(20, "Description");
79        tblProp.AddColumn(80, "Value");
80
81        //Label
82        try
83        {
84                if(ws.GetLabel() != NULL)
85                {
86                        CTableCell cellWsDesc("Label", "");
87                        CTableCell cellWsValue(ws.GetLabel(), "");
88
89                        CTableRow row("");
90                        row.AddCell(cellWsDesc);
91                        row.AddCell(cellWsValue);
92                        tblProp.AddRow(row);
93                }
94        }
95        catch(exception& e)
96        {
97                cout << "EXCEPTION in WebserviceDetails_BaseDocumentation (Label): " << e.what() << endl; 
98        }
99
100        //Description
101        try
102        {
103                if(ws.GetDescription() != NULL)
104                {
105                        CTableCell cellWsDesc("Description", "");
106                        CTableCell cellWsValue(ws.GetDescription(), "");
107
108                        CTableRow row("");
109                        row.AddCell(cellWsDesc);
110                        row.AddCell(cellWsValue);
111                        tblProp.AddRow(row);
112                }
113        }
114        catch(exception& e)
115        {
116                cout << "EXCEPTION in WebserviceDetails_BaseDocumentation (Description): " << e.what() << endl; 
117        }
118
119
120        //Properties
121        try
122        {
123                const ARReferenceList& refs = this->ws.GetReferences();
124                CARSchema wsOwnerSchema(ws.GetOwnerObjects().ownerObjList[0].ownerName);
125
126                for(unsigned int i=0; i< refs.numItems; i++)
127                {
128                        stringstream strmWsDesc, strmWsValue;
129                        strmWsDesc.str("");
130                        strmWsValue.str("");
131
132                        const ARReferenceStruct& ref = refs.referenceList[i];
133                        switch(ref.type)
134                        {
135                        case ARREF_WS_PROPERTIES:
136                                {
137                                        strmWsDesc << "Property";
138                                        switch(ref.reference.u.extRef.value.dataType)
139                                        {
140                                        case AR_DATA_TYPE_CHAR:
141                                                {
142
143                                                        try
144                                                        {
145                                                                CRefItem refItem(this->ws, REFM_WEBSERVICE_PROPERTY);
146                                                                string tmpValue = CWebUtil::Validate(ref.reference.u.extRef.value.u.charVal);
147                                                                strmWsValue << "<pre class=\"preWsInfo\">" << pInside->XMLFindFields(tmpValue, wsOwnerSchema.GetInsideId(), rootLevel, &refItem) << "</pre>";
148                                                        }
149                                                        catch(...)
150                                                        {
151                                                        }
152
153                                                }
154                                                break;
155                                        }
156                                }
157                                break;
158                        case ARREF_WS_OPERATION:
159                                {
160                                        strmWsDesc << "Operation";
161                                        switch(ref.reference.u.extRef.value.dataType)
162                                        {
163                                        case AR_DATA_TYPE_CHAR:
164                                                {
165                                                        try
166                                                        {
167                                                                CRefItem refItem(this->ws, REFM_WEBSERVICE_OPERATION);
168                                                                string tmpValue = CWebUtil::Validate(ref.reference.u.extRef.value.u.charVal);
169                                                                strmWsValue << "<pre class=\"preWsInfo\">" << pInside->XMLFindFields(tmpValue, wsOwnerSchema.GetInsideId(), rootLevel, &refItem) << "</pre>";                                                           
170                                                        }
171                                                        catch(...)
172                                                        {
173                                                        }
174                                                }
175                                                break;
176                                        }
177                                }
178                                break;
179                        case ARREF_WS_ARXML_MAPPING:
180                                {
181                                        strmWsDesc << "Mapping";
182                                        switch(ref.reference.u.extRef.value.dataType)
183                                        {
184                                        case AR_DATA_TYPE_CHAR:
185                                                {
186                                                        try
187                                                        {
188                                                                CRefItem refItem(this->ws, REFM_WEBSERVICE_FIELDMAP);
189                                                                string tmpValue = CWebUtil::Validate(ref.reference.u.extRef.value.u.charVal);
190                                                                strmWsValue << "<pre class=\"preWsInfo\">" << pInside->XMLFindFields(tmpValue, wsOwnerSchema.GetInsideId(), rootLevel, &refItem) << "</pre>";
191                                                        }
192                                                        catch(...)
193                                                        {
194                                                        }
195                                                }
196                                                break;
197                                        }
198                                }
199                                break;
200                        case ARREF_WS_WSDL:
201                                {
202                                        strmWsDesc << "WSDL";
203                                        switch(ref.reference.u.extRef.value.dataType)
204                                        {
205                                        case AR_DATA_TYPE_CHAR:
206                                                {
207                                                        if(ref.reference.u.extRef.value.u.charVal != NULL)
208                                                        {
209                                                                strmWsValue << "<pre class=\"preWsInfo\">" << CWebUtil::Validate(ref.reference.u.extRef.value.u.charVal) << "</pre>";
210                                                        }
211                                                }
212                                                break;
213                                        }
214                                }
215                                break;
216                        case ARREF_WS_PUBLISHING_LOC:
217                                {
218                                        strmWsDesc << "Publishing Location";
219                                        switch(ref.reference.u.extRef.value.dataType)
220                                        {
221                                        case AR_DATA_TYPE_CHAR:
222                                                {
223                                                        if(ref.reference.u.extRef.value.u.charVal != NULL)
224                                                        {
225                                                                strmWsValue << "<pre class=\"preWsInfo\">" << CWebUtil::Validate(ref.reference.u.extRef.value.u.charVal) << "</pre>";
226                                                        }
227                                                }
228                                                break;
229                                        }
230                                }
231                                break;
232                        case ARREF_WS_XML_SCHEMA_LOC:
233                                {
234                                        strmWsDesc << "XML Schema";
235                                        switch(ref.reference.u.extRef.value.dataType)
236                                        {
237                                        case AR_DATA_TYPE_CHAR:
238                                                {
239                                                        if(ref.reference.u.extRef.value.u.charVal != NULL)
240                                                        {
241                                                                strmWsValue << "<pre class=\"preWsInfo\">" << CWebUtil::Validate(ref.reference.u.extRef.value.u.charVal) << "</pre>";
242                                                        }
243                                                }
244                                                break;
245                                        }
246                                }
247                                break;
248                        }
249
250                        CTableRow row("");
251                        row.AddCell(CTableCell(strmWsDesc.str()));
252                        row.AddCell(CTableCell(strmWsValue.str()));
253                        tblProp.AddRow(row);
254                }
255        }
256        catch(exception& e)
257        {
258                cout << "EXCEPTION in WebserviceDetails_BaseDocumentation: " << e.what() << endl; 
259        }
260
261        return tblProp.ToXHtml();
262}
Note: See TracBrowser for help on using the repository browser.