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

Revision 307, 7.3 KB checked in by jls17, 7 years ago (diff)
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
125                for(unsigned int i=0; i< refs.numItems; i++)
126                {
127                        stringstream strmWsDesc, strmWsValue;
128                        strmWsDesc.str("");
129                        strmWsValue.str("");
130
131                        const ARReferenceStruct& ref = refs.referenceList[i];
132                        switch(ref.type)
133                        {
134                        case ARREF_WS_PROPERTIES:
135                                {
136                                        strmWsDesc << "Property";
137                                        switch(ref.reference.u.extRef.value.dataType)
138                                        {
139                                        case AR_DATA_TYPE_CHAR:
140                                                {
141
142                                                        try
143                                                        {
144                                                                int schemaId = pInside->SchemaGetInsideId(ws.GetOwnerObjects().ownerObjList[0].ownerName);
145
146                                                                CRefItem refItem(this->ws, REFM_WEBSERVICE_PROPERTY);
147                                                                string tmpValue = CWebUtil::Validate(ref.reference.u.extRef.value.u.charVal);
148                                                                strmWsValue << "<pre class=\"preWsInfo\">" << pInside->XMLFindFields(tmpValue, schemaId, rootLevel, &refItem) << "</pre>";
149                                                        }
150                                                        catch(...)
151                                                        {
152                                                        }
153
154                                                }
155                                                break;
156                                        }
157                                }
158                                break;
159                        case ARREF_WS_OPERATION:
160                                {
161                                        strmWsDesc << "Operation";
162                                        switch(ref.reference.u.extRef.value.dataType)
163                                        {
164                                        case AR_DATA_TYPE_CHAR:
165                                                {
166                                                        try
167                                                        {
168                                                                int schemaId = pInside->SchemaGetInsideId(ws.GetOwnerObjects().ownerObjList[0].ownerName);
169
170                                                                CRefItem refItem(this->ws, REFM_WEBSERVICE_OPERATION);
171                                                                string tmpValue = CWebUtil::Validate(ref.reference.u.extRef.value.u.charVal);
172                                                                strmWsValue << "<pre class=\"preWsInfo\">" << pInside->XMLFindFields(tmpValue, schemaId, rootLevel, &refItem) << "</pre>";                                                             
173                                                        }
174                                                        catch(...)
175                                                        {
176                                                        }
177                                                }
178                                                break;
179                                        }
180                                }
181                                break;
182                        case ARREF_WS_ARXML_MAPPING:
183                                {
184                                        strmWsDesc << "Mapping";
185                                        switch(ref.reference.u.extRef.value.dataType)
186                                        {
187                                        case AR_DATA_TYPE_CHAR:
188                                                {
189                                                        try
190                                                        {
191                                                                int schemaId = pInside->SchemaGetInsideId(ws.GetOwnerObjects().ownerObjList[0].ownerName);
192
193                                                                CRefItem refItem(this->ws, REFM_WEBSERVICE_FIELDMAP);
194                                                                string tmpValue = CWebUtil::Validate(ref.reference.u.extRef.value.u.charVal);
195                                                                strmWsValue << "<pre class=\"preWsInfo\">" << pInside->XMLFindFields(tmpValue, schemaId, rootLevel, &refItem) << "</pre>";
196                                                        }
197                                                        catch(...)
198                                                        {
199                                                        }
200                                                }
201                                                break;
202                                        }
203                                }
204                                break;
205                        case ARREF_WS_WSDL:
206                                {
207                                        strmWsDesc << "WSDL";
208                                        switch(ref.reference.u.extRef.value.dataType)
209                                        {
210                                        case AR_DATA_TYPE_CHAR:
211                                                {
212                                                        if(ref.reference.u.extRef.value.u.charVal != NULL)
213                                                        {
214                                                                strmWsValue << "<pre class=\"preWsInfo\">" << CWebUtil::Validate(ref.reference.u.extRef.value.u.charVal) << "</pre>";
215                                                        }
216                                                }
217                                                break;
218                                        }
219                                }
220                                break;
221                        case ARREF_WS_PUBLISHING_LOC:
222                                {
223                                        strmWsDesc << "Publishing Location";
224                                        switch(ref.reference.u.extRef.value.dataType)
225                                        {
226                                        case AR_DATA_TYPE_CHAR:
227                                                {
228                                                        if(ref.reference.u.extRef.value.u.charVal != NULL)
229                                                        {
230                                                                strmWsValue << "<pre class=\"preWsInfo\">" << CWebUtil::Validate(ref.reference.u.extRef.value.u.charVal) << "</pre>";
231                                                        }
232                                                }
233                                                break;
234                                        }
235                                }
236                                break;
237                        case ARREF_WS_XML_SCHEMA_LOC:
238                                {
239                                        strmWsDesc << "XML Schema";
240                                        switch(ref.reference.u.extRef.value.dataType)
241                                        {
242                                        case AR_DATA_TYPE_CHAR:
243                                                {
244                                                        if(ref.reference.u.extRef.value.u.charVal != NULL)
245                                                        {
246                                                                strmWsValue << "<pre class=\"preWsInfo\">" << CWebUtil::Validate(ref.reference.u.extRef.value.u.charVal) << "</pre>";
247                                                        }
248                                                }
249                                                break;
250                                        }
251                                }
252                                break;
253                        }
254
255                        CTableRow row("");
256                        row.AddCell(CTableCell(strmWsDesc.str()));
257                        row.AddCell(CTableCell(strmWsValue.str()));
258                        tblProp.AddRow(row);
259                }
260        }
261        catch(exception& e)
262        {
263                cout << "EXCEPTION in WebserviceDetails_BaseDocumentation: " << e.what() << endl; 
264        }
265
266        return tblProp.ToXHtml();
267}
Note: See TracBrowser for help on using the repository browser.