xref: /AOO42X/main/sw/source/filter/ww8/tracer.cxx (revision b1c5455db1639c48e26c568e4fa7ee78ca5d60ee)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_sw.hxx"
26 
27 #include <tools/urlobj.hxx>         //INetURLObject
28 #include <sfx2/docfile.hxx>         //SfxMedium
29 #include <filter/msfilter/msfiltertracer.hxx>   //MSFilterTracer
30 #include "tracer.hxx"               //sw::log::Tracer
31 
32 using rtl::OUString;
33 #define CAU(X) RTL_CONSTASCII_USTRINGPARAM(X)
34 #define C2O(X) OUString(CAU(X))
35 #define COMMENT(X) OUString()
36 
37 namespace sw
38 {
39     namespace log
40     {
Tracer(const SfxMedium & rMed)41         Tracer::Tracer(const SfxMedium &rMed)
42             : mpTrace(0)
43         {
44             using namespace ::com::sun::star::uno;
45             using namespace ::com::sun::star::beans;
46             Sequence<PropertyValue> aConfig(1);
47             PropertyValue aPropValue;
48             aPropValue.Value <<=
49                 OUString(rMed.GetURLObject().GetMainURL(
50                     INetURLObject::NO_DECODE));
51             aPropValue.Name = C2O("DocumentURL");
52             aConfig[0] = aPropValue;
53             OUString aTraceConfigPath(CAU("Office.Tracing/Import/Word"));
54             mpTrace = new MSFilterTracer(aTraceConfigPath, &aConfig);
55             if (mpTrace)
56                 mpTrace->StartTracing();
57         }
58 
~Tracer()59         Tracer::~Tracer()
60         {
61             if (mpTrace)
62             {
63                 mpTrace->EndTracing();
64                 delete mpTrace;
65             }
66         }
67 
Log(Problem eProblem)68         void Tracer::Log(Problem eProblem)
69         {
70             if (!mpTrace)
71                 return;
72 
73             OUString sID(CAU("sw"));
74             sID += rtl::OUString::valueOf(static_cast<sal_Int32>(eProblem));
75             switch (eProblem)
76             {
77                 case ePrinterMetrics:
78                     mpTrace->Trace(sID, COMMENT("PrinterMetrics"));
79                     break;
80                 case eExtraLeading:
81                     mpTrace->Trace(sID, COMMENT("Extra Leading"));
82                     break;
83                 case eTabStopDistance:
84                     mpTrace->Trace(sID, COMMENT("Minimum Tab Distance"));
85                     break;
86                 case eDontUseHTMLAutoSpacing:
87                     mpTrace->Trace(sID, COMMENT("HTML AutoSpacing"));
88                     break;
89                 case eAutoWidthFrame:
90                     mpTrace->Trace(sID, COMMENT("AutoWidth"));
91                     break;
92                 case eRowCanSplit:
93                     mpTrace->Trace(sID, COMMENT("Splitable Row"));
94                     break;
95                 case eSpacingBetweenCells:
96                     mpTrace->Trace(sID, COMMENT("Spacing Between Cells"));
97                     break;
98                 case eTabInNumbering:
99                     mpTrace->Trace(sID, COMMENT("Tab In Numbering"));
100                     break;
101                 case eNegativeVertPlacement:
102                     mpTrace->Trace(sID,
103                         COMMENT("Negative Vertical Placement"));
104                     break;
105                 case eAutoColorBg:
106                     mpTrace->Trace(sID,
107                         COMMENT("Bad Background for Autocolour"));
108                     break;
109                 case eTooWideAsChar:
110                     mpTrace->Trace(sID,
111                         COMMENT("Inline wider than TextArea"));
112                     break;
113                 case eAnimatedText:
114                     mpTrace->Trace(sID,
115                         COMMENT("Animated Text"));
116                     break;
117                 case eDontAddSpaceForEqualStyles:
118                     mpTrace->Trace(sID,
119                         COMMENT("Don't Add Space between Equal Style"));
120                     break;
121                 case eBorderDistOutside:
122                     mpTrace->Trace(sID,
123                         COMMENT("Word draws the border outside"));
124                     break;
125                 case eContainsVisualBasic:
126                     mpTrace->Trace(sID, COMMENT("Contains VBA"));
127                     break;
128                 case eContainsWordBasic:
129                     mpTrace->Trace(sID, COMMENT("Contains Word Basic"));
130                     break;
131                 default:
132                     mpTrace->Trace(sID, COMMENT("UNKNOWN"));
133                     break;
134             }
135         }
136 
GetContext(Environment eContext) const137         rtl::OUString Tracer::GetContext(Environment eContext) const
138         {
139             rtl::OUString sContext;
140             switch (eContext)
141             {
142                 case eMacros:
143                 case eDocumentProperties:
144                     sContext = C2O("Global");
145                     break;
146                 case eMainText:
147                     sContext = C2O("Text");
148                     break;
149                 case eSubDoc:
150                     sContext = C2O("Text");
151                     break;
152                 case eTable:
153                     sContext = C2O("Table");
154                     break;
155                 default:
156                     sContext = C2O("UNKNOWN");
157                     break;
158             }
159             return sContext;
160         }
161 
GetDetails(Environment eContext) const162         rtl::OUString Tracer::GetDetails(Environment eContext) const
163         {
164             rtl::OUString sDetails;
165             switch (eContext)
166             {
167                 case eDocumentProperties:
168                     sDetails = C2O("Document Properties");
169                     break;
170                 case eMacros:
171                     sDetails = C2O("Macros");
172                     break;
173                 case eMainText:
174                     sDetails = C2O("MainDocument");
175                     break;
176                 case eSubDoc:
177                     sDetails = C2O("Unknown Subdocument");
178                     break;
179                 default:
180                     sDetails = C2O("UNKNOWN");
181                     break;
182             }
183             return sDetails;
184         }
185 
EnterEnvironment(Environment eContext)186         void Tracer::EnterEnvironment(Environment eContext)
187         {
188             mpTrace->AddAttribute(GetContext(eContext), GetDetails(eContext));
189         }
190 
EnterEnvironment(Environment eContext,const rtl::OUString & rDetails)191         void Tracer::EnterEnvironment(Environment eContext,
192             const rtl::OUString &rDetails)
193         {
194             mpTrace->AddAttribute(GetContext(eContext), rDetails);
195         }
196 
LeaveEnvironment(Environment eContext)197         void Tracer::LeaveEnvironment(Environment eContext)
198         {
199             mpTrace->RemoveAttribute(GetContext(eContext));
200         }
201     }
202 }
203 
204 /* vi:set tabstop=4 shiftwidth=4 expandtab: */
205