xref: /trunk/main/framework/test/typecfg/xml2xcd.cxx (revision 30acf5e8)
16d739b60SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
36d739b60SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
46d739b60SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
56d739b60SAndrew Rist  * distributed with this work for additional information
66d739b60SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
76d739b60SAndrew Rist  * to you under the Apache License, Version 2.0 (the
86d739b60SAndrew Rist  * "License"); you may not use this file except in compliance
96d739b60SAndrew Rist  * with the License.  You may obtain a copy of the License at
106d739b60SAndrew Rist  *
116d739b60SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
126d739b60SAndrew Rist  *
136d739b60SAndrew Rist  * Unless required by applicable law or agreed to in writing,
146d739b60SAndrew Rist  * software distributed under the License is distributed on an
156d739b60SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
166d739b60SAndrew Rist  * KIND, either express or implied.  See the License for the
176d739b60SAndrew Rist  * specific language governing permissions and limitations
186d739b60SAndrew Rist  * under the License.
196d739b60SAndrew Rist  *
206d739b60SAndrew Rist  *************************************************************/
216d739b60SAndrew Rist 
226d739b60SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_framework.hxx"
26cdf0e10cSrcweir 
27cdf0e10cSrcweir //_________________________________________________________________________________________________________________
28cdf0e10cSrcweir //	my own includes
29cdf0e10cSrcweir //_________________________________________________________________________________________________________________
30cdf0e10cSrcweir 
31cdf0e10cSrcweir #define VCL_NEED_BASETSD
32cdf0e10cSrcweir #include <tools/presys.h>
33cdf0e10cSrcweir #include <windows.h>
34cdf0e10cSrcweir #include <tools/postsys.h>
35cdf0e10cSrcweir #include <classes/servicemanager.hxx>
36cdf0e10cSrcweir #include <classes/filtercache.hxx>
37cdf0e10cSrcweir #include <macros/generic.hxx>
38cdf0e10cSrcweir #include <macros/debug.hxx>
39cdf0e10cSrcweir #include <services.h>
40cdf0e10cSrcweir #include <filterflags.h>
41cdf0e10cSrcweir 
42cdf0e10cSrcweir //_________________________________________________________________________________________________________________
43cdf0e10cSrcweir //	interface includes
44cdf0e10cSrcweir //_________________________________________________________________________________________________________________
45cdf0e10cSrcweir #include <com/sun/star/lang/XMultiServiceFactory.hpp>
46cdf0e10cSrcweir 
47cdf0e10cSrcweir //_________________________________________________________________________________________________________________
48cdf0e10cSrcweir //	other includes
49cdf0e10cSrcweir //_________________________________________________________________________________________________________________
50cdf0e10cSrcweir #include <comphelper/processfactory.hxx>
51cdf0e10cSrcweir #include <unotools/processfactory.hxx>
52cdf0e10cSrcweir #include <vos/process.hxx>
53cdf0e10cSrcweir #include <rtl/ustring.hxx>
54cdf0e10cSrcweir #include <rtl/ustrbuf.hxx>
55cdf0e10cSrcweir 
56cdf0e10cSrcweir #include <vcl/event.hxx>
57cdf0e10cSrcweir #include <vcl/svapp.hxx>
58cdf0e10cSrcweir #include <vcl/wrkwin.hxx>
59cdf0e10cSrcweir #include <vcl/msgbox.hxx>
60cdf0e10cSrcweir 
61cdf0e10cSrcweir //_________________________________________________________________________________________________________________
62cdf0e10cSrcweir //	namespace
63cdf0e10cSrcweir //_________________________________________________________________________________________________________________
64cdf0e10cSrcweir 
65cdf0e10cSrcweir using namespace ::framework ;
66cdf0e10cSrcweir 
67cdf0e10cSrcweir //_________________________________________________________________________________________________________________
68cdf0e10cSrcweir //	const
69cdf0e10cSrcweir //_________________________________________________________________________________________________________________
70cdf0e10cSrcweir 
71cdf0e10cSrcweir //_________________________________________________________________________________________________________________
72cdf0e10cSrcweir //	defines
73cdf0e10cSrcweir //_________________________________________________________________________________________________________________
74cdf0e10cSrcweir 
75cdf0e10cSrcweir /*
76cdf0e10cSrcweir     Versions:       1)  first revision
77cdf0e10cSrcweir                         - one entry for every property
78cdf0e10cSrcweir                         - full loclized values
79cdf0e10cSrcweir                     2)  new property "Order" for filters ... but not right set!
80cdf0e10cSrcweir                         all values are 0
81cdf0e10cSrcweir                     3)  decrease size of xml file
82cdf0e10cSrcweir                         - don't write full localized values
83*30acf5e8Spfg                         - use own formatted string for all non localized values
8407a3d7f1SPedro Giffuni                         - separate "Installed" flag for filters
85cdf0e10cSrcweir                     4)  set right values for "Order" property of filters
86cdf0e10cSrcweir                     5)  support for ContentHandler
87cdf0e10cSrcweir               draft 6)  reactivate old filter names
88cdf0e10cSrcweir           ??? draft 7)  split xml into standard/optional => use DRAFT_SPLIT_VERSION till this version is well known!
89cdf0e10cSrcweir  */
90cdf0e10cSrcweir #define DRAFT_SPLIT_VERSION             7
91cdf0e10cSrcweir 
92cdf0e10cSrcweir #define ARGUMENT_PACKAGE_STANDARD       DECLARE_ASCII("-pas=")          // argument for package name of standard filters
93cdf0e10cSrcweir #define ARGUMENT_PACKAGE_ADDITIONAL     DECLARE_ASCII("-paa=")          // argument for package name of additional filters
94cdf0e10cSrcweir #define ARGUMENT_WRITEABLE              DECLARE_ASCII("-wri=")          // argument for "writeable"                         [true|false]
95cdf0e10cSrcweir #define ARGUMENT_VERSION_INPUT          DECLARE_ASCII("-vin=")          // argument for file version to read                [1|2|3]
96cdf0e10cSrcweir #define ARGUMENT_VERSION_OUTPUT         DECLARE_ASCII("-vou=")          // argument for file version to write               [1|2|3]
97cdf0e10cSrcweir 
9807a3d7f1SPedro Giffuni #define ARGUMENTLENGTH                  5                               // All arguments should have the same length ... it's better to detect it!
99cdf0e10cSrcweir #define ARGUMENTFOUND                   0                               // OUString::compareTo returns 0 if searched string match given one
100cdf0e10cSrcweir 
101cdf0e10cSrcweir #define WRITEABLE_ON                    DECLARE_ASCII("true" )
102cdf0e10cSrcweir #define WRITEABLE_OFF                   DECLARE_ASCII("false")
103cdf0e10cSrcweir 
104cdf0e10cSrcweir #define MINARGUMENTCOUNT                5                               // no optional arguments allowed yet!
105cdf0e10cSrcweir 
106cdf0e10cSrcweir #define LISTFILE_STANDARDTYPES          "typelist_standard.txt"
107cdf0e10cSrcweir #define LISTFILE_ADDITIONALTYPES        "typelist_additional.txt"
108cdf0e10cSrcweir #define LISTFILE_STANDARDFILTER         "filterlist_standard.txt"
109cdf0e10cSrcweir #define LISTFILE_ADDITIONALFILTER       "filterlist_additional.txt"
110cdf0e10cSrcweir #define SCPFILE_STANDARD                "scp_standard.txt"
111cdf0e10cSrcweir #define SCPFILE_ADDITIONAL              "scp_additional.txt"
112cdf0e10cSrcweir 
113cdf0e10cSrcweir //_________________________________________________________________________________________________________________
114cdf0e10cSrcweir //	declarations
115cdf0e10cSrcweir //_________________________________________________________________________________________________________________
116cdf0e10cSrcweir 
117cdf0e10cSrcweir /*-***************************************************************************************************************/
118cdf0e10cSrcweir struct AppMember
119cdf0e10cSrcweir {
120cdf0e10cSrcweir         FilterCache*                pFilterCache                ; // pointer to configuration
121cdf0e10cSrcweir         StringHash                  aOldFilterNamesHash         ; // converter tabel to restaurate old filter names
122cdf0e10cSrcweir         EFilterPackage              ePackage                    ; // specify which package should be used => specify using of file name and buffer too!
123cdf0e10cSrcweir //        ::rtl::OUString             sFileNameStandard           ; // file name of our standard filter cfg
124cdf0e10cSrcweir //        ::rtl::OUString             sFileNameAdditional         ; // file name of our additional filter cfg
125cdf0e10cSrcweir         ::rtl::OUString             sPackageStandard            ; // package name of our standard filter cfg
126cdf0e10cSrcweir         ::rtl::OUString             sPackageAdditional          ; // package name of our additional filter cfg
127cdf0e10cSrcweir         ::rtl::OUStringBuffer       sBufferStandard             ; // buffer of our standard filter cfg
128cdf0e10cSrcweir         ::rtl::OUStringBuffer       sBufferAdditional           ; // buffer of our standard filter cfg
129cdf0e10cSrcweir         ::rtl::OUStringBuffer       sNew2OldSCPStandard         ; // setup script to convert new to old filternames (standard filter)
130cdf0e10cSrcweir         ::rtl::OUStringBuffer       sNew2OldSCPAdditional       ; // setup script to convert new to old filternames (additional filter)
131cdf0e10cSrcweir         ::rtl::OUStringBuffer       sStandardFilterList         ;
132cdf0e10cSrcweir         ::rtl::OUStringBuffer       sAdditionalFilterList       ;
133cdf0e10cSrcweir         ::rtl::OUStringBuffer       sStandardTypeList           ;
134cdf0e10cSrcweir         ::rtl::OUStringBuffer       sAdditionalTypeList         ;
135cdf0e10cSrcweir         sal_Bool                    bWriteable                  ; // enable/disable writable configuration items
136cdf0e10cSrcweir         sal_Int32                   nVersionInput               ; // format version of input xml file
137cdf0e10cSrcweir         sal_Int32                   nVersionOutput              ; // format version of output xcd file
138cdf0e10cSrcweir 
139cdf0e10cSrcweir         sal_Int32                   nOriginalTypes              ;
140cdf0e10cSrcweir         sal_Int32                   nOriginalFilters            ;
141cdf0e10cSrcweir         sal_Int32                   nOriginalDetectors          ;
142cdf0e10cSrcweir         sal_Int32                   nOriginalLoaders            ;
143cdf0e10cSrcweir         sal_Int32                   nOriginalContentHandlers    ;
144cdf0e10cSrcweir 
145cdf0e10cSrcweir         sal_Int32                   nWrittenTypes               ;
146cdf0e10cSrcweir         sal_Int32                   nWrittenFilters             ;
147cdf0e10cSrcweir         sal_Int32                   nWrittenDetectors           ;
148cdf0e10cSrcweir         sal_Int32                   nWrittenLoaders             ;
149cdf0e10cSrcweir         sal_Int32                   nWrittenContentHandlers     ;
150cdf0e10cSrcweir };
151cdf0e10cSrcweir 
152cdf0e10cSrcweir /*-***************************************************************************************************************/
153cdf0e10cSrcweir class XCDGenerator : public Application
154cdf0e10cSrcweir {
155cdf0e10cSrcweir 	//*************************************************************************************************************
156cdf0e10cSrcweir 	public:
157cdf0e10cSrcweir 		void Main();
158cdf0e10cSrcweir 
159cdf0e10cSrcweir 	//*************************************************************************************************************
160cdf0e10cSrcweir 	private:
161cdf0e10cSrcweir         void                    impl_printCopyright                     (                                                                                       ); // print copyright to stdout :-)
162cdf0e10cSrcweir         void                    impl_printSyntax                        (                                                                                       ); // print help to stout for user
163cdf0e10cSrcweir         void                    impl_parseCommandLine                   (           AppMember&                              rMember                             ); // parse command line arguments and fill given struct
164cdf0e10cSrcweir 
165cdf0e10cSrcweir         void                    impl_generateXCD                        (                                                                                       ); // generate all xcd files by using current configuration
166cdf0e10cSrcweir         void                    impl_generateCopyright                  (                                                                                       ); // generate copyrights
167cdf0e10cSrcweir         void                    impl_generateTypeTemplate               (                                                                                       ); // generate templates ...
168cdf0e10cSrcweir         void                    impl_generateFilterTemplate             (                                                                                       );
169cdf0e10cSrcweir         void                    impl_generateDetectorTemplate           (                                                                                       );
170cdf0e10cSrcweir         void                    impl_generateLoaderTemplate             (                                                                                       );
171cdf0e10cSrcweir         void                    impl_generateTypeSet                    (                                                                                       ); // generate sets
172cdf0e10cSrcweir         void                    impl_generateFilterSet                  (                                                                                       );
173cdf0e10cSrcweir         void                    impl_generateDetectorSet                (                                                                                       );
174cdf0e10cSrcweir         void                    impl_generateLoaderSet                  (                                                                                       );
175cdf0e10cSrcweir         void                    impl_generateDefaults                   (                                                                                       ); // generate defaults
176cdf0e10cSrcweir         void                    impl_generateContentHandlerTemplate     (                                                                                       );
177cdf0e10cSrcweir         void                    impl_generateContentHandlerSet          (                                                                                       );
178cdf0e10cSrcweir         void                    impl_generateFilterFlagTemplate         (   const   ::rtl::OUString&                        sName                               ,  // helper to write atomic elements
179cdf0e10cSrcweir                                                                                     sal_Int32                               nValue                              ,
180cdf0e10cSrcweir                                                                             const   ::rtl::OString&                         sDescription = ::rtl::OString()     );
181cdf0e10cSrcweir         void                    impl_generateIntProperty                (           ::rtl::OUStringBuffer&                  sXCD                                ,
182cdf0e10cSrcweir                                                                             const   ::rtl::OUString&                        sName                               ,
183cdf0e10cSrcweir                                                                                     sal_Int32                               nValue                              );
184cdf0e10cSrcweir         void                    impl_generateBoolProperty               (           ::rtl::OUStringBuffer&                  sXCD                                ,
185cdf0e10cSrcweir                                                                             const   ::rtl::OUString&                        sName                               ,
186cdf0e10cSrcweir                                                                                     sal_Bool                                bValue                              );
187cdf0e10cSrcweir         void                    impl_generateStringProperty             (           ::rtl::OUStringBuffer&                  sXCD                                ,
188cdf0e10cSrcweir                                                                             const   ::rtl::OUString&                        sName                               ,
189cdf0e10cSrcweir                                                                             const   ::rtl::OUString&                        sValue                              );
190cdf0e10cSrcweir         void                    impl_generateStringListProperty         (           ::rtl::OUStringBuffer&                  sXCD                                ,
191cdf0e10cSrcweir                                                                             const   ::rtl::OUString&                        sName                               ,
192cdf0e10cSrcweir                                                                             const   ::framework::StringList&                lValue                              );
193cdf0e10cSrcweir         void                    impl_generateUINamesProperty            (           ::rtl::OUStringBuffer&                  sXCD                                ,
194cdf0e10cSrcweir                                                                             const   ::rtl::OUString&                        sName                               ,
195cdf0e10cSrcweir                                                                             const   StringHash&                             lUINames                            );
196cdf0e10cSrcweir         ::rtl::OUString         impl_getOldFilterName                   (   const   ::rtl::OUString&                        sNewName                            ); // convert filter names to old format
197cdf0e10cSrcweir 
198cdf0e10cSrcweir         static void             impl_classifyType                       (   const   AppMember&                              rData                               ,
199cdf0e10cSrcweir                                                                             const   ::rtl::OUString&                        sTypeName                           ,
200cdf0e10cSrcweir                                                                                     EFilterPackage&                         ePackage                            ); // classify type as STANDARD or ADDITIONAL one
201cdf0e10cSrcweir         static void             impl_classifyFilter                     (   const   AppMember&                              rData                               ,
202cdf0e10cSrcweir                                                                             const   ::rtl::OUString&                        sFilterName                         ,
203cdf0e10cSrcweir                                                                                     EFilterPackage&                         ePackage                            ,
204cdf0e10cSrcweir                                                                                     sal_Int32&                              nOrder                              ); // classify filter as STANDARD or ADDITIONAL filter, set order of standard filter too
205cdf0e10cSrcweir         static ::rtl::OUString  impl_encodeSpecialSigns                 (   const   ::rtl::OUString&                        sValue                              ); // encode strings for xml
206cdf0e10cSrcweir         static sal_Unicode      impl_defineSeperator                    (   const   ::framework::StringList&                lList                               ); // search seperator for lists
207cdf0e10cSrcweir         static void             impl_initFilterHashNew2Old              (           StringHash&                             aHash                               ); // initialize converter table to restaurate old filter names
20807a3d7f1SPedro Giffuni         static void             impl_orderAlphabetical                  (           css::uno::Sequence< ::rtl::OUString >&  lList                               ); // sort stringlist of internal type-, filter- ... names in alphabetical order to generate xcd files every time in the same way
209cdf0e10cSrcweir         static sal_Bool         impl_isUsAsciiAlphaDigit                (           sal_Unicode                             c                                   ,
210cdf0e10cSrcweir                                                                                     sal_Bool                                bDigitAllowed = sal_True            );
211cdf0e10cSrcweir         static ::rtl::OUString  impl_encodeSetName                      (   const   ::rtl::OUString&                        rSource                             );
212cdf0e10cSrcweir 
213cdf0e10cSrcweir     //*************************************************************************************************************
214cdf0e10cSrcweir 	private:
215cdf0e10cSrcweir         AppMember       m_aData;
216cdf0e10cSrcweir 
217cdf0e10cSrcweir };  //  class XCDGenerator
218cdf0e10cSrcweir 
219cdf0e10cSrcweir //_________________________________________________________________________________________________________________
220cdf0e10cSrcweir //	global variables
221cdf0e10cSrcweir //_________________________________________________________________________________________________________________
222cdf0e10cSrcweir 
223cdf0e10cSrcweir XCDGenerator gGenerator;
224cdf0e10cSrcweir 
225cdf0e10cSrcweir //*****************************************************************************************************************
Main()226cdf0e10cSrcweir void XCDGenerator::Main()
227cdf0e10cSrcweir {
228cdf0e10cSrcweir     // Must be :-)
229cdf0e10cSrcweir //    impl_printCopyright();
230cdf0e10cSrcweir 
231cdf0e10cSrcweir     // Init global servicemanager and set it.
23207a3d7f1SPedro Giffuni     // It's necessary for other services ... e.g. configuration.
233cdf0e10cSrcweir     ServiceManager aManager;
234cdf0e10cSrcweir     ::comphelper::setProcessServiceFactory( aManager.getGlobalUNOServiceManager() );
235cdf0e10cSrcweir     ::utl::setProcessServiceFactory      ( aManager.getGlobalUNOServiceManager() );
236cdf0e10cSrcweir 
237cdf0e10cSrcweir     // Get optional commands from command line.
238cdf0e10cSrcweir     impl_parseCommandLine( m_aData );
239cdf0e10cSrcweir 
240cdf0e10cSrcweir     // initialize converter table to match new to old filter names!
241cdf0e10cSrcweir     if( m_aData.nVersionOutput == 6 && m_aData.nVersionInput < 6 )
242cdf0e10cSrcweir     {
243cdf0e10cSrcweir         XCDGenerator::impl_initFilterHashNew2Old( m_aData.aOldFilterNamesHash );
244cdf0e10cSrcweir     }
245cdf0e10cSrcweir 
246cdf0e10cSrcweir     // Create access to current set filter configuration.
247cdf0e10cSrcweir     // Attention: Please use it for a full fat office installation only!!
248cdf0e10cSrcweir     //            We need an installation with ALL filters.
249cdf0e10cSrcweir     // Member m_pData is used in some impl-methods directly ...
250cdf0e10cSrcweir     m_aData.pFilterCache = new FilterCache( m_aData.nVersionInput, CONFIG_MODE_ALL_LOCALES );
251cdf0e10cSrcweir 
252cdf0e10cSrcweir     // Get some statistic informations of current filled filter cache ... (e.g. count of current activae filters)
253cdf0e10cSrcweir     // because we need it to check if all filters are converted and written to disk.
25407a3d7f1SPedro Giffuni     // May be it's possible to lose some of them during conversion!!!
255cdf0e10cSrcweir     m_aData.nOriginalTypes     = m_aData.pFilterCache->getAllTypeNames().getLength()     ;
256cdf0e10cSrcweir     m_aData.nOriginalFilters   = m_aData.pFilterCache->getAllFilterNames().getLength()   ;
257cdf0e10cSrcweir     m_aData.nOriginalDetectors = m_aData.pFilterCache->getAllDetectorNames().getLength() ;
258cdf0e10cSrcweir     m_aData.nOriginalLoaders   = m_aData.pFilterCache->getAllLoaderNames().getLength()   ;
259cdf0e10cSrcweir     if( m_aData.nVersionInput >= 5 )
260cdf0e10cSrcweir     {
261cdf0e10cSrcweir         m_aData.nOriginalContentHandlers  = m_aData.pFilterCache->getAllContentHandlerNames().getLength()  ;
262cdf0e10cSrcweir     }
263cdf0e10cSrcweir 
264cdf0e10cSrcweir     // Start generation of xcd file(s).
265cdf0e10cSrcweir     impl_generateXCD();
266cdf0e10cSrcweir 
267cdf0e10cSrcweir     // Warn programmer if some items couldn't written to file!
268cdf0e10cSrcweir     LOG_ASSERT2( m_aData.nOriginalTypes    != m_aData.nWrittenTypes    , "XCDGenerator::Main()", "Generated xcd file could be invalid ... because I miss some types!"     )
269cdf0e10cSrcweir     LOG_ASSERT2( m_aData.nOriginalFilters  != m_aData.nWrittenFilters  , "XCDGenerator::Main()", "Generated xcd file could be invalid ... because I miss some filters!"   )
270cdf0e10cSrcweir     LOG_ASSERT2( m_aData.nOriginalDetectors!= m_aData.nWrittenDetectors, "XCDGenerator::Main()", "Generated xcd file could be invalid ... because I miss some detectors!" )
271cdf0e10cSrcweir     LOG_ASSERT2( m_aData.nOriginalLoaders  != m_aData.nWrittenLoaders  , "XCDGenerator::Main()", "Generated xcd file could be invalid ... because I miss some loaders!"   )
272cdf0e10cSrcweir 
273cdf0e10cSrcweir     // Free memory.
274cdf0e10cSrcweir     delete m_aData.pFilterCache;
275cdf0e10cSrcweir     m_aData.pFilterCache = NULL;
276cdf0e10cSrcweir }
277cdf0e10cSrcweir 
278cdf0e10cSrcweir /*-************************************************************************************************************//**
279cdf0e10cSrcweir     @short      print some info messages to stderr
280cdf0e10cSrcweir     @descr      We must show an copyright or help for using this file.
281cdf0e10cSrcweir                 This two methods do that.
282cdf0e10cSrcweir 
283cdf0e10cSrcweir     @seealso    -
284cdf0e10cSrcweir 
285cdf0e10cSrcweir     @param      -
286cdf0e10cSrcweir     @return     -
287cdf0e10cSrcweir 
288cdf0e10cSrcweir     @onerror    -
289cdf0e10cSrcweir *//*-*************************************************************************************************************/
impl_printCopyright()290cdf0e10cSrcweir void XCDGenerator::impl_printCopyright()
291cdf0e10cSrcweir {
2922934064bSHerbert Dürr     fprintf( stderr, "\nLicensed to the Apache Software Foundation.\n" );
293cdf0e10cSrcweir }
294cdf0e10cSrcweir 
295cdf0e10cSrcweir //*****************************************************************************************************************
impl_printSyntax()296cdf0e10cSrcweir void XCDGenerator::impl_printSyntax()
297cdf0e10cSrcweir {
298cdf0e10cSrcweir     // It's not possible to print it out to stdout in a svdem binary :-(
299cdf0e10cSrcweir     // So we show an assert.
300cdf0e10cSrcweir     ::rtl::OStringBuffer sBuffer( 500 );
301cdf0e10cSrcweir     sBuffer.append( "\nusing: xml2xcd -fis=<file standard filter> -fia=<file additional filter> -pas=<package standard filter> -paa=<package additional filter> -vin=<version input> -vou=<version output> [-wri=<true|false>]\n\n" );
302cdf0e10cSrcweir     sBuffer.append( "\tneccessary parameters:\n"                                                                                                                                                                                    );
303cdf0e10cSrcweir     sBuffer.append( "\t\t-fis\tname of output file in system notation\n"                                                                                                                                                            );
304cdf0e10cSrcweir     sBuffer.append( "\t\t-fia\tname of output file in system notation\n"                                                                                                                                                            );
305cdf0e10cSrcweir     sBuffer.append( "\t\t-pas\tpackage of standard filters\n"                                                                                                                                                                       );
306cdf0e10cSrcweir     sBuffer.append( "\t\t-paa\tpackage of additional filters\n"                                                                                                                                                                     );
307cdf0e10cSrcweir     sBuffer.append( "\t\t-vin\tformat version of input xml file\n"                                                                                                                                                                  );
308cdf0e10cSrcweir     sBuffer.append( "\t\t-vou\tformat version of generated xcd file\n\n"                                                                                                                                                            );
309cdf0e10cSrcweir     sBuffer.append( "\toptional parameters:\n"                                                                                                                                                                                      );
310cdf0e10cSrcweir     sBuffer.append( "\t\t-wri\tconfig items should be writeable ... [true|false]\n"                                                                                                                                                 );
311cdf0e10cSrcweir     LOG_ERROR( "", sBuffer.makeStringAndClear() )
312cdf0e10cSrcweir }
313cdf0e10cSrcweir 
314cdf0e10cSrcweir /*-************************************************************************************************************//**
315cdf0e10cSrcweir     @short      analyze command line arguments
316cdf0e10cSrcweir     @descr      Created binary accept different command line arguments. These parameters
317cdf0e10cSrcweir                 regulate creation of xcd file. Follow arguments are supported:
318cdf0e10cSrcweir                     "-fis=<filename of standard xcd>"
319cdf0e10cSrcweir                     "-fia=<filename of additional xcd>"
320cdf0e10cSrcweir                     "-wri=<writeable>[true|false]"
321cdf0e10cSrcweir                     "-vin=<version of input file>[1|2|3]"
322cdf0e10cSrcweir                     "-vou=<version of output file>[1|2|3]"
323cdf0e10cSrcweir 
324cdf0e10cSrcweir     @seealso    -
325cdf0e10cSrcweir 
326cdf0e10cSrcweir     @param      "rMember", reference to struct of global application member to fill arguments in it
32707a3d7f1SPedro Giffuni     @return     right filled member struct or unchanged struct if an error occur!
328cdf0e10cSrcweir 
329cdf0e10cSrcweir     @onerror    We do nothing - or warn programmer!
330cdf0e10cSrcweir *//*-*************************************************************************************************************/
impl_parseCommandLine(AppMember & rMember)331cdf0e10cSrcweir void XCDGenerator::impl_parseCommandLine( AppMember& rMember )
332cdf0e10cSrcweir {
333cdf0e10cSrcweir     ::vos::OStartupInfo aInfo                                   ;
334cdf0e10cSrcweir     ::rtl::OUString     sArgument                               ;
335cdf0e10cSrcweir     sal_Int32           nArgument   = 0                         ;
336cdf0e10cSrcweir     sal_Int32           nCount      = aInfo.getCommandArgCount();
337cdf0e10cSrcweir     sal_Int32           nMinCount   = 0                         ;
338cdf0e10cSrcweir 
339cdf0e10cSrcweir 	while( nArgument<nCount )
340cdf0e10cSrcweir 	{
341cdf0e10cSrcweir 		aInfo.getCommandArg( nArgument, sArgument );
342cdf0e10cSrcweir /*OBSOLETE
343cdf0e10cSrcweir 		//_____________________________________________________________________________________________________
344cdf0e10cSrcweir         // look for "-fis=..."
345cdf0e10cSrcweir         if( sArgument.compareTo( ARGUMENT_FILENAME_STANDARD, ARGUMENTLENGTH ) == ARGUMENTFOUND )
346cdf0e10cSrcweir 		{
347cdf0e10cSrcweir             rMember.sFileNameStandard = sArgument.copy( ARGUMENTLENGTH, sArgument.getLength()-ARGUMENTLENGTH );
348cdf0e10cSrcweir             ++nMinCount;
349cdf0e10cSrcweir 		}
350cdf0e10cSrcweir         else
351cdf0e10cSrcweir 		//_____________________________________________________________________________________________________
352cdf0e10cSrcweir         // look for "-fia=..."
353cdf0e10cSrcweir         if( sArgument.compareTo( ARGUMENT_FILENAME_ADDITIONAL, ARGUMENTLENGTH ) == ARGUMENTFOUND )
354cdf0e10cSrcweir 		{
355cdf0e10cSrcweir             rMember.sFileNameAdditional = sArgument.copy( ARGUMENTLENGTH, sArgument.getLength()-ARGUMENTLENGTH );
356cdf0e10cSrcweir             ++nMinCount;
357cdf0e10cSrcweir 		}
358cdf0e10cSrcweir         else
359cdf0e10cSrcweir */
360cdf0e10cSrcweir 		//_____________________________________________________________________________________________________
361cdf0e10cSrcweir         // look for "-pas=..."
362cdf0e10cSrcweir         if( sArgument.compareTo( ARGUMENT_PACKAGE_STANDARD, ARGUMENTLENGTH ) == ARGUMENTFOUND )
363cdf0e10cSrcweir 		{
364cdf0e10cSrcweir             rMember.sPackageStandard = sArgument.copy( ARGUMENTLENGTH, sArgument.getLength()-ARGUMENTLENGTH );
365cdf0e10cSrcweir             ++nMinCount;
366cdf0e10cSrcweir 		}
367cdf0e10cSrcweir         else
368cdf0e10cSrcweir 		//_____________________________________________________________________________________________________
369cdf0e10cSrcweir         // look for "-paa=..."
370cdf0e10cSrcweir         if( sArgument.compareTo( ARGUMENT_PACKAGE_ADDITIONAL, ARGUMENTLENGTH ) == ARGUMENTFOUND )
371cdf0e10cSrcweir 		{
372cdf0e10cSrcweir             rMember.sPackageAdditional = sArgument.copy( ARGUMENTLENGTH, sArgument.getLength()-ARGUMENTLENGTH );
373cdf0e10cSrcweir             ++nMinCount;
374cdf0e10cSrcweir 		}
375cdf0e10cSrcweir         else
376cdf0e10cSrcweir 		//_____________________________________________________________________________________________________
377cdf0e10cSrcweir         // look for "-wri=..."
378cdf0e10cSrcweir         if( sArgument.compareTo( ARGUMENT_WRITEABLE, ARGUMENTLENGTH ) == ARGUMENTFOUND )
379cdf0e10cSrcweir 		{
380cdf0e10cSrcweir             ::rtl::OUString sWriteable = sArgument.copy( ARGUMENTLENGTH, sArgument.getLength()-ARGUMENTLENGTH );
381cdf0e10cSrcweir             if( sWriteable == WRITEABLE_ON )
382cdf0e10cSrcweir             {
383cdf0e10cSrcweir                 rMember.bWriteable = sal_True;
384cdf0e10cSrcweir             }
385cdf0e10cSrcweir             else
386cdf0e10cSrcweir             {
387cdf0e10cSrcweir                 rMember.bWriteable = sal_False;
388cdf0e10cSrcweir             }
389cdf0e10cSrcweir             ++nMinCount;
390cdf0e10cSrcweir 		}
391cdf0e10cSrcweir 		//_____________________________________________________________________________________________________
392cdf0e10cSrcweir         // look for "-vin=..."
393cdf0e10cSrcweir         if( sArgument.compareTo( ARGUMENT_VERSION_INPUT, ARGUMENTLENGTH ) == ARGUMENTFOUND )
394cdf0e10cSrcweir 		{
395cdf0e10cSrcweir             ::rtl::OUString sVersion = sArgument.copy( ARGUMENTLENGTH, sArgument.getLength()-ARGUMENTLENGTH );
396cdf0e10cSrcweir             rMember.nVersionInput = sVersion.toInt32();
397cdf0e10cSrcweir             ++nMinCount;
398cdf0e10cSrcweir 		}
399cdf0e10cSrcweir 		//_____________________________________________________________________________________________________
400cdf0e10cSrcweir         // look for "-vou=..."
401cdf0e10cSrcweir         if( sArgument.compareTo( ARGUMENT_VERSION_OUTPUT, ARGUMENTLENGTH ) == ARGUMENTFOUND )
402cdf0e10cSrcweir 		{
403cdf0e10cSrcweir             ::rtl::OUString sVersion = sArgument.copy( ARGUMENTLENGTH, sArgument.getLength()-ARGUMENTLENGTH );
404cdf0e10cSrcweir             rMember.nVersionOutput = sVersion.toInt32();
405cdf0e10cSrcweir             ++nMinCount;
406cdf0e10cSrcweir 		}
407cdf0e10cSrcweir 
408cdf0e10cSrcweir 		++nArgument;
409cdf0e10cSrcweir 	}
410cdf0e10cSrcweir 
411cdf0e10cSrcweir     // Show help if user don't call us right!
412cdf0e10cSrcweir     if( nMinCount != MINARGUMENTCOUNT )
413cdf0e10cSrcweir     {
414cdf0e10cSrcweir         impl_printSyntax();
415cdf0e10cSrcweir         exit(-1);
416cdf0e10cSrcweir     }
417cdf0e10cSrcweir }
418cdf0e10cSrcweir 
419cdf0e10cSrcweir /*-************************************************************************************************************//**
420cdf0e10cSrcweir     @short      regulate generation of complete xcd file(s)
421cdf0e10cSrcweir     @descr      This method is the toppest one and implement the global structure of generated xcd file(s).
422cdf0e10cSrcweir                 We create a unicode string buffer for complete xcd file in memory ...
423cdf0e10cSrcweir                 use different helper methods to fill it ...
424cdf0e10cSrcweir                 and write it to disk at the end of this method!
425cdf0e10cSrcweir 
426cdf0e10cSrcweir     @seealso    struct AppMember
427cdf0e10cSrcweir 
428cdf0e10cSrcweir     @param      -
429cdf0e10cSrcweir     @return     -
430cdf0e10cSrcweir 
431cdf0e10cSrcweir     @onerror    -
432cdf0e10cSrcweir *//*-*************************************************************************************************************/
impl_generateXCD()433cdf0e10cSrcweir void XCDGenerator::impl_generateXCD()
434cdf0e10cSrcweir {
435cdf0e10cSrcweir     impl_generateCopyright();
436cdf0e10cSrcweir 
437cdf0e10cSrcweir     // Write header
438cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii     ( "\n<!-- PLEASE DON'T CHANGE TEMPLATES OR FILE FORMAT BY HAND! USE \"XML2XCD.EXE\" TO DO THAT. THANKS. -->\n\n"                                                                                                                                                               );
439cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii     ( "<!DOCTYPE schema:component SYSTEM \"../../../../schema/schema.description.dtd\">\n"                                                                                                                                                                                         );
440cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii     ( "<schema:component cfg:name=\""                                                                                                                                                                                                                                              );
441cdf0e10cSrcweir     m_aData.sBufferStandard.append          ( m_aData.sPackageStandard                                                                                                                                                                                                                                                     );
442cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii     ( "\" cfg:package=\"org.openoffice.Office\" xml:lang=\"en-US\" xmlns:schema=\"http://openoffice.org/2000/registry/schema/description\" xmlns:default=\"http://openoffice.org/2000/registry/schema/default\" xmlns:cfg=\"http://openoffice.org/2000/registry/instance\">\n"     );
443cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii     ( "\t<schema:templates>\n"                                                                                                                                                                                                                                                     );
444cdf0e10cSrcweir 
445cdf0e10cSrcweir     if( m_aData.nVersionOutput >= DRAFT_SPLIT_VERSION )
446cdf0e10cSrcweir     {
447cdf0e10cSrcweir         m_aData.sBufferAdditional.appendAscii   ( "\n<!-- PLEASE DON'T CHANGE TEMPLATES OR FILE FORMAT BY HAND! USE \"XML2XCD.EXE\" TO DO THAT. THANKS. -->\n\n"                                                                                                                                                           );
448cdf0e10cSrcweir         m_aData.sBufferAdditional.appendAscii   ( "<!DOCTYPE schema:component SYSTEM \"../../../../schema/schema.description.dtd\">\n"                                                                                                                                                                                     );
449cdf0e10cSrcweir         m_aData.sBufferAdditional.appendAscii   ( "<schema:component cfg:name=\""                                                                                                                                                                                                                                          );
450cdf0e10cSrcweir         m_aData.sBufferAdditional.append        ( m_aData.sPackageAdditional                                                                                                                                                                                                                                               );
451cdf0e10cSrcweir         m_aData.sBufferAdditional.appendAscii   ( "\" cfg:package=\"org.openoffice.Office\" xml:lang=\"en-US\" xmlns:schema=\"http://openoffice.org/2000/registry/schema/description\" xmlns:default=\"http://openoffice.org/2000/registry/schema/default\" xmlns:cfg=\"http://openoffice.org/2000/registry/instance\">\n" );
452cdf0e10cSrcweir         m_aData.sBufferAdditional.appendAscii   ( "\t<schema:import cfg:name=\""                                                                                                                                                                                                                                             );
453cdf0e10cSrcweir         m_aData.sBufferAdditional.append        ( m_aData.sPackageStandard                                                                                                                                                                                                                                                 );
454cdf0e10cSrcweir         m_aData.sBufferAdditional.appendAscii   ( "\"/>\n"                                                                                                                                                                                                                                                                 );
455cdf0e10cSrcweir     }
456cdf0e10cSrcweir 
457cdf0e10cSrcweir     // Follow ...generate... methods to nothing for additional filters!
458cdf0e10cSrcweir     impl_generateTypeTemplate    ();
459cdf0e10cSrcweir     impl_generateFilterTemplate  ();
460cdf0e10cSrcweir     impl_generateDetectorTemplate();
461cdf0e10cSrcweir     if( m_aData.nVersionOutput >= 5 )
462cdf0e10cSrcweir     {
463cdf0e10cSrcweir         impl_generateContentHandlerTemplate ();
464cdf0e10cSrcweir     }
465cdf0e10cSrcweir     impl_generateLoaderTemplate  ();
466cdf0e10cSrcweir 
467cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii     ( "\t</schema:templates>\n"                     );
468cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii     ( "<schema:schema cfg:localized=\"false\">\n"   );
469cdf0e10cSrcweir 
470cdf0e10cSrcweir     if( m_aData.nVersionOutput >= DRAFT_SPLIT_VERSION )
471cdf0e10cSrcweir     {
472cdf0e10cSrcweir         m_aData.sBufferAdditional.appendAscii( "\t<schema:schema cfg:localized=\"false\">\n"   );
473cdf0e10cSrcweir     }
474cdf0e10cSrcweir 
475cdf0e10cSrcweir     impl_generateTypeSet         ();
476cdf0e10cSrcweir     impl_generateFilterSet       ();
477cdf0e10cSrcweir     impl_generateDetectorSet     ();
478cdf0e10cSrcweir     if( m_aData.nVersionInput >= 5 )
479cdf0e10cSrcweir     {
480cdf0e10cSrcweir         impl_generateContentHandlerSet  ();
481cdf0e10cSrcweir     }
482cdf0e10cSrcweir     impl_generateLoaderSet       ();
483cdf0e10cSrcweir     impl_generateDefaults        ();
484cdf0e10cSrcweir 
485cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii     ( "\t</schema:schema>\n"  );
486cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii     ( "</schema:component>\n" );
487cdf0e10cSrcweir 
488cdf0e10cSrcweir     if( m_aData.nVersionOutput >= DRAFT_SPLIT_VERSION )
489cdf0e10cSrcweir     {
490cdf0e10cSrcweir         m_aData.sBufferAdditional.appendAscii ( "\t</schema:schema>\n"  );
491cdf0e10cSrcweir         m_aData.sBufferAdditional.appendAscii ( "</schema:component>\n" );
492cdf0e10cSrcweir     }
493cdf0e10cSrcweir 
494cdf0e10cSrcweir     ::rtl::OUString sFileName  = m_aData.sPackageStandard   ;
495cdf0e10cSrcweir                     sFileName += DECLARE_ASCII(".xcd")      ;
496cdf0e10cSrcweir 
497cdf0e10cSrcweir     WRITE_LOGFILE( U2B( sFileName )         , U2B(m_aData.sBufferStandard.makeStringAndClear()       ))
498cdf0e10cSrcweir     WRITE_LOGFILE( LISTFILE_STANDARDFILTER  , U2B(m_aData.sStandardFilterList.makeStringAndClear()   ))
499cdf0e10cSrcweir     WRITE_LOGFILE( LISTFILE_STANDARDTYPES   , U2B(m_aData.sStandardTypeList.makeStringAndClear()     ))
500cdf0e10cSrcweir     WRITE_LOGFILE( SCPFILE_STANDARD         , U2B(m_aData.sNew2OldSCPStandard.makeStringAndClear()   ))
501cdf0e10cSrcweir 
502cdf0e10cSrcweir     if( m_aData.nVersionOutput >= DRAFT_SPLIT_VERSION )
503cdf0e10cSrcweir     {
504cdf0e10cSrcweir         sFileName  = m_aData.sPackageAdditional ;
505cdf0e10cSrcweir         sFileName += DECLARE_ASCII(".xcd")      ;
506cdf0e10cSrcweir 
507cdf0e10cSrcweir         WRITE_LOGFILE( U2B(sFileName)           , U2B(m_aData.sBufferAdditional.makeStringAndClear()     ))
508cdf0e10cSrcweir         WRITE_LOGFILE( LISTFILE_ADDITIONALFILTER, U2B(m_aData.sAdditionalFilterList.makeStringAndClear() ))
509cdf0e10cSrcweir         WRITE_LOGFILE( LISTFILE_ADDITIONALTYPES , U2B(m_aData.sAdditionalTypeList.makeStringAndClear()   ))
510cdf0e10cSrcweir         WRITE_LOGFILE( SCPFILE_ADDITIONAL       , U2B(m_aData.sNew2OldSCPAdditional.makeStringAndClear() ))
511cdf0e10cSrcweir     }
512cdf0e10cSrcweir }
513cdf0e10cSrcweir 
514cdf0e10cSrcweir //*****************************************************************************************************************
impl_generateCopyright()515cdf0e10cSrcweir void XCDGenerator::impl_generateCopyright()
516cdf0e10cSrcweir {
517cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"                                );
51876f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( "<!--***********************************************************\n");
51976f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " *\n");
52076f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " * Licensed to the Apache Software Foundation (ASF) under one\n");
52176f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " * or more contributor license agreements.  See the NOTICE file\n");
52276f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " * distributed with this work for additional information\n");
52376f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " * regarding copyright ownership.  The ASF licenses this file\n");
52476f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " * to you under the Apache License, Version 2.0 (the\n");
52576f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " * \"License\"); you may not use this file except in compliance\n");
52676f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " * with the License.  You may obtain a copy of the License at\n");
52776f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " *\n");
52876f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " *   http://www.apache.org/licenses/LICENSE-2.0\n");
52976f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " * \n");
53076f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " * Unless required by applicable law or agreed to in writing,\n");
53176f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " * software distributed under the License is distributed on an\n");
53276f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n");
53376f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " * KIND, either express or implied.  See the License for the\n");
53476f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " * specific language governing permissions and limitations\n");
53576f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " * under the License.\n");
53676f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " * \n");
53776f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " ***********************************************************-->\n");
538cdf0e10cSrcweir 
539cdf0e10cSrcweir     if( m_aData.nVersionOutput >= DRAFT_SPLIT_VERSION )
540cdf0e10cSrcweir     {
541cdf0e10cSrcweir         m_aData.sBufferAdditional.appendAscii( "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"                                );
54276f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( "<!--***********************************************************\n");
54376f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " *\n");
54476f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " * Licensed to the Apache Software Foundation (ASF) under one\n");
54576f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " * or more contributor license agreements.  See the NOTICE file\n");
54676f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " * distributed with this work for additional information\n");
54776f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " * regarding copyright ownership.  The ASF licenses this file\n");
54876f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " * to you under the Apache License, Version 2.0 (the\n");
54976f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " * \"License\"); you may not use this file except in compliance\n");
55076f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " * with the License.  You may obtain a copy of the License at\n");
55176f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " *\n");
55276f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " *   http://www.apache.org/licenses/LICENSE-2.0\n");
55376f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " * \n");
55476f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " * Unless required by applicable law or agreed to in writing,\n");
55576f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " * software distributed under the License is distributed on an\n");
55676f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n");
55776f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " * KIND, either express or implied.  See the License for the\n");
55876f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " * specific language governing permissions and limitations\n");
55976f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " * under the License.\n");
56076f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " * \n");
56176f5c358SAndrew Rist     m_aData.sBufferStandard.appendAscii( " ***********************************************************-->\n");
562cdf0e10cSrcweir     }
563cdf0e10cSrcweir }
564cdf0e10cSrcweir 
565cdf0e10cSrcweir //*****************************************************************************************************************
impl_generateTypeTemplate()566cdf0e10cSrcweir void XCDGenerator::impl_generateTypeTemplate()
567cdf0e10cSrcweir {
568cdf0e10cSrcweir     //_________________________________________________________________________________________________________________
569cdf0e10cSrcweir     if( m_aData.nVersionOutput==1 || m_aData.nVersionOutput==2 )
570cdf0e10cSrcweir     {
571cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t<schema:group cfg:name=\"Type\">\n"                                                                                                                                                                  );
572cdf0e10cSrcweir 
573cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t<schema:value cfg:name=\"Preferred\" cfg:type=\"boolean\" cfg:writable=\""                                                                                                                         );
574cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( m_aData.bWriteable==sal_True ? "true\">\n" : "false\">\n"                                                                                                                                                 );
575cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii("\t\t\t\t<schema:documentation>\n"                                                                                                                                                                         );
576cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t<schema:description>Specifies the preferred type for an extension if more then one match given URL</schema:description>\n"                                                                     );
577cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t</schema:documentation>\n"                                                                                                                                                                       );
578cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t<default:data>false</default:data>\n"                                                                                                                                                            );
579cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t</schema:value>\n"                                                                                                                                                                                 );
580cdf0e10cSrcweir 
581cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t<schema:value cfg:name=\"UIName\" cfg:type=\"string\" cfg:localized=\"true\" cfg:writable=\""                                                                                                      );
582cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( m_aData.bWriteable==sal_True ? "true\">\n" : "false\">\n"                                                                                                                                                 );
583cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t<schema:documentation>\n"                                                                                                                                                                        );
584cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t<schema:description>Specifies the external name of this type</schema:description>\n"                                                                                                           );
585cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t</schema:documentation>\n"                                                                                                                                                                       );
586cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t</schema:value>\n"                                                                                                                                                                                 );
587cdf0e10cSrcweir 
588cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t<schema:value cfg:name=\"MediaType\" cfg:type=\"string\" cfg:writable=\""                                                                                                                          );
589cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( m_aData.bWriteable==sal_True ? "true\">\n" : "false\">\n"                                                                                                                                                 );
590cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t<schema:documentation>\n"                                                                                                                                                                        );
591cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t<schema:description>Specifies the mime type </schema:description>\n"                                                                                                                           );
592cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t</schema:documentation>\n"                                                                                                                                                                       );
593cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t</schema:value>\n"                                                                                                                                                                                 );
594cdf0e10cSrcweir 
595cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t<schema:value cfg:name=\"ClipboardFormat\" cfg:type=\"string\" cfg:writable=\""                                                                                                                    );
596cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( m_aData.bWriteable==sal_True ? "true\">\n" : "false\">\n"                                                                                                                                                 );
597cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t<schema:documentation>\n"                                                                                                                                                                        );
598cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t<schema:description>Specifies the clipboard format name</schema:description>\n"                                                                                                                );
599cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t</schema:documentation>\n"                                                                                                                                                                       );
600cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t</schema:value>\n"                                                                                                                                                                                 );
601cdf0e10cSrcweir 
602cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t<schema:value cfg:name=\"URLPattern\" cfg:type=\"string\" cfg:derivedBy=\"list\" cfg:writable=\""                                                                                                  );
603cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( m_aData.bWriteable==sal_True ? "true\">\n" : "false\">\n"                                                                                                                                                 );
604cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t<schema:documentation>\n"                                                                                                                                                                        );
605cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t<schema:description>Specifies the patterns used for URLs. This type is only relevant for HTTP, FTP etc. and is used for internal URL formats like private:factory etc.</schema:description>\n" );
606cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t</schema:documentation>\n"                                                                                                                                                                       );
607cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t</schema:value>\n"                                                                                                                                                                                 );
608cdf0e10cSrcweir 
609cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t<schema:value cfg:name=\"Extensions\" cfg:type=\"string\" cfg:derivedBy=\"list\" cfg:writable=\""                                                                                                  );
610cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( m_aData.bWriteable==sal_True ? "true\">\n" : "false\">\n"                                                                                                                                                 );
611cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t<schema:documentation>\n"                                                                                                                                                                        );
612cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t<schema:description>Specifies the possible file extensions.</schema:description>\n"                                                                                                            );
613cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t</schema:documentation>\n"                                                                                                                                                                       );
614cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t</schema:value>\n"                                                                                                                                                                                 );
615cdf0e10cSrcweir 
616cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t<schema:value cfg:name=\"DocumentIconID\" cfg:type=\"int\" cfg:writable=\""                                                                                                                        );
617cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( m_aData.bWriteable==sal_True ? "true\">\n" : "false\">\n"                                                                                                                                                 );
618cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t<schema:documentation>\n"                                                                                                                                                                        );
619cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t<schema:description>Specifies the document icon ID of this type</schema:description>\n"                                                                                                        );
620cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t</schema:documentation>\n"                                                                                                                                                                       );
621cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t<default:data>0</default:data>\n"                                                                                                                                                                );
622cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t</schema:value>\n"                                                                                                                                                                                 );
623cdf0e10cSrcweir 
624cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t</schema:group>\n"                                                                                                                                                                                   );
625cdf0e10cSrcweir     }
626cdf0e10cSrcweir     //_________________________________________________________________________________________________________________
627cdf0e10cSrcweir     else if( m_aData.nVersionOutput>=3 )
628cdf0e10cSrcweir     {
629cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t<schema:group cfg:name=\"Type\">\n"                                                                                                                                                                  );
630cdf0e10cSrcweir 
631cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t<schema:value cfg:name=\"UIName\" cfg:type=\"string\" cfg:localized=\"true\" cfg:writable=\""                                                                                                      );
632cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( m_aData.bWriteable==sal_True ? "true\">\n" : "false\">\n"                                                                                                                                                 );
633cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t<schema:documentation>\n"                                                                                                                                                                        );
634cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t<schema:description>Specifies the external name of this type</schema:description>\n"                                                                                                           );
635cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t</schema:documentation>\n"                                                                                                                                                                       );
636cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t</schema:value>\n"                                                                                                                                                                                 );
637cdf0e10cSrcweir 
638cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t<schema:value cfg:name=\"Data\" cfg:type=\"string\" cfg:writable=\""                                                                                                                               );
639cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( m_aData.bWriteable==sal_True ? "true\">\n" : "false\">\n"                                                                                                                                                 );
640cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii("\t\t\t\t<schema:documentation>\n"                                                                                                                                                                         );
641*30acf5e8Spfg         m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t<schema:description>Contains all data of a type as an own formatted string.{Preferred, MediaType, ClipboardFormat, URLPattern, Extensions, DocumentIconID}</schema:description>\n"             );
642cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t</schema:documentation>\n"                                                                                                                                                                       );
643cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t<default:data>false</default:data>\n"                                                                                                                                                            );
644cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t</schema:value>\n"                                                                                                                                                                                 );
645cdf0e10cSrcweir 
646cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t</schema:group>\n"                                                                                                                                                                                   );
647cdf0e10cSrcweir     }
648cdf0e10cSrcweir }
649cdf0e10cSrcweir 
650cdf0e10cSrcweir //*****************************************************************************************************************
impl_generateFilterTemplate()651cdf0e10cSrcweir void XCDGenerator::impl_generateFilterTemplate()
652cdf0e10cSrcweir {
653cdf0e10cSrcweir     //_________________________________________________________________________________________________________________
654cdf0e10cSrcweir     if( m_aData.nVersionOutput==1 || m_aData.nVersionOutput==2 )
655cdf0e10cSrcweir     {
656cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t<schema:group cfg:name=\"Filter\">\n"                                                                                                            );
657cdf0e10cSrcweir 
658cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t<schema:value cfg:name=\"Installed\" cfg:type=\"boolean\" cfg:writable=\""                                                                     );
659cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( m_aData.bWriteable==sal_True ? "true\">\n" : "false\">\n"                                                                                             );
660cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t<schema:documentation>\n"                                                                                                                    );
661cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t<schema:description>Make it possible to enable or disable filter by setup!</schema:description>\n"                                         );
662cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t</schema:documentation>\n"                                                                                                                   );
663cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t<default:data>false</default:data>\n"                                                                                                        );
664cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t</schema:value>\n"                                                                                                                             );
665cdf0e10cSrcweir 
666cdf0e10cSrcweir         if( m_aData.nVersionOutput==2 )
667cdf0e10cSrcweir         {
668cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t<schema:value cfg:name=\"Order\" cfg:type=\"int\" cfg:writable=\""                                                                             );
669cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( m_aData.bWriteable==sal_True ? "true\">\n" : "false\">\n"                                                                                             );
670cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t<schema:documentation>\n"                                                                                                                    );
671cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t<schema:description>Specifies order of filters for relevant module; don't used for default filter!</schema:description>\n"                 );
672cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t</schema:documentation>\n"                                                                                                                   );
673cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t<default:data>0</default:data>\n"                                                                                                            );
674cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t</schema:value>\n"                                                                                                                             );
675cdf0e10cSrcweir         }
676cdf0e10cSrcweir 
677cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t<schema:value cfg:name=\"UIName\" cfg:type=\"string\" cfg:localized=\"true\" cfg:writable=\""                                                  );
678cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( m_aData.bWriteable==sal_True ? "true\">\n" : "false\">\n"                                                                                             );
679cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t<schema:documentation>\n"                                                                                                                    );
680cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t<schema:description>Specifies the external name of the filter which is displayed at the user interface (dialog).</schema:description>\n"   );
681cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t</schema:documentation>\n"                                                                                                                   );
682cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t</schema:value>\n"                                                                                                                             );
683cdf0e10cSrcweir 
684cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t<schema:value cfg:name=\"Type\" cfg:type=\"string\" cfg:writable=\""                                                                           );
685cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( m_aData.bWriteable==sal_True ? "true\">\n" : "false\">\n"                                                                                             );
686cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t<schema:documentation>\n"                                                                                                                    );
687cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t<schema:description>Specifies the relative type key name of the filter, e.g. Type/T1</schema:description>\n"                               );
688cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t</schema:documentation>\n"                                                                                                                   );
689cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t</schema:value>\n"                                                                                                                             );
690cdf0e10cSrcweir 
691cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t<schema:value cfg:name=\"DocumentService\" cfg:type=\"string\" cfg:writable=\""                                                                );
692cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( m_aData.bWriteable==sal_True ? "true\">\n" : "false\">\n"                                                                                             );
693cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t<schema:documentation>\n"                                                                                                                    );
694cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t<schema:description>Specifies the name of the UNO service to implement the document.</schema:description>\n"                               );
695cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t</schema:documentation>\n"                                                                                                                   );
696cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t</schema:value>\n"                                                                                                                             );
697cdf0e10cSrcweir 
698cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t<schema:value cfg:name=\"FilterService\" cfg:type=\"string\" cfg:writable=\""                                                                  );
699cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( m_aData.bWriteable==sal_True ? "true\">\n" : "false\">\n"                                                                                             );
700cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t<schema:documentation>\n"                                                                                                                    );
701cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t<schema:description>Specifies the name of the UNO service for importing the document.</schema:description>\n"                              );
702cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t</schema:documentation>\n"                                                                                                                   );
703cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t</schema:value>\n"                                                                                                                             );
704cdf0e10cSrcweir 
705cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t<schema:value cfg:name=\"Flags\" cfg:type=\"int\" cfg:writable=\""                                                                             );
706cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( m_aData.bWriteable==sal_True ? "true\">\n" : "false\">\n"                                                                                             );
707cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t<schema:documentation>\n"                                                                                                                    );
708cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t<schema:description>Specifies the properties of the filter</schema:description>\n"                                                         );
709cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t</schema:documentation>\n"                                                                                                                   );
710cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t<schema:type-info>\n"                                                                                                                        );
711cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t<schema:value-names>\n"                                                                                                                    );
712cdf0e10cSrcweir         impl_generateFilterFlagTemplate( FILTERFLAGNAME_IMPORT            , FILTERFLAG_IMPORT         , "mark filter for import"                                          );
713cdf0e10cSrcweir         impl_generateFilterFlagTemplate( FILTERFLAGNAME_EXPORT            , FILTERFLAG_EXPORT         , "mark filter for export"                                          );
714cdf0e10cSrcweir         impl_generateFilterFlagTemplate( FILTERFLAGNAME_TEMPLATE          , FILTERFLAG_TEMPLATE                                                                           );
715cdf0e10cSrcweir         impl_generateFilterFlagTemplate( FILTERFLAGNAME_INTERNAL          , FILTERFLAG_INTERNAL                                                                           );
716cdf0e10cSrcweir         impl_generateFilterFlagTemplate( FILTERFLAGNAME_TEMPLATEPATH      , FILTERFLAG_TEMPLATEPATH                                                                       );
717cdf0e10cSrcweir         impl_generateFilterFlagTemplate( FILTERFLAGNAME_OWN               , FILTERFLAG_OWN                                                                                );
718cdf0e10cSrcweir         impl_generateFilterFlagTemplate( FILTERFLAGNAME_ALIEN             , FILTERFLAG_ALIEN                                                                              );
719cdf0e10cSrcweir         impl_generateFilterFlagTemplate( FILTERFLAGNAME_USESOPTIONS       , FILTERFLAG_USESOPTIONS                                                                        );
720cdf0e10cSrcweir         impl_generateFilterFlagTemplate( FILTERFLAGNAME_DEFAULT           , FILTERFLAG_DEFAULT        , "most important filter, if more then ones available"              );
721cdf0e10cSrcweir         impl_generateFilterFlagTemplate( FILTERFLAGNAME_NOTINFILEDIALOG   , FILTERFLAG_NOTINFILEDIALOG, "don't show it in file dialogs!"                                  );
722cdf0e10cSrcweir         impl_generateFilterFlagTemplate( FILTERFLAGNAME_NOTINCHOOSER      , FILTERFLAG_NOTINCHOOSER   , "don't show it in chooser!"                                       );
723cdf0e10cSrcweir         impl_generateFilterFlagTemplate( FILTERFLAGNAME_ASYNCHRON         , FILTERFLAG_ASYNCHRON                                                                          );
724cdf0e10cSrcweir         impl_generateFilterFlagTemplate( FILTERFLAGNAME_NOTINSTALLED      , FILTERFLAG_NOTINSTALLED   , "set, if the filter is not installed, but available on CD"        );
725cdf0e10cSrcweir         impl_generateFilterFlagTemplate( FILTERFLAGNAME_CONSULTSERVICE    , FILTERFLAG_CONSULTSERVICE , "set, if the filter is not installed and not available an CD"     );
726cdf0e10cSrcweir         impl_generateFilterFlagTemplate( FILTERFLAGNAME_3RDPARTYFILTER    , FILTERFLAG_3RDPARTYFILTER , "must set, if the filter is an external one"                      );
727cdf0e10cSrcweir         impl_generateFilterFlagTemplate( FILTERFLAGNAME_PACKED            , FILTERFLAG_PACKED                                                                             );
728cdf0e10cSrcweir         impl_generateFilterFlagTemplate( FILTERFLAGNAME_SILENTEXPORT      , FILTERFLAG_SILENTEXPORT                                                                       );
729cdf0e10cSrcweir         impl_generateFilterFlagTemplate( FILTERFLAGNAME_PREFERED          , FILTERFLAG_PREFERED                                                                           );
730cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t</schema:value-names>\n"                                                                                                                   );
731cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t<schema:constraints xmlns:xsd=\"http://www.w3.org/1999/XMLSchema\"/>\n"                                                                    );
732cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t</schema:type-info>\n"                                                                                                                       );
733cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t<default:data>0</default:data>\n"                                                                                                            );
734cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t</schema:value>\n"                                                                                                                             );
735cdf0e10cSrcweir 
736cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t<schema:value cfg:name=\"UserData\" cfg:type=\"string\" cfg:derivedBy=\"list\" cfg:writable=\""                                                );
737cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( m_aData.bWriteable==sal_True ? "true\">\n" : "false\">\n"                                                                                             );
738cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t<schema:documentation>\n"                                                                                                                    );
739cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t<schema:description>Specifies the user-defined data</schema:description>\n"                                                                );
740cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t</schema:documentation>\n"                                                                                                                   );
741cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t<default:data/>\n"                                                                                                                           );
742cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t</schema:value>\n"                                                                                                                             );
743cdf0e10cSrcweir 
744cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t<schema:value cfg:name=\"FileFormatVersion\" cfg:type=\"int\" cfg:writable=\""                                                                 );
745cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( m_aData.bWriteable==sal_True ? "true\">\n" : "false\">\n"                                                                                             );
746cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t<!--This should be removed to UserData later-->\n"                                                                                           );
747cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t<schema:documentation>\n"                                                                                                                    );
748cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t<schema:description>Specifies the file format version of the filter</schema:description>\n"                                                );
749cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t</schema:documentation>\n"                                                                                                                   );
750cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t<default:data>0</default:data>\n"                                                                                                            );
751cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t</schema:value>\n"                                                                                                                             );
752cdf0e10cSrcweir 
753cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t<schema:value cfg:name=\"TemplateName\" cfg:type=\"string\" cfg:writable=\""                                                                   );
754cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( m_aData.bWriteable==sal_True ? "true\">\n" : "false\">\n"                                                                                             );
755cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t<!--This should be removed to UserData later-->\n"                                                                                           );
756cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t<schema:documentation>\n"                                                                                                                    );
757cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t<schema:description>Specifies the template used for importing the file with the specified filter.</schema:description>\n"                  );
758cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t</schema:documentation>\n"                                                                                                                 );
759cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t</schema:value>\n"                                                                                                                             );
760cdf0e10cSrcweir 
761cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t</schema:group>\n"                                                                                                                               );
762cdf0e10cSrcweir     //_________________________________________________________________________________________________________________
763cdf0e10cSrcweir     }
764cdf0e10cSrcweir     else if( m_aData.nVersionOutput>=3 )
765cdf0e10cSrcweir     {
766cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t<schema:group cfg:name=\"Filter\">\n"                                                                                                                                                                    );
767cdf0e10cSrcweir 
768cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t<schema:value cfg:name=\"Installed\" cfg:type=\"boolean\" cfg:writable=\""                                                                                                                             );
769cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( m_aData.bWriteable==sal_True ? "true\">\n" : "false\">\n"                                                                                                                                                     );
770cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t<schema:documentation>\n"                                                                                                                                                                            );
771cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t<schema:description>Make it possible to enable or disable filter by setup!</schema:description>\n"                                                                                                 );
772cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t</schema:documentation>\n"                                                                                                                                                                           );
773cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t<default:data>false</default:data>\n"                                                                                                                                                                );
774cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t</schema:value>\n"                                                                                                                                                                                     );
775cdf0e10cSrcweir 
776cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t<schema:value cfg:name=\"UIName\" cfg:type=\"string\" cfg:localized=\"true\" cfg:writable=\""                                                                                                          );
777cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( m_aData.bWriteable==sal_True ? "true\">\n" : "false\">\n"                                                                                                                                                     );
778cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t<schema:documentation>\n"                                                                                                                                                                            );
779cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t<schema:description>Specifies the external name of the filter which is displayed at the user interface (dialog).</schema:description>\n"                                                           );
780cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t</schema:documentation>\n"                                                                                                                                                                           );
781cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t</schema:value>\n"                                                                                                                                                                                     );
782cdf0e10cSrcweir 
783cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t<schema:value cfg:name=\"Data\" cfg:type=\"string\" cfg:writable=\""                                                                                                                                   );
784cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( m_aData.bWriteable==sal_True ? "true\">\n" : "false\">\n"                                                                                                                                                     );
785cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t<schema:documentation>\n"                                                                                                                                                                            );
786cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t<schema:description>All data of filter written in own format. {Order, OldName, Type, DocumentService, FilterService, Flags, UserData, FilteFormatVersion, TemplateName}</schema:description>\n"    );
787cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t</schema:documentation>\n"                                                                                                                                                                           );
788cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t</schema:value>\n"                                                                                                                                                                                     );
789cdf0e10cSrcweir 
790cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t</schema:group>\n"                                                                                                                                                                                       );
791cdf0e10cSrcweir     }
792cdf0e10cSrcweir }
793cdf0e10cSrcweir 
794cdf0e10cSrcweir //*****************************************************************************************************************
impl_generateFilterFlagTemplate(const::rtl::OUString & sName,sal_Int32 nValue,const::rtl::OString & sDescription)795cdf0e10cSrcweir void XCDGenerator::impl_generateFilterFlagTemplate( const ::rtl::OUString& sName, sal_Int32 nValue, const ::rtl::OString& sDescription )
796cdf0e10cSrcweir {
797cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t\t<schema:named-value name=\"" );
798cdf0e10cSrcweir     m_aData.sBufferStandard.append     ( sName                                     );
799cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\" value=\""                             );
800cdf0e10cSrcweir     m_aData.sBufferStandard.append     ( nValue                                    );
801cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\""                                      );
802cdf0e10cSrcweir 
803cdf0e10cSrcweir 	if( sDescription.getLength() > 0 )
804cdf0e10cSrcweir 	{
805cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( ">\n\t\t\t\t\t\t\t<schema:description>"   );
806cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( sDescription                              );
807cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "</schema:description>\n"                 );
808cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t\t</schema:named-value>\n"     );
809cdf0e10cSrcweir 	}
810cdf0e10cSrcweir 	else
811cdf0e10cSrcweir 	{
812cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "/>\n"                                    );
813cdf0e10cSrcweir 	}
814cdf0e10cSrcweir }
815cdf0e10cSrcweir 
816cdf0e10cSrcweir //*****************************************************************************************************************
impl_generateDetectorTemplate()817cdf0e10cSrcweir void XCDGenerator::impl_generateDetectorTemplate()
818cdf0e10cSrcweir {
819cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t<schema:group cfg:name=\"DetectService\">\n"                                                             );
820cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t\t<schema:value cfg:name=\"Types\" cfg:type=\"string\" cfg:derivedBy=\"list\" cfg:writable=\""           );
821cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( m_aData.bWriteable==sal_True ? "true\">\n" : "false\">\n"                                                     );
822cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t\t\t<schema:documentation>\n"                                                                            );
823cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t<schema:description>List of types which the service has registered for.</schema:description>\n"    );
824cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t\t\t</schema:documentation>\n"                                                                           );
825cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t\t</schema:value>\n"                                                                                     );
826cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t</schema:group>\n"                                                                                       );
827cdf0e10cSrcweir }
828cdf0e10cSrcweir 
829cdf0e10cSrcweir //*****************************************************************************************************************
impl_generateLoaderTemplate()830cdf0e10cSrcweir void XCDGenerator::impl_generateLoaderTemplate()
831cdf0e10cSrcweir {
832cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t<schema:group cfg:name=\"FrameLoader\">\n"                                                                                                       );
833cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t\t<schema:value cfg:name=\"UIName\" cfg:type=\"string\" cfg:localized=\"true\" cfg:writable=\""                                                  );
834cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( m_aData.bWriteable==sal_True ? "true\">\n" : "false\">\n"                                                                                             );
835cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t\t\t<schema:documentation>\n"                                                                                                                    );
836cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t<schema:description>Specifies the external name of the filter which is displayed at the user interface (dialog).</schema:description>\n"   );
837cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t\t\t</schema:documentation>\n"                                                                                                                   );
838cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t\t</schema:value>\n"                                                                                                                             );
839cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t\t<schema:value cfg:name=\"Types\" cfg:type=\"string\" cfg:derivedBy=\"list\" cfg:writable=\""                                                   );
840cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( m_aData.bWriteable==sal_True ? "true\">\n" : "false\">\n"                                                                                             );
841cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t\t\t<schema:documentation>\n"                                                                                                                    );
842cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t<schema:description>List of types which the service has registered for.</schema:description>\n"                                            );
843cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t\t\t</schema:documentation>\n"                                                                                                                   );
844cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t\t</schema:value>\n"                                                                                                                             );
845cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t</schema:group>\n"                                                                                                                               );
846cdf0e10cSrcweir }
847cdf0e10cSrcweir 
848cdf0e10cSrcweir //*****************************************************************************************************************
impl_generateContentHandlerTemplate()849cdf0e10cSrcweir void XCDGenerator::impl_generateContentHandlerTemplate()
850cdf0e10cSrcweir {
851cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t<schema:group cfg:name=\"ContentHandler\">\n"                                                            );
852cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t\t<schema:value cfg:name=\"Types\" cfg:type=\"string\" cfg:derivedBy=\"list\" cfg:writable=\""           );
853cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( m_aData.bWriteable==sal_True ? "true\">\n" : "false\">\n"                                                     );
854cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t\t\t<schema:documentation>\n"                                                                            );
855cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t<schema:description>List of types which could be handled by this service.</schema:description>\n"  );
856cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t\t\t</schema:documentation>\n"                                                                           );
857cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t\t</schema:value>\n"                                                                                     );
858cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t</schema:group>\n"                                                                                       );
859cdf0e10cSrcweir }
860cdf0e10cSrcweir 
861cdf0e10cSrcweir //*****************************************************************************************************************
impl_generateTypeSet()862cdf0e10cSrcweir void XCDGenerator::impl_generateTypeSet()
863cdf0e10cSrcweir {
864cdf0e10cSrcweir     if( m_aData.pFilterCache->hasTypes() == sal_False )
865cdf0e10cSrcweir     {
866cdf0e10cSrcweir 		// generate empty set!
867cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii  ( "\t<schema:set cfg:name=\"Types\" cfg:element-type=\"Type\"/>\n"                 );
868cdf0e10cSrcweir 
869cdf0e10cSrcweir         if( m_aData.nVersionOutput >= DRAFT_SPLIT_VERSION )
870cdf0e10cSrcweir         {
871cdf0e10cSrcweir             m_aData.sBufferAdditional.appendAscii( "\t<schema:set cfg:name=\"Types\" cfg:element-type=\"Type\" cfg:component=\""    );
872cdf0e10cSrcweir             m_aData.sBufferAdditional.append     ( m_aData.sPackageStandard                                                         );
873cdf0e10cSrcweir             m_aData.sBufferAdditional.appendAscii( "\"/>\n"                                                                         );
874cdf0e10cSrcweir         }
875cdf0e10cSrcweir     }
876cdf0e10cSrcweir     else
877cdf0e10cSrcweir 	{
878cdf0e10cSrcweir         // generate filled set
879cdf0e10cSrcweir 		// open set
880cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii  ( "\t<schema:set cfg:name=\"Types\" cfg:element-type=\"Type\">\n"                  );
881cdf0e10cSrcweir 
882cdf0e10cSrcweir         if( m_aData.nVersionOutput >= DRAFT_SPLIT_VERSION )
883cdf0e10cSrcweir         {
884cdf0e10cSrcweir             m_aData.sBufferAdditional.appendAscii( "\t<schema:set cfg:name=\"Types\" cfg:element-type=\"Type\" cfg:component=\""    );
885cdf0e10cSrcweir             m_aData.sBufferAdditional.append     ( m_aData.sPackageStandard                                                         );
886cdf0e10cSrcweir             m_aData.sBufferAdditional.appendAscii( "\">\n"                                                                          );
887cdf0e10cSrcweir         }
888cdf0e10cSrcweir 
889cdf0e10cSrcweir         css::uno::Sequence< ::rtl::OUString > lNames    = m_aData.pFilterCache->getAllTypeNames();
890cdf0e10cSrcweir         css::uno::Sequence< ::rtl::OUString > lEncNames ( lNames )                               ;
891cdf0e10cSrcweir         sal_Int32                             nCount    = lNames.getLength()                     ;
892cdf0e10cSrcweir         sal_Int32                             nItem     = 0                                      ;
893cdf0e10cSrcweir 
894cdf0e10cSrcweir         XCDGenerator::impl_orderAlphabetical( lNames );
895cdf0e10cSrcweir 
896cdf0e10cSrcweir         if( m_aData.nVersionOutput == 6 && m_aData.nVersionInput < 6 )
897cdf0e10cSrcweir         {
898cdf0e10cSrcweir             ::rtl::OUString sName   ;
899cdf0e10cSrcweir             ::rtl::OUString sEncName;
900cdf0e10cSrcweir             for( nItem=0; nItem<nCount; ++nItem )
901cdf0e10cSrcweir             {
902cdf0e10cSrcweir                 sName            = lNames[nItem]              ;
903cdf0e10cSrcweir                 lEncNames[nItem] = impl_encodeSetName( sName );
904cdf0e10cSrcweir             }
905cdf0e10cSrcweir         }
906cdf0e10cSrcweir 
907cdf0e10cSrcweir         for( nItem=0; nItem<nCount; ++nItem )
908cdf0e10cSrcweir         {
909cdf0e10cSrcweir             ::rtl::OUString sName   = lNames[nItem]                         ;
910cdf0e10cSrcweir             FileType        aItem   = m_aData.pFilterCache->getType( sName );
911cdf0e10cSrcweir             EFilterPackage  ePackage                                        ;
912cdf0e10cSrcweir 
913cdf0e10cSrcweir             ++m_aData.nWrittenTypes;
914cdf0e10cSrcweir 
915cdf0e10cSrcweir             if( m_aData.nVersionOutput==1 || m_aData.nVersionOutput==2 )
916cdf0e10cSrcweir             {
917cdf0e10cSrcweir                 // open set entry by using name
918cdf0e10cSrcweir                 m_aData.sBufferStandard.appendAscii( "\t\t<default:group cfg:name=\""  );
919cdf0e10cSrcweir                 m_aData.sBufferStandard.append     ( sName                             );
920cdf0e10cSrcweir                 m_aData.sBufferStandard.appendAscii( "\">\n"                           );
921cdf0e10cSrcweir 
922cdf0e10cSrcweir                 // write properties
923cdf0e10cSrcweir                 impl_generateBoolProperty       ( m_aData.sBufferStandard, SUBKEY_PREFERRED        , aItem.bPreferred       );
924cdf0e10cSrcweir                 impl_generateUINamesProperty    ( m_aData.sBufferStandard, SUBKEY_UINAME           , aItem.lUINames         );
925cdf0e10cSrcweir                 impl_generateStringProperty     ( m_aData.sBufferStandard, SUBKEY_MEDIATYPE        , aItem.sMediaType       );
926cdf0e10cSrcweir                 impl_generateStringProperty     ( m_aData.sBufferStandard, SUBKEY_CLIPBOARDFORMAT  , aItem.sClipboardFormat );
927cdf0e10cSrcweir                 impl_generateStringListProperty ( m_aData.sBufferStandard, SUBKEY_URLPATTERN       , aItem.lURLPattern      );
928cdf0e10cSrcweir                 impl_generateStringListProperty ( m_aData.sBufferStandard, SUBKEY_EXTENSIONS       , aItem.lExtensions      );
929cdf0e10cSrcweir                 impl_generateIntProperty        ( m_aData.sBufferStandard, SUBKEY_DOCUMENTICONID   , aItem.nDocumentIconID  );
930cdf0e10cSrcweir 
931cdf0e10cSrcweir                 // close set node
932cdf0e10cSrcweir                 m_aData.sBufferStandard.appendAscii( "\t\t</default:group>\n" );
933cdf0e10cSrcweir             }
934cdf0e10cSrcweir             else if( m_aData.nVersionOutput >= 3 )
935cdf0e10cSrcweir             {
936cdf0e10cSrcweir                 ::rtl::OUString        sPath       = DECLARE_ASCII("org.openoffice.Office.");
937cdf0e10cSrcweir                 ::rtl::OUStringBuffer* pXCDBuffer  = &(m_aData.sBufferStandard      );
938cdf0e10cSrcweir                 ::rtl::OUStringBuffer* pSCPBuffer  = &(m_aData.sNew2OldSCPStandard  );
939cdf0e10cSrcweir                 ::rtl::OUStringBuffer* pListBuffer = &(m_aData.sStandardTypeList    );
940cdf0e10cSrcweir 
941cdf0e10cSrcweir                 if( m_aData.nVersionOutput >= DRAFT_SPLIT_VERSION )
942cdf0e10cSrcweir                 {
943cdf0e10cSrcweir                     XCDGenerator::impl_classifyType( m_aData, sName, ePackage );
944cdf0e10cSrcweir                     switch( ePackage )
945cdf0e10cSrcweir                     {
946cdf0e10cSrcweir                         case E_ADDITIONAL   :   {
947cdf0e10cSrcweir                                                     sPath      += m_aData.sPackageAdditional      ;
948cdf0e10cSrcweir                                                     pXCDBuffer  = &(m_aData.sBufferAdditional    );
949cdf0e10cSrcweir                                                     pSCPBuffer  = &(m_aData.sNew2OldSCPAdditional);
950cdf0e10cSrcweir                                                     pListBuffer = &(m_aData.sAdditionalTypeList  );
951cdf0e10cSrcweir                                                 }
952cdf0e10cSrcweir                     }
953cdf0e10cSrcweir                 }
954cdf0e10cSrcweir                 else
955cdf0e10cSrcweir                 {
956cdf0e10cSrcweir                     sPath += m_aData.sPackageStandard;
957cdf0e10cSrcweir                 }
958cdf0e10cSrcweir 
959cdf0e10cSrcweir                 sPath += CFG_PATH_SEPERATOR      ;
960cdf0e10cSrcweir                 sPath += DECLARE_ASCII( "Types" );
961cdf0e10cSrcweir                 sPath += CFG_PATH_SEPERATOR      ;
962cdf0e10cSrcweir 
963cdf0e10cSrcweir                 pListBuffer->append     ( sName );
964cdf0e10cSrcweir                 pListBuffer->appendAscii( "\n"  );
965cdf0e10cSrcweir 
966cdf0e10cSrcweir                 if( m_aData.nVersionOutput == 6 && m_aData.nVersionInput < 6 )
967cdf0e10cSrcweir                 {
968cdf0e10cSrcweir                     pSCPBuffer->appendAscii( "\""               );
969cdf0e10cSrcweir                     pSCPBuffer->append     ( sPath              );
970cdf0e10cSrcweir                     pSCPBuffer->append     ( lNames[nItem]      );
971cdf0e10cSrcweir                     pSCPBuffer->appendAscii( "\"\t\""           );
972cdf0e10cSrcweir                     pSCPBuffer->append     ( sPath              );
973cdf0e10cSrcweir                     pSCPBuffer->appendAscii( "Type"             );
974cdf0e10cSrcweir                     pSCPBuffer->append     ( CFG_ENCODING_OPEN  );
975cdf0e10cSrcweir                     pSCPBuffer->append     ( lNames[nItem]      );
976cdf0e10cSrcweir                     pSCPBuffer->append     ( CFG_ENCODING_CLOSE );
977cdf0e10cSrcweir                     pSCPBuffer->appendAscii( "\"\n"             );
978cdf0e10cSrcweir 
979cdf0e10cSrcweir                     sName       = lEncNames[nItem];
980cdf0e10cSrcweir                     aItem.sName = sName;
981cdf0e10cSrcweir                 }
982cdf0e10cSrcweir 
983cdf0e10cSrcweir                 // open set entry by using name
984cdf0e10cSrcweir                 pXCDBuffer->appendAscii( "\t\t<default:group cfg:name=\""  );
985cdf0e10cSrcweir                 pXCDBuffer->append     ( sName                             );
986cdf0e10cSrcweir                 pXCDBuffer->appendAscii( "\">\n"                           );
987cdf0e10cSrcweir 
988cdf0e10cSrcweir                 // write properties
989cdf0e10cSrcweir                 impl_generateUINamesProperty( *pXCDBuffer, SUBKEY_UINAME, aItem.lUINames                           );
990cdf0e10cSrcweir                 impl_generateStringProperty ( *pXCDBuffer, SUBKEY_DATA  , FilterCFGAccess::encodeTypeData( aItem ) );
991cdf0e10cSrcweir 
992cdf0e10cSrcweir                 // close set node
993cdf0e10cSrcweir                 pXCDBuffer->appendAscii( "\t\t</default:group>\n" );
994cdf0e10cSrcweir             }
995cdf0e10cSrcweir         }
996cdf0e10cSrcweir 
997cdf0e10cSrcweir 		// close set
998cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t</schema:set>\n" );
999cdf0e10cSrcweir         if( m_aData.nVersionOutput >= DRAFT_SPLIT_VERSION )
1000cdf0e10cSrcweir         {
1001cdf0e10cSrcweir             m_aData.sBufferAdditional.appendAscii( "\t</schema:set>\n" );
1002cdf0e10cSrcweir         }
1003cdf0e10cSrcweir 	}
1004cdf0e10cSrcweir }
1005cdf0e10cSrcweir 
1006cdf0e10cSrcweir //*****************************************************************************************************************
impl_generateFilterSet()1007cdf0e10cSrcweir void XCDGenerator::impl_generateFilterSet()
1008cdf0e10cSrcweir {
1009cdf0e10cSrcweir     if( m_aData.pFilterCache->hasFilters() == sal_False )
1010cdf0e10cSrcweir 	{
1011cdf0e10cSrcweir 		// write empty filter set.
1012cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t<schema:set cfg:name=\"Filters\" cfg:element-type=\"Filter\"/>\n" );
1013cdf0e10cSrcweir         if( m_aData.nVersionOutput >= DRAFT_SPLIT_VERSION )
1014cdf0e10cSrcweir         {
1015cdf0e10cSrcweir             m_aData.sBufferAdditional.appendAscii( "\t<schema:set cfg:name=\"Filters\" cfg:element-type=\"Filter\" cfg:component=\""    );
1016cdf0e10cSrcweir             m_aData.sBufferAdditional.append     ( m_aData.sPackageStandard                                                             );
1017cdf0e10cSrcweir             m_aData.sBufferAdditional.appendAscii( "\"/>\n"                                                                             );
1018cdf0e10cSrcweir         }
1019cdf0e10cSrcweir     }
1020cdf0e10cSrcweir     else
1021cdf0e10cSrcweir     {
1022cdf0e10cSrcweir 		// open set
1023cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t<schema:set cfg:name=\"Filters\" cfg:element-type=\"Filter\">\n" );
1024cdf0e10cSrcweir         if( m_aData.nVersionOutput >= DRAFT_SPLIT_VERSION )
1025cdf0e10cSrcweir         {
1026cdf0e10cSrcweir             m_aData.sBufferAdditional.appendAscii( "\t<schema:set cfg:name=\"Filters\" cfg:element-type=\"Filter\" cfg:component=\""    );
1027cdf0e10cSrcweir             m_aData.sBufferAdditional.append     ( m_aData.sPackageStandard                                                             );
1028cdf0e10cSrcweir             m_aData.sBufferAdditional.appendAscii( "\">\n"                                                                              );
1029cdf0e10cSrcweir         }
1030cdf0e10cSrcweir 
1031cdf0e10cSrcweir         css::uno::Sequence< ::rtl::OUString > lNewNames = m_aData.pFilterCache->getAllFilterNames();
1032cdf0e10cSrcweir         css::uno::Sequence< ::rtl::OUString > lOldNames ( lNewNames )                              ;
1033cdf0e10cSrcweir         css::uno::Sequence< ::rtl::OUString > lEncNames ( lNewNames )                              ;
1034cdf0e10cSrcweir         sal_Int32                             nCount    = lNewNames.getLength()                    ;
1035cdf0e10cSrcweir         sal_Int32                             nItem     = 0                                        ;
1036cdf0e10cSrcweir 
1037cdf0e10cSrcweir         XCDGenerator::impl_orderAlphabetical( lNewNames );
1038cdf0e10cSrcweir 
1039cdf0e10cSrcweir         if( m_aData.nVersionOutput == 6 && m_aData.nVersionInput < 6 )
1040cdf0e10cSrcweir         {
1041cdf0e10cSrcweir             ::rtl::OUString sNewName;
1042cdf0e10cSrcweir             ::rtl::OUString sOldName;
1043cdf0e10cSrcweir             for( nItem=0; nItem<nCount; ++nItem )
1044cdf0e10cSrcweir             {
1045cdf0e10cSrcweir                 sNewName         = lNewNames[nItem]                   ;
1046cdf0e10cSrcweir                 sOldName         = impl_getOldFilterName  ( sNewName );
1047cdf0e10cSrcweir                 lOldNames[nItem] = sOldName                           ;
1048cdf0e10cSrcweir                 lEncNames[nItem] = impl_encodeSetName     ( sOldName );
1049cdf0e10cSrcweir             }
1050cdf0e10cSrcweir         }
1051cdf0e10cSrcweir 
1052cdf0e10cSrcweir         for( nItem=0; nItem<nCount; ++nItem )
1053cdf0e10cSrcweir         {
1054cdf0e10cSrcweir             ::rtl::OUString sName = lNewNames[nItem]                                    ;
1055cdf0e10cSrcweir             Filter          aItem = m_aData.pFilterCache->getFilter( lNewNames[nItem] ) ;
1056cdf0e10cSrcweir             EFilterPackage  ePackage                                                    ;
1057cdf0e10cSrcweir 
1058cdf0e10cSrcweir             ++m_aData.nWrittenFilters;
1059cdf0e10cSrcweir 
1060cdf0e10cSrcweir             if( m_aData.nVersionOutput==1 || m_aData.nVersionOutput==2 )
1061cdf0e10cSrcweir             {
1062cdf0e10cSrcweir                 // open set node by using name
1063cdf0e10cSrcweir                 m_aData.sBufferStandard.appendAscii( "\t\t<default:group cfg:name=\""  );
1064cdf0e10cSrcweir                 m_aData.sBufferStandard.append     ( sName                             );
1065cdf0e10cSrcweir                 m_aData.sBufferStandard.appendAscii( "\">\n"                           );
1066cdf0e10cSrcweir 
1067cdf0e10cSrcweir                 // write properties
1068cdf0e10cSrcweir                 // Attention:
1069cdf0e10cSrcweir                 // We generate "Installed=false" for all entries ... because it's the default for all filters.
1070cdf0e10cSrcweir                 // You must work with a full office installation and change this to "true" in generated XML file!!!
1071cdf0e10cSrcweir                 impl_generateBoolProperty       ( m_aData.sBufferStandard, SUBKEY_INSTALLED        , sal_False                );
1072cdf0e10cSrcweir                 impl_generateIntProperty        ( m_aData.sBufferStandard, SUBKEY_ORDER            , aItem.nOrder             );
1073cdf0e10cSrcweir                 impl_generateStringProperty     ( m_aData.sBufferStandard, SUBKEY_TYPE             , aItem.sType              );
1074cdf0e10cSrcweir                 impl_generateUINamesProperty    ( m_aData.sBufferStandard, SUBKEY_UINAME           , aItem.lUINames           );
1075cdf0e10cSrcweir                 impl_generateStringProperty     ( m_aData.sBufferStandard, SUBKEY_DOCUMENTSERVICE  , aItem.sDocumentService   );
1076cdf0e10cSrcweir                 impl_generateStringProperty     ( m_aData.sBufferStandard, SUBKEY_FILTERSERVICE    , aItem.sFilterService     );
1077cdf0e10cSrcweir                 impl_generateIntProperty        ( m_aData.sBufferStandard, SUBKEY_FLAGS            , aItem.nFlags             );
1078cdf0e10cSrcweir                 impl_generateStringListProperty ( m_aData.sBufferStandard, SUBKEY_USERDATA         , aItem.lUserData          );
1079cdf0e10cSrcweir                 impl_generateIntProperty        ( m_aData.sBufferStandard, SUBKEY_FILEFORMATVERSION, aItem.nFileFormatVersion );
1080cdf0e10cSrcweir                 impl_generateStringProperty     ( m_aData.sBufferStandard, SUBKEY_TEMPLATENAME     , aItem.sTemplateName      );
1081cdf0e10cSrcweir 
1082cdf0e10cSrcweir                 // close set node
1083cdf0e10cSrcweir                 m_aData.sBufferStandard.appendAscii( "\t\t</default:group>\n" );
1084cdf0e10cSrcweir             }
1085cdf0e10cSrcweir             else if( m_aData.nVersionOutput>=3 )
1086cdf0e10cSrcweir             {
1087cdf0e10cSrcweir                 ::rtl::OUString        sPath       = DECLARE_ASCII("org.openoffice.Office.");
1088cdf0e10cSrcweir                 ::rtl::OUStringBuffer* pXCDBuffer  = &(m_aData.sBufferStandard      );
1089cdf0e10cSrcweir                 ::rtl::OUStringBuffer* pSCPBuffer  = &(m_aData.sNew2OldSCPStandard  );
1090cdf0e10cSrcweir                 ::rtl::OUStringBuffer* pListBuffer = &(m_aData.sStandardFilterList  );
1091cdf0e10cSrcweir 
1092cdf0e10cSrcweir                 if( m_aData.nVersionOutput >= DRAFT_SPLIT_VERSION )
1093cdf0e10cSrcweir                 {
1094cdf0e10cSrcweir                     XCDGenerator::impl_classifyFilter( m_aData, sName, ePackage, aItem.nOrder );
1095cdf0e10cSrcweir                     switch( ePackage )
1096cdf0e10cSrcweir                     {
1097cdf0e10cSrcweir                         case E_ADDITIONAL   :   {
1098cdf0e10cSrcweir                                                     sPath      += m_aData.sPackageAdditional      ;
1099cdf0e10cSrcweir                                                     pXCDBuffer  = &(m_aData.sBufferAdditional    );
1100cdf0e10cSrcweir                                                     pSCPBuffer  = &(m_aData.sNew2OldSCPAdditional);
1101cdf0e10cSrcweir                                                     pListBuffer = &(m_aData.sAdditionalFilterList);
1102cdf0e10cSrcweir                                                 }
1103cdf0e10cSrcweir                     }
1104cdf0e10cSrcweir                 }
1105cdf0e10cSrcweir                 else
1106cdf0e10cSrcweir                 {
1107cdf0e10cSrcweir                     sPath += m_aData.sPackageStandard;
1108cdf0e10cSrcweir                 }
1109cdf0e10cSrcweir 
1110cdf0e10cSrcweir                 sPath += CFG_PATH_SEPERATOR        ;
1111cdf0e10cSrcweir                 sPath += DECLARE_ASCII( "Filters" );
1112cdf0e10cSrcweir                 sPath += CFG_PATH_SEPERATOR        ;
1113cdf0e10cSrcweir 
1114cdf0e10cSrcweir                 pListBuffer->append     ( sName );
1115cdf0e10cSrcweir                 pListBuffer->appendAscii( "\n"  );
1116cdf0e10cSrcweir 
1117cdf0e10cSrcweir                 if( m_aData.nVersionOutput == 6 && m_aData.nVersionInput < 6 )
1118cdf0e10cSrcweir                 {
1119cdf0e10cSrcweir                     pSCPBuffer->appendAscii( "\""               );
1120cdf0e10cSrcweir                     pSCPBuffer->append     ( sPath              );
1121cdf0e10cSrcweir                     pSCPBuffer->append     ( lNewNames[nItem]   );
1122cdf0e10cSrcweir                     pSCPBuffer->appendAscii( "\"\t\""           );
1123cdf0e10cSrcweir                     pSCPBuffer->append     ( sPath              );
1124cdf0e10cSrcweir                     pSCPBuffer->appendAscii( "Filter"           );
1125cdf0e10cSrcweir                     pSCPBuffer->append     ( CFG_ENCODING_OPEN  );
1126cdf0e10cSrcweir                     pSCPBuffer->append     ( lOldNames[nItem]   );
1127cdf0e10cSrcweir                     pSCPBuffer->append     ( CFG_ENCODING_CLOSE );
1128cdf0e10cSrcweir                     pSCPBuffer->appendAscii( "\"\n"             );
1129cdf0e10cSrcweir 
1130cdf0e10cSrcweir                     sName       = lEncNames[nItem];
1131cdf0e10cSrcweir                     aItem.sName = sName;
1132cdf0e10cSrcweir                 }
1133cdf0e10cSrcweir 
1134cdf0e10cSrcweir                 // open set node by using name
1135cdf0e10cSrcweir                 pXCDBuffer->appendAscii( "\t\t<default:group cfg:name=\"" );
1136cdf0e10cSrcweir                 pXCDBuffer->append     ( sName                            );
1137cdf0e10cSrcweir                 pXCDBuffer->appendAscii( "\">\n"                          );
1138cdf0e10cSrcweir 
1139cdf0e10cSrcweir                 // write properties
1140cdf0e10cSrcweir                 // Attention:
1141cdf0e10cSrcweir                 // We generate "Installed=false" for all entries ... because it's the default for all filters.
1142cdf0e10cSrcweir                 // You must work with a full office installation and change this to "true" in generated XML file!!!
1143cdf0e10cSrcweir                 impl_generateBoolProperty   ( *pXCDBuffer, SUBKEY_INSTALLED, sal_False                                  );
1144cdf0e10cSrcweir                 impl_generateUINamesProperty( *pXCDBuffer, SUBKEY_UINAME   , aItem.lUINames                             );
1145cdf0e10cSrcweir                 impl_generateStringProperty ( *pXCDBuffer, SUBKEY_DATA     , FilterCFGAccess::encodeFilterData( aItem ) );
1146cdf0e10cSrcweir 
1147cdf0e10cSrcweir                 // close set node
1148cdf0e10cSrcweir                 pXCDBuffer->appendAscii( "\t\t</default:group>\n" );
1149cdf0e10cSrcweir             }
1150cdf0e10cSrcweir         }
1151cdf0e10cSrcweir 
1152cdf0e10cSrcweir 		// close set
1153cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t</schema:set>\n" );
1154cdf0e10cSrcweir         if( m_aData.nVersionOutput >= DRAFT_SPLIT_VERSION )
1155cdf0e10cSrcweir         {
1156cdf0e10cSrcweir             m_aData.sBufferAdditional.appendAscii( "\t</schema:set>\n" );
1157cdf0e10cSrcweir         }
1158cdf0e10cSrcweir 	}
1159cdf0e10cSrcweir }
1160cdf0e10cSrcweir 
1161cdf0e10cSrcweir //*****************************************************************************************************************
impl_generateDetectorSet()1162cdf0e10cSrcweir void XCDGenerator::impl_generateDetectorSet()
1163cdf0e10cSrcweir {
1164cdf0e10cSrcweir     if( m_aData.pFilterCache->hasDetectors() == sal_False )
1165cdf0e10cSrcweir 	{
1166cdf0e10cSrcweir 		// write empty detector set!
1167cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t<schema:set cfg:name=\"DetectServices\" cfg:element-type=\"DetectService\"/>\n" );
1168cdf0e10cSrcweir     }
1169cdf0e10cSrcweir     else
1170cdf0e10cSrcweir     {
1171cdf0e10cSrcweir 		// open set
1172cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t<schema:set cfg:name=\"DetectServices\" cfg:element-type=\"DetectService\">\n" );
1173cdf0e10cSrcweir 
1174cdf0e10cSrcweir         css::uno::Sequence< ::rtl::OUString > lNames    = m_aData.pFilterCache->getAllDetectorNames();
1175cdf0e10cSrcweir         css::uno::Sequence< ::rtl::OUString > lEncNames ( lNames )                                   ;
1176cdf0e10cSrcweir         sal_Int32                             nCount    = lNames.getLength()                         ;
1177cdf0e10cSrcweir         sal_Int32                             nItem     = 0                                          ;
1178cdf0e10cSrcweir 
1179cdf0e10cSrcweir         XCDGenerator::impl_orderAlphabetical( lNames );
1180cdf0e10cSrcweir 
1181cdf0e10cSrcweir         if( m_aData.nVersionOutput == 6 && m_aData.nVersionInput < 6 )
1182cdf0e10cSrcweir         {
1183cdf0e10cSrcweir             ::rtl::OUString sName   ;
1184cdf0e10cSrcweir             ::rtl::OUString sEncName;
1185cdf0e10cSrcweir             for( nItem=0; nItem<nCount; ++nItem )
1186cdf0e10cSrcweir             {
1187cdf0e10cSrcweir                 sName            = lNames[nItem]              ;
1188cdf0e10cSrcweir                 lEncNames[nItem] = impl_encodeSetName( sName );
1189cdf0e10cSrcweir 
1190cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.appendAscii ( "org.openoffice.Office."  );
1191cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.append      ( m_aData.sPackageStandard  );
1192cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.append      ( CFG_PATH_SEPERATOR        );
1193cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.append      ( sName                     );
1194cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.appendAscii ( "\torg.openoffice.Office.");
1195cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.append      ( m_aData.sPackageStandard  );
1196cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.append      ( CFG_PATH_SEPERATOR        );
1197cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.appendAscii ( "DetectService"           );
1198cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.append      ( CFG_ENCODING_OPEN         );
1199cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.append      ( sName                     );
1200cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.append      ( CFG_ENCODING_CLOSE        );
1201cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.appendAscii ( "\n"                      );
1202cdf0e10cSrcweir             }
1203cdf0e10cSrcweir         }
1204cdf0e10cSrcweir 
1205cdf0e10cSrcweir         for( nItem=0; nItem<nCount; ++nItem )
1206cdf0e10cSrcweir 		{
1207cdf0e10cSrcweir             ::rtl::OUString sName = lNames[nItem]                             ;
1208cdf0e10cSrcweir             Detector        aItem = m_aData.pFilterCache->getDetector( sName );
1209cdf0e10cSrcweir 
1210cdf0e10cSrcweir             if( m_aData.nVersionOutput == 6 && m_aData.nVersionInput < 6 )
1211cdf0e10cSrcweir             {
1212cdf0e10cSrcweir                 sName = lEncNames[nItem];
1213cdf0e10cSrcweir             }
1214cdf0e10cSrcweir 
1215cdf0e10cSrcweir             ++m_aData.nWrittenDetectors;
1216cdf0e10cSrcweir 
1217cdf0e10cSrcweir 			// open set node by using name
1218cdf0e10cSrcweir             m_aData.sBufferStandard.appendAscii( "\t\t<default:group cfg:name=\""  );
1219cdf0e10cSrcweir             m_aData.sBufferStandard.append     ( sName                             );
1220cdf0e10cSrcweir             m_aData.sBufferStandard.appendAscii( "\">\n"                           );
1221cdf0e10cSrcweir 
1222cdf0e10cSrcweir 			// write properties
1223cdf0e10cSrcweir             impl_generateStringListProperty ( m_aData.sBufferStandard, SUBKEY_TYPES, aItem.lTypes );
1224cdf0e10cSrcweir 
1225cdf0e10cSrcweir 			// close set node
1226cdf0e10cSrcweir             m_aData.sBufferStandard.appendAscii( "\t\t</default:group>\n" );
1227cdf0e10cSrcweir 		}
1228cdf0e10cSrcweir 
1229cdf0e10cSrcweir 		// close set
1230cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t</schema:set>\n" );
1231cdf0e10cSrcweir 	}
1232cdf0e10cSrcweir }
1233cdf0e10cSrcweir 
1234cdf0e10cSrcweir //*****************************************************************************************************************
impl_generateLoaderSet()1235cdf0e10cSrcweir void XCDGenerator::impl_generateLoaderSet()
1236cdf0e10cSrcweir {
1237cdf0e10cSrcweir     if( m_aData.pFilterCache->hasLoaders() == sal_False )
1238cdf0e10cSrcweir 	{
1239cdf0e10cSrcweir 		// write empty loader set!
1240cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t<schema:set cfg:name=\"FrameLoaders\" cfg:element-type=\"FrameLoader\"/>\n" );
1241cdf0e10cSrcweir     }
1242cdf0e10cSrcweir     else
1243cdf0e10cSrcweir     {
1244cdf0e10cSrcweir 		// open set
1245cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t<schema:set cfg:name=\"FrameLoaders\" cfg:element-type=\"FrameLoader\">\n" );
1246cdf0e10cSrcweir 
1247cdf0e10cSrcweir         css::uno::Sequence< ::rtl::OUString > lNames = m_aData.pFilterCache->getAllLoaderNames();
1248cdf0e10cSrcweir         css::uno::Sequence< ::rtl::OUString > lEncNames ( lNames )                              ;
1249cdf0e10cSrcweir         sal_Int32                             nCount = lNames.getLength()                       ;
1250cdf0e10cSrcweir         sal_Int32                             nItem  = 0                                        ;
1251cdf0e10cSrcweir 
1252cdf0e10cSrcweir         XCDGenerator::impl_orderAlphabetical( lNames );
1253cdf0e10cSrcweir 
1254cdf0e10cSrcweir         if( m_aData.nVersionOutput == 6 && m_aData.nVersionInput < 6 )
1255cdf0e10cSrcweir         {
1256cdf0e10cSrcweir             ::rtl::OUString sName   ;
1257cdf0e10cSrcweir             ::rtl::OUString sEncName;
1258cdf0e10cSrcweir             for( nItem=0; nItem<nCount; ++nItem )
1259cdf0e10cSrcweir             {
1260cdf0e10cSrcweir                 sName            = lNames[nItem]              ;
1261cdf0e10cSrcweir                 lEncNames[nItem] = impl_encodeSetName( sName );
1262cdf0e10cSrcweir 
1263cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.appendAscii ( "org.openoffice.Office."  );
1264cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.append      ( m_aData.sPackageStandard  );
1265cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.append      ( CFG_PATH_SEPERATOR        );
1266cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.append      ( sName                     );
1267cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.appendAscii ( "\torg.openoffice.Office.");
1268cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.append      ( m_aData.sPackageStandard  );
1269cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.append      ( CFG_PATH_SEPERATOR        );
1270cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.appendAscii ( "FrameLoader"             );
1271cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.append      ( CFG_ENCODING_OPEN         );
1272cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.append      ( sName                     );
1273cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.append      ( CFG_ENCODING_CLOSE        );
1274cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.appendAscii ( "\n"                      );
1275cdf0e10cSrcweir             }
1276cdf0e10cSrcweir         }
1277cdf0e10cSrcweir 
1278cdf0e10cSrcweir         for( nItem=0; nItem<nCount; ++nItem )
1279cdf0e10cSrcweir 		{
1280cdf0e10cSrcweir             ::rtl::OUString sName = lNames[nItem]                           ;
1281cdf0e10cSrcweir             Loader          aItem = m_aData.pFilterCache->getLoader( sName );
1282cdf0e10cSrcweir 
1283cdf0e10cSrcweir             if( m_aData.nVersionOutput == 6 && m_aData.nVersionInput < 6 )
1284cdf0e10cSrcweir             {
1285cdf0e10cSrcweir                 sName = lEncNames[nItem];
1286cdf0e10cSrcweir             }
1287cdf0e10cSrcweir 
1288cdf0e10cSrcweir             ++m_aData.nWrittenLoaders;
1289cdf0e10cSrcweir 
1290cdf0e10cSrcweir 			// open set node by using name
1291cdf0e10cSrcweir             m_aData.sBufferStandard.appendAscii( "\t\t<default:group cfg:name=\""  );
1292cdf0e10cSrcweir             m_aData.sBufferStandard.append     ( sName                             );
1293cdf0e10cSrcweir             m_aData.sBufferStandard.appendAscii( "\">\n"                           );
1294cdf0e10cSrcweir 
1295cdf0e10cSrcweir 			// write properties
1296cdf0e10cSrcweir             impl_generateUINamesProperty    ( m_aData.sBufferStandard, SUBKEY_UINAME, aItem.lUINames );
1297cdf0e10cSrcweir             impl_generateStringListProperty ( m_aData.sBufferStandard, SUBKEY_TYPES , aItem.lTypes   );
1298cdf0e10cSrcweir 
1299cdf0e10cSrcweir 			// close set node
1300cdf0e10cSrcweir             m_aData.sBufferStandard.appendAscii( "\t\t</default:group>\n" );
1301cdf0e10cSrcweir 		}
1302cdf0e10cSrcweir 
1303cdf0e10cSrcweir 		// close set
1304cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t</schema:set>\n" );
1305cdf0e10cSrcweir 	}
1306cdf0e10cSrcweir }
1307cdf0e10cSrcweir 
1308cdf0e10cSrcweir //*****************************************************************************************************************
impl_generateDefaults()1309cdf0e10cSrcweir void XCDGenerator::impl_generateDefaults()
1310cdf0e10cSrcweir {
1311cdf0e10cSrcweir 	// open group
1312cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t<schema:group cfg:name=\"Defaults\">\n" );
1313cdf0e10cSrcweir 
1314cdf0e10cSrcweir 	// write generic loader
1315cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t<schema:value cfg:name=\"FrameLoader\" cfg:type=\"string\">\n"   );
1316cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t\t<default:data>"                                                );
1317cdf0e10cSrcweir     m_aData.sBufferStandard.append     ( m_aData.pFilterCache->getDefaultLoader()                              );
1318cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "</default:data>\n"                                                   );
1319cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t</schema:value>\n"                                               );
1320cdf0e10cSrcweir 
1321cdf0e10cSrcweir 	// write default detector
1322cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t<schema:value cfg:name=\"DetectService\" cfg:type=\"string\">\n" );
1323cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t\t<default:data>"                                                );
1324cdf0e10cSrcweir     m_aData.sBufferStandard.append     ( m_aData.pFilterCache->getDefaultDetector()                            );
1325cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "</default:data>\n"                                                   );
1326cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t\t</schema:value>\n"                                               );
1327cdf0e10cSrcweir 
1328cdf0e10cSrcweir 	// close group
1329cdf0e10cSrcweir     m_aData.sBufferStandard.appendAscii( "\t</schema:group>\n" );
1330cdf0e10cSrcweir }
1331cdf0e10cSrcweir 
1332cdf0e10cSrcweir //*****************************************************************************************************************
impl_generateContentHandlerSet()1333cdf0e10cSrcweir void XCDGenerator::impl_generateContentHandlerSet()
1334cdf0e10cSrcweir {
1335cdf0e10cSrcweir     if( m_aData.pFilterCache->hasContentHandlers() == sal_False )
1336cdf0e10cSrcweir 	{
1337cdf0e10cSrcweir         // write empty handler set!
1338cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t<schema:set cfg:name=\"ContentHandlers\" cfg:element-type=\"ContentHandler\"/>\n" );
1339cdf0e10cSrcweir     }
1340cdf0e10cSrcweir     else
1341cdf0e10cSrcweir     {
1342cdf0e10cSrcweir 		// open set
1343cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t<schema:set cfg:name=\"ContentHandlers\" cfg:element-type=\"ContentHandler\">\n" );
1344cdf0e10cSrcweir 
1345cdf0e10cSrcweir         css::uno::Sequence< ::rtl::OUString > lNames = m_aData.pFilterCache->getAllContentHandlerNames();
1346cdf0e10cSrcweir         css::uno::Sequence< ::rtl::OUString > lEncNames ( lNames )                              ;
1347cdf0e10cSrcweir         sal_Int32                             nCount = lNames.getLength()                       ;
1348cdf0e10cSrcweir         sal_Int32                             nItem  = 0                                        ;
1349cdf0e10cSrcweir 
1350cdf0e10cSrcweir         XCDGenerator::impl_orderAlphabetical( lNames );
1351cdf0e10cSrcweir 
1352cdf0e10cSrcweir         if( m_aData.nVersionOutput == 6 && m_aData.nVersionInput < 6 )
1353cdf0e10cSrcweir         {
1354cdf0e10cSrcweir             ::rtl::OUString sName   ;
1355cdf0e10cSrcweir             ::rtl::OUString sEncName;
1356cdf0e10cSrcweir             for( nItem=0; nItem<nCount; ++nItem )
1357cdf0e10cSrcweir             {
1358cdf0e10cSrcweir                 sName            = lNames[nItem]              ;
1359cdf0e10cSrcweir                 lEncNames[nItem] = impl_encodeSetName( sName );
1360cdf0e10cSrcweir 
1361cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.appendAscii ( "org.openoffice.Office."  );
1362cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.append      ( m_aData.sPackageStandard  );
1363cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.append      ( CFG_PATH_SEPERATOR        );
1364cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.append      ( sName                     );
1365cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.appendAscii ( "\torg.openoffice.Office.");
1366cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.append      ( m_aData.sPackageStandard  );
1367cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.append      ( CFG_PATH_SEPERATOR        );
1368cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.appendAscii ( "ContentHandler"          );
1369cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.append      ( CFG_ENCODING_OPEN         );
1370cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.append      ( sName                     );
1371cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.append      ( CFG_ENCODING_CLOSE        );
1372cdf0e10cSrcweir                 m_aData.sNew2OldSCPStandard.appendAscii ( "\n"                      );
1373cdf0e10cSrcweir             }
1374cdf0e10cSrcweir         }
1375cdf0e10cSrcweir 
1376cdf0e10cSrcweir         for( nItem=0; nItem<nCount; ++nItem )
1377cdf0e10cSrcweir 		{
1378cdf0e10cSrcweir             ::rtl::OUString sName = lNames[nItem]                                   ;
1379cdf0e10cSrcweir             ContentHandler  aItem = m_aData.pFilterCache->getContentHandler( sName );
1380cdf0e10cSrcweir 
1381cdf0e10cSrcweir             if( m_aData.nVersionOutput == 6 && m_aData.nVersionInput < 6 )
1382cdf0e10cSrcweir             {
1383cdf0e10cSrcweir                 sName = lEncNames[nItem];
1384cdf0e10cSrcweir             }
1385cdf0e10cSrcweir 
1386cdf0e10cSrcweir             ++m_aData.nWrittenContentHandlers;
1387cdf0e10cSrcweir 
1388cdf0e10cSrcweir 			// open set node by using name
1389cdf0e10cSrcweir             m_aData.sBufferStandard.appendAscii( "\t\t<default:group cfg:name=\""  );
1390cdf0e10cSrcweir             m_aData.sBufferStandard.append     ( sName                             );
1391cdf0e10cSrcweir             m_aData.sBufferStandard.appendAscii( "\">\n"                           );
1392cdf0e10cSrcweir 
1393cdf0e10cSrcweir 			// write properties
1394cdf0e10cSrcweir             impl_generateStringListProperty( m_aData.sBufferStandard, SUBKEY_TYPES, aItem.lTypes );
1395cdf0e10cSrcweir 
1396cdf0e10cSrcweir 			// close set node
1397cdf0e10cSrcweir             m_aData.sBufferStandard.appendAscii( "\t\t</default:group>\n" );
1398cdf0e10cSrcweir 		}
1399cdf0e10cSrcweir 
1400cdf0e10cSrcweir 		// close set
1401cdf0e10cSrcweir         m_aData.sBufferStandard.appendAscii( "\t</schema:set>\n" );
1402cdf0e10cSrcweir 	}
1403cdf0e10cSrcweir }
1404cdf0e10cSrcweir 
1405cdf0e10cSrcweir //*****************************************************************************************************************
impl_generateIntProperty(::rtl::OUStringBuffer & sXCD,const::rtl::OUString & sName,sal_Int32 nValue)1406cdf0e10cSrcweir void XCDGenerator::impl_generateIntProperty(        ::rtl::OUStringBuffer& sXCD        ,
1407cdf0e10cSrcweir                                             const   ::rtl::OUString&       sName       ,
1408cdf0e10cSrcweir                                                     sal_Int32              nValue      )
1409cdf0e10cSrcweir {
1410cdf0e10cSrcweir 	sXCD.appendAscii( "\t\t\t<default:value cfg:name=\""		   		);
1411cdf0e10cSrcweir 	sXCD.append		( sName										   		);
1412cdf0e10cSrcweir 	sXCD.appendAscii( "\" cfg:type=\"int\" cfg:writable=\""		   		);
1413cdf0e10cSrcweir     sXCD.appendAscii( m_aData.bWriteable==sal_True ? "true\">\n" : "false\">\n" );
1414cdf0e10cSrcweir 	sXCD.appendAscii( "\t\t\t\t<default:data>"							);
1415cdf0e10cSrcweir 	sXCD.append		( (sal_Int32)(nValue)								);
1416cdf0e10cSrcweir 	sXCD.appendAscii( "</default:data>\n\t\t\t</default:value>\n"		);
1417cdf0e10cSrcweir }
1418cdf0e10cSrcweir 
1419cdf0e10cSrcweir //*****************************************************************************************************************
impl_generateBoolProperty(::rtl::OUStringBuffer & sXCD,const::rtl::OUString & sName,sal_Bool bValue)1420cdf0e10cSrcweir void XCDGenerator::impl_generateBoolProperty(           ::rtl::OUStringBuffer& sXCD        ,
1421cdf0e10cSrcweir                                                 const   ::rtl::OUString&       sName       ,
1422cdf0e10cSrcweir                                                         sal_Bool               bValue      )
1423cdf0e10cSrcweir {
1424cdf0e10cSrcweir 	sXCD.appendAscii( "\t\t\t<default:value cfg:name=\""				);
1425cdf0e10cSrcweir 	sXCD.append		( sName												);
1426cdf0e10cSrcweir     sXCD.appendAscii( "\" cfg:type=\"boolean\" cfg:writable=\""         );
1427cdf0e10cSrcweir     sXCD.appendAscii( m_aData.bWriteable==sal_True ? "true\">\n" : "false\">\n" );
1428cdf0e10cSrcweir 	sXCD.appendAscii( "\t\t\t\t<default:data>"							);
1429cdf0e10cSrcweir 	sXCD.appendAscii( bValue==sal_True ? "true" : "false"				);
1430cdf0e10cSrcweir 	sXCD.appendAscii( "</default:data>\n\t\t\t</default:value>\n"		);
1431cdf0e10cSrcweir }
1432cdf0e10cSrcweir 
1433cdf0e10cSrcweir //*****************************************************************************************************************
impl_generateStringProperty(::rtl::OUStringBuffer & sXCD,const::rtl::OUString & sName,const::rtl::OUString & sValue)1434cdf0e10cSrcweir void XCDGenerator::impl_generateStringProperty(         ::rtl::OUStringBuffer& sXCD        ,
1435cdf0e10cSrcweir                                                 const   ::rtl::OUString&       sName       ,
1436cdf0e10cSrcweir                                                 const   ::rtl::OUString&       sValue      )
1437cdf0e10cSrcweir {
1438cdf0e10cSrcweir 	sXCD.appendAscii( "\t\t\t<default:value cfg:name=\""			);
1439cdf0e10cSrcweir 	sXCD.append		( sName											);
1440cdf0e10cSrcweir 	sXCD.appendAscii( "\" cfg:type=\"string\" cfg:writable=\""		);
1441cdf0e10cSrcweir     sXCD.appendAscii( m_aData.bWriteable==sal_True ? "true\"" : "false\""   );
1442cdf0e10cSrcweir 	if( sValue.getLength() > 0 )
1443cdf0e10cSrcweir 	{
1444cdf0e10cSrcweir         sXCD.appendAscii( ">\n\t\t\t\t<default:data>"                       );
1445cdf0e10cSrcweir         sXCD.append     ( XCDGenerator::impl_encodeSpecialSigns( sValue )   );
1446cdf0e10cSrcweir         sXCD.appendAscii( "</default:data>\n\t\t\t</default:value>\n"       );
1447cdf0e10cSrcweir 	}
1448cdf0e10cSrcweir 	else
1449cdf0e10cSrcweir 	{
1450cdf0e10cSrcweir 		sXCD.appendAscii( "/>\n" );
1451cdf0e10cSrcweir 	}
1452cdf0e10cSrcweir }
1453cdf0e10cSrcweir 
1454cdf0e10cSrcweir //*****************************************************************************************************************
impl_generateStringListProperty(::rtl::OUStringBuffer & sXCD,const::rtl::OUString & sName,const::framework::StringList & lValue)1455cdf0e10cSrcweir void XCDGenerator::impl_generateStringListProperty(         ::rtl::OUStringBuffer&      sXCD        ,
1456cdf0e10cSrcweir                                                     const   ::rtl::OUString&            sName       ,
1457cdf0e10cSrcweir                                                     const   ::framework::StringList&    lValue      )
1458cdf0e10cSrcweir {
1459cdf0e10cSrcweir     sXCD.appendAscii( "\t\t\t<default:value cfg:name=\""                );
1460cdf0e10cSrcweir     sXCD.append     ( sName                                             );
1461cdf0e10cSrcweir     sXCD.appendAscii( "\" cfg:type=\"string\" cfg:derivedBy=\"list\""   );
1462cdf0e10cSrcweir 
1463cdf0e10cSrcweir     sal_Unicode cSeperator = XCDGenerator::impl_defineSeperator( lValue );
1464cdf0e10cSrcweir     if( cSeperator != ' ' )
1465cdf0e10cSrcweir     {
1466cdf0e10cSrcweir         sXCD.appendAscii( " cfg:separator=\""  );
1467cdf0e10cSrcweir         sXCD.append     ( cSeperator           );
1468cdf0e10cSrcweir         sXCD.appendAscii( "\""                 );
1469cdf0e10cSrcweir     }
1470cdf0e10cSrcweir 
1471cdf0e10cSrcweir     sXCD.appendAscii( " cfg:writable=\""                                );
1472cdf0e10cSrcweir     sXCD.appendAscii( m_aData.bWriteable==sal_True ? "true\"" : "false\""       );
1473cdf0e10cSrcweir 
1474cdf0e10cSrcweir     sal_Int32 nCount    = (sal_Int32)(lValue.size());
1475cdf0e10cSrcweir     sal_Int32 nPosition = 1;
1476cdf0e10cSrcweir 
1477cdf0e10cSrcweir     if( nCount > 0 )
1478cdf0e10cSrcweir 	{
1479cdf0e10cSrcweir 		sXCD.appendAscii( ">\n\t\t\t\t<default:data>"	);
1480cdf0e10cSrcweir         for( ConstStringListIterator pEntry=lValue.begin(); pEntry!=lValue.end(); ++pEntry )
1481cdf0e10cSrcweir 		{
1482cdf0e10cSrcweir             sXCD.append( *pEntry );
1483cdf0e10cSrcweir             if( nPosition < nCount )
1484cdf0e10cSrcweir             {
1485cdf0e10cSrcweir                 // Seperator for lists allowed only between two values!
1486cdf0e10cSrcweir                 // Don't write leading or leaving seperators ...
1487cdf0e10cSrcweir                 sXCD.append( cSeperator );
1488cdf0e10cSrcweir             }
1489cdf0e10cSrcweir             ++nPosition;
1490cdf0e10cSrcweir 		}
1491cdf0e10cSrcweir 		sXCD.appendAscii( "</default:data>\n\t\t\t</default:value>\n" );
1492cdf0e10cSrcweir 	}
1493cdf0e10cSrcweir 	else
1494cdf0e10cSrcweir 	{
1495cdf0e10cSrcweir 		sXCD.appendAscii( "/>\n" );
1496cdf0e10cSrcweir 	}
1497cdf0e10cSrcweir }
1498cdf0e10cSrcweir 
1499cdf0e10cSrcweir //*****************************************************************************************************************
impl_generateUINamesProperty(::rtl::OUStringBuffer & sXCD,const::rtl::OUString & sName,const StringHash & lUINames)1500cdf0e10cSrcweir void XCDGenerator::impl_generateUINamesProperty(        ::rtl::OUStringBuffer&      sXCD        ,
1501cdf0e10cSrcweir                                                 const   ::rtl::OUString&            sName       ,
1502cdf0e10cSrcweir                                                 const   StringHash&                 lUINames    )
1503cdf0e10cSrcweir {
1504cdf0e10cSrcweir 	sXCD.appendAscii( "\t\t\t<default:value cfg:name=\""								);
1505cdf0e10cSrcweir 	sXCD.append		( sName																);
1506cdf0e10cSrcweir 	sXCD.appendAscii( "\" cfg:type=\"string\" cfg:localized=\"true\" cfg:writable=\""	);
1507cdf0e10cSrcweir     sXCD.appendAscii( m_aData.bWriteable==sal_True ? "true\"" : "false\""               );
1508cdf0e10cSrcweir 
1509cdf0e10cSrcweir 	if( lUINames.size() > 0 )
1510cdf0e10cSrcweir 	{
1511cdf0e10cSrcweir 		sXCD.appendAscii( ">\n" );
1512cdf0e10cSrcweir 
1513cdf0e10cSrcweir         // Search for localized values, which doesn't need full localized set ...
1514cdf0e10cSrcweir         // because all values for all locales are the same!
1515cdf0e10cSrcweir         sal_Bool                   bDifferent  = sal_False       ;
1516cdf0e10cSrcweir         ConstStringHashIterator    pUIName     = lUINames.begin();
1517cdf0e10cSrcweir         ::rtl::OUString            sUIName     = pUIName->second ;
1518cdf0e10cSrcweir         while( pUIName!=lUINames.end() )
1519cdf0e10cSrcweir 		{
1520cdf0e10cSrcweir             if( sUIName != pUIName->second )
1521cdf0e10cSrcweir             {
1522cdf0e10cSrcweir                 bDifferent = sal_True;
1523cdf0e10cSrcweir                 break;
1524cdf0e10cSrcweir             }
1525cdf0e10cSrcweir             ++pUIName;
1526cdf0e10cSrcweir         }
1527cdf0e10cSrcweir 
152807a3d7f1SPedro Giffuni         // Generate full localized set, if some values are really loclaized.
1529cdf0e10cSrcweir         if( bDifferent == sal_True )
1530cdf0e10cSrcweir         {
1531cdf0e10cSrcweir             for( ConstStringHashIterator pUIName=lUINames.begin(); pUIName!=lUINames.end(); ++pUIName )
1532cdf0e10cSrcweir             {
1533cdf0e10cSrcweir                 sXCD.appendAscii( "\t\t\t\t<default:data xml:lang=\""                       );
1534cdf0e10cSrcweir                 sXCD.append     ( pUIName->first                                            );
1535cdf0e10cSrcweir                 sXCD.appendAscii( "\">"                                                     );
1536cdf0e10cSrcweir                 sXCD.append     ( XCDGenerator::impl_encodeSpecialSigns( pUIName->second )  );
1537cdf0e10cSrcweir                 sXCD.appendAscii( "</default:data>\n"                                       );
1538cdf0e10cSrcweir             }
1539cdf0e10cSrcweir         }
1540cdf0e10cSrcweir         // Generate ONE entry as default for our configuration if all localized values are equal!
1541cdf0e10cSrcweir         else
1542cdf0e10cSrcweir         {
1543cdf0e10cSrcweir             sXCD.appendAscii( "\t\t\t\t<default:data xml:lang=\""                                                   );
1544cdf0e10cSrcweir             sXCD.appendAscii( "en-US"                                                                               );
1545cdf0e10cSrcweir             sXCD.appendAscii( "\">"                                                                                 );
1546cdf0e10cSrcweir             sXCD.append     ( XCDGenerator::impl_encodeSpecialSigns( lUINames.find(DECLARE_ASCII("en-US"))->second ));
1547cdf0e10cSrcweir             sXCD.appendAscii( "</default:data>\n"                                                                   );
1548cdf0e10cSrcweir         }
1549cdf0e10cSrcweir 		sXCD.appendAscii( "\t\t\t</default:value>\n" );
1550cdf0e10cSrcweir 	}
1551cdf0e10cSrcweir 	else
1552cdf0e10cSrcweir 	{
1553cdf0e10cSrcweir 		sXCD.appendAscii( "/>\n" );
1554cdf0e10cSrcweir 	}
1555cdf0e10cSrcweir }
1556cdf0e10cSrcweir 
1557cdf0e10cSrcweir //*****************************************************************************************************************
impl_encodeSpecialSigns(const::rtl::OUString & sValue)1558cdf0e10cSrcweir ::rtl::OUString XCDGenerator::impl_encodeSpecialSigns( const ::rtl::OUString& sValue )
1559cdf0e10cSrcweir {
1560cdf0e10cSrcweir     ::rtl::OUStringBuffer  sSource     ( sValue );
1561cdf0e10cSrcweir     ::rtl::OUStringBuffer  sDestination( 10000  );
1562cdf0e10cSrcweir 	sal_Int32		nCount		= sValue.getLength();
1563cdf0e10cSrcweir 	sal_Int32		i			= 0;
1564cdf0e10cSrcweir 
1565cdf0e10cSrcweir 	for( i=0; i<nCount; ++i )
1566cdf0e10cSrcweir 	{
1567cdf0e10cSrcweir         sal_Unicode cSign = sSource.charAt(i);
1568cdf0e10cSrcweir         switch( cSign )
1569cdf0e10cSrcweir 		{
1570cdf0e10cSrcweir             // code &, ", ', <, > ...
1571cdf0e10cSrcweir             case '&' :  sDestination.appendAscii( "&amp;"   );
1572cdf0e10cSrcweir 						break;
1573cdf0e10cSrcweir             case '<' :  sDestination.appendAscii( "&lt;"    );
1574cdf0e10cSrcweir 						break;
1575cdf0e10cSrcweir             case '>' :  sDestination.appendAscii( "&gt;"    );
1576cdf0e10cSrcweir 						break;
1577cdf0e10cSrcweir             case '\'':  sDestination.appendAscii( "&rsquo;" );
1578cdf0e10cSrcweir 						break;
1579cdf0e10cSrcweir             case '\"':  sDestination.appendAscii( "&quot;"  );
1580cdf0e10cSrcweir 						break;
1581cdf0e10cSrcweir 			// copy all other letters
1582cdf0e10cSrcweir             default :   sDestination.append( cSign );
1583cdf0e10cSrcweir 						break;
1584cdf0e10cSrcweir 		}
1585cdf0e10cSrcweir 	}
1586cdf0e10cSrcweir 
1587cdf0e10cSrcweir 	return sDestination.makeStringAndClear();
1588cdf0e10cSrcweir }
1589cdf0e10cSrcweir 
1590cdf0e10cSrcweir //*****************************************************************************************************************
1591cdf0e10cSrcweir // Step over all elements of list to find one seperator, which isn't used for any value in list.
1592cdf0e10cSrcweir // We return an empty string if list contains no elements - because we must disable writing of
1593cdf0e10cSrcweir // "... cfg:seperator="<seperatorvalue> ..."
1594cdf0e10cSrcweir // => Otherwise we get a Sequence< OUString > with one empty element from configuration!!!
impl_defineSeperator(const::framework::StringList & lList)1595cdf0e10cSrcweir sal_Unicode XCDGenerator::impl_defineSeperator( const ::framework::StringList& lList )
1596cdf0e10cSrcweir {
1597cdf0e10cSrcweir     static cSeperator1 = ' ';
1598cdf0e10cSrcweir     static cSeperator2 = ';';
1599cdf0e10cSrcweir     static cSeperator3 = '+';
1600cdf0e10cSrcweir     static cSeperator4 = '-';
1601cdf0e10cSrcweir     static cSeperator5 = '*';
1602cdf0e10cSrcweir 
1603cdf0e10cSrcweir     // Start with first seperator.
1604cdf0e10cSrcweir     // Step over all list items.
1605cdf0e10cSrcweir     // If one item contains this seperator - try next one!
160607a3d7f1SPedro Giffuni     // If no new one available (5 tests failed!) - show an error message for user.
1607cdf0e10cSrcweir     // => File will be wrong then!
1608cdf0e10cSrcweir     // If seperator was changed start search during list again ... because
1609cdf0e10cSrcweir     // new seperator could exist at already compared elements!
1610cdf0e10cSrcweir 
1611cdf0e10cSrcweir     sal_Unicode             cSeperator = cSeperator1  ;
1612cdf0e10cSrcweir     sal_Bool                bOK        = sal_False    ;
1613cdf0e10cSrcweir     ConstStringListIterator pItem      = lList.begin();
1614cdf0e10cSrcweir 
1615cdf0e10cSrcweir     while( bOK == sal_False )
1616cdf0e10cSrcweir     {
1617cdf0e10cSrcweir         if( pItem == lList.end() )
1618cdf0e10cSrcweir         {
1619cdf0e10cSrcweir             bOK = sal_True;
1620cdf0e10cSrcweir         }
1621cdf0e10cSrcweir         else
1622cdf0e10cSrcweir         {
1623cdf0e10cSrcweir             while( pItem!=lList.end() )
1624cdf0e10cSrcweir             {
1625cdf0e10cSrcweir                 if( pItem->indexOf( cSeperator, 0 ) != -1 )
1626cdf0e10cSrcweir                 {
1627cdf0e10cSrcweir                     if( cSeperator == cSeperator1 )
1628cdf0e10cSrcweir                     {
1629cdf0e10cSrcweir                         cSeperator = cSeperator2;
1630cdf0e10cSrcweir                         pItem      = lList.begin();
1631cdf0e10cSrcweir                         break;
1632cdf0e10cSrcweir                     }
1633cdf0e10cSrcweir                     else
1634cdf0e10cSrcweir                     if( cSeperator == cSeperator2 )
1635cdf0e10cSrcweir                     {
1636cdf0e10cSrcweir                         cSeperator = cSeperator3;
1637cdf0e10cSrcweir                         pItem      = lList.begin();
1638cdf0e10cSrcweir                         break;
1639cdf0e10cSrcweir                     }
1640cdf0e10cSrcweir                     else
1641cdf0e10cSrcweir                     if( cSeperator == cSeperator3 )
1642cdf0e10cSrcweir                     {
1643cdf0e10cSrcweir                         cSeperator = cSeperator4;
1644cdf0e10cSrcweir                         pItem      = lList.begin();
1645cdf0e10cSrcweir                         break;
1646cdf0e10cSrcweir                     }
1647cdf0e10cSrcweir                     else
1648cdf0e10cSrcweir                     if( cSeperator == cSeperator4 )
1649cdf0e10cSrcweir                     {
1650cdf0e10cSrcweir                         cSeperator = cSeperator5;
1651cdf0e10cSrcweir                         pItem      = lList.begin();
1652cdf0e10cSrcweir                         break;
1653cdf0e10cSrcweir                     }
1654cdf0e10cSrcweir                     else
1655cdf0e10cSrcweir                     if( cSeperator == cSeperator5 )
1656cdf0e10cSrcweir                     {
1657cdf0e10cSrcweir                         LOG_ERROR( "XCDGenerator::impl_defineSeperator()", "Can't find seperator for given list! Generated XCD file will be wrong!" )
1658cdf0e10cSrcweir                         exit(-1);
1659cdf0e10cSrcweir                     }
1660cdf0e10cSrcweir                 }
1661cdf0e10cSrcweir                 else
1662cdf0e10cSrcweir                 {
1663cdf0e10cSrcweir                     ++pItem;
1664cdf0e10cSrcweir                 }
1665cdf0e10cSrcweir             }
1666cdf0e10cSrcweir         }
1667cdf0e10cSrcweir     }
1668cdf0e10cSrcweir 
1669cdf0e10cSrcweir     return cSeperator;
1670cdf0e10cSrcweir }
1671cdf0e10cSrcweir 
1672cdf0e10cSrcweir //*****************************************************************************************************************
impl_initFilterHashNew2Old(StringHash & aHash)1673cdf0e10cSrcweir void XCDGenerator::impl_initFilterHashNew2Old( StringHash& aHash )
1674cdf0e10cSrcweir {
1675cdf0e10cSrcweir 	// key = new filter name, value = old name
1676cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_StarOffice_XML_Writer"                      )] =   DECLARE_ASCII("swriter: StarOffice XML (Writer)"                            );
1677cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_StarWriter_50"                              )] =   DECLARE_ASCII("swriter: StarWriter 5.0"                                     );
1678cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_StarWriter_50_VorlageTemplate"              )] =   DECLARE_ASCII("swriter: StarWriter 5.0 Vorlage/Template"                    );
1679cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_StarWriter_40"                              )] =   DECLARE_ASCII("swriter: StarWriter 4.0"                                     );
1680cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_StarWriter_40_VorlageTemplate"              )] =   DECLARE_ASCII("swriter: StarWriter 4.0 Vorlage/Template"                    );
1681cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_StarWriter_30"                              )] =   DECLARE_ASCII("swriter: StarWriter 3.0"                                     );
1682cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_StarWriter_30_VorlageTemplate"              )] =   DECLARE_ASCII("swriter: StarWriter 3.0 Vorlage/Template"                    );
1683cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_StarWriter_20"                              )] =   DECLARE_ASCII("swriter: StarWriter 2.0"                                     );
1684cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_StarWriter_10"                              )] =   DECLARE_ASCII("swriter: StarWriter 1.0"                                     );
1685cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_StarWriter_DOS"                             )] =   DECLARE_ASCII("swriter: StarWriter DOS"                                     );
1686cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_HTML_StarWriter"                            )] =   DECLARE_ASCII("swriter: HTML (StarWriter)"                                  );
1687cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Text"                                       )] =   DECLARE_ASCII("swriter: Text"                                               );
1688cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Text_Unix"                                  )] =   DECLARE_ASCII("swriter: Text Unix"                                          );
1689cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Text_Mac"                                   )] =   DECLARE_ASCII("swriter: Text Mac"                                           );
1690cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Text_DOS"                                   )] =   DECLARE_ASCII("swriter: Text DOS"                                           );
1691cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Rich_Text_Format"                           )] =   DECLARE_ASCII("swriter: Rich Text Format"                                   );
1692cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_MS_Word_97"                                 )] =   DECLARE_ASCII("swriter: MS Word 97"                                         );
1693cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_MS_Word_95"                                 )] =   DECLARE_ASCII("swriter: MS Word 95"                                         );
1694cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_MS_Word_97_Vorlage"                         )] =   DECLARE_ASCII("swriter: MS Word 97 Vorlage"                                 );
1695cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_MS_Word_95_Vorlage"                         )] =   DECLARE_ASCII("swriter: MS Word 95 Vorlage"                                 );
1696cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_MS_WinWord_60"                              )] =   DECLARE_ASCII("swriter: MS WinWord 6.0"                                     );
1697cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_MS_Word_6x_W4W"                             )] =   DECLARE_ASCII("swriter: MS Word 6.x (W4W)"                                  );
1698cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_MS_WinWord_5"                               )] =   DECLARE_ASCII("swriter: MS WinWord 5"                                       );
1699cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_MS_WinWord_2x_W4W"                          )] =   DECLARE_ASCII("swriter: MS WinWord 2.x (W4W)"                               );
1700cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_MS_MacWord_5x_W4W"                          )] =   DECLARE_ASCII("swriter: MS MacWord 5.x (W4W)"                               );
1701cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_WordPerfect_Win_61_W4W"                     )] =   DECLARE_ASCII("swriter: WordPerfect (Win) 6.1 (W4W)"                        );
1702cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_WordPerfect_Win_70_W4W"                     )] =   DECLARE_ASCII("swriter: WordPerfect (Win) 7.0 (W4W)"                        );
1703cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_WordStar_Win_1x_20_W4W"                     )] =   DECLARE_ASCII("swriter: WordStar (Win) 1.x-2.0 (W4W)"                       );
1704cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_WordStar_70_W4W"                            )] =   DECLARE_ASCII("swriter: WordStar 7.0  (W4W)"                                );
1705cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Ami_Pro_11_12_W4W"                          )] =   DECLARE_ASCII("swriter: Ami Pro 1.1-1.2 (W4W)"                              );
1706cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Ami_Pro_20_31_W4W"                          )] =   DECLARE_ASCII("swriter: Ami Pro 2.0-3.1 (W4W)"                              );
1707cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_MS_Excel_40_StarWriter"                     )] =   DECLARE_ASCII("swriter: MS Excel 4.0 (StarWriter)"                          );
1708cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_MS_Excel_50_StarWriter"                     )] =   DECLARE_ASCII("swriter: MS Excel 5.0 (StarWriter)"                          );
1709cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_MS_Excel_95_StarWriter"                     )] =   DECLARE_ASCII("swriter: MS Excel 95 (StarWriter)"                           );
1710cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_MS_Works_20_DOS_W4W"                        )] =   DECLARE_ASCII("swriter: MS Works 2.0 DOS (W4W)"                             );
1711cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_MS_Works_30_Win_W4W"                        )] =   DECLARE_ASCII("swriter: MS Works 3.0 Win (W4W)"                             );
1712cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Lotus_1_2_3_10_DOS_StarWriter"              )] =   DECLARE_ASCII("swriter: Lotus 1-2-3 1.0 (DOS) (StarWriter)"                 );
1713cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Lotus_1_2_3_10_WIN_StarWriter"              )] =   DECLARE_ASCII("swriter: Lotus 1-2-3 1.0 (WIN) (StarWriter)"                 );
1714cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Frame_Maker_MIF_50_W4W"                     )] =   DECLARE_ASCII("swriter: Frame Maker MIF 5.0 (W4W)"                          );
1715cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Win_Write_3x_W4W"                           )] =   DECLARE_ASCII("swriter: Win Write 3.x (W4W)"                                );
1716cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Text_encoded"                               )] =   DECLARE_ASCII("swriter: Text (encoded)"                                     );
1717cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_MS_WinWord_1x_W4W"                          )] =   DECLARE_ASCII("swriter: MS WinWord 1.x (W4W)"                               );
1718cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_MS_Word_5x_W4W"                             )] =   DECLARE_ASCII("swriter: MS Word 5.x (W4W)"                                  );
1719cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_MS_Word_4x_W4W"                             )] =   DECLARE_ASCII("swriter: MS Word 4.x (W4W)"                                  );
1720cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_MS_Word_3x_W4W"                             )] =   DECLARE_ASCII("swriter: MS Word 3.x (W4W)"                                  );
1721cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_MS_MacWord_40_W4W"                          )] =   DECLARE_ASCII("swriter: MS MacWord 4.0 (W4W)"                               );
1722cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_MS_MacWord_30_W4W"                          )] =   DECLARE_ASCII("swriter: MS MacWord 3.0 (W4W)"                               );
1723cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_WordPerfect_Mac_1_W4W"                      )] =   DECLARE_ASCII("swriter: WordPerfect Mac 1 (W4W)"                            );
1724cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_WordPerfect_Mac_2_W4W"                      )] =   DECLARE_ASCII("swriter: WordPerfect Mac 2 (W4W)"                            );
1725cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_WordPerfect_Mac_3_W4W"                      )] =   DECLARE_ASCII("swriter: WordPerfect Mac 3 (W4W)"                            );
1726cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_WordPerfect_Win_51_52_W4W"                  )] =   DECLARE_ASCII("swriter: WordPerfect (Win) 5.1-5.2 (W4W)"                    );
1727cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_WordPerfect_Win_60_W4W"                     )] =   DECLARE_ASCII("swriter: WordPerfect (Win) 6.0 (W4W)"                        );
1728cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_WordPerfect_41_W4W"                         )] =   DECLARE_ASCII("swriter: WordPerfect 4.1 (W4W)"                              );
1729cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_WordPerfect_42_W4W"                         )] =   DECLARE_ASCII("swriter: WordPerfect 4.2 (W4W)"                              );
1730cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_WordPerfect_50_W4W"                         )] =   DECLARE_ASCII("swriter: WordPerfect 5.0 (W4W)"                              );
1731cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_WordPerfect_51_W4W"                         )] =   DECLARE_ASCII("swriter: WordPerfect 5.1 (W4W)"                              );
1732cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_WordPerfect_60_W4W"                         )] =   DECLARE_ASCII("swriter: WordPerfect 6.0 (W4W)"                              );
1733cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_WordPerfect_61_W4W"                         )] =   DECLARE_ASCII("swriter: WordPerfect 6.1 (W4W)"                              );
1734cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_WordStar_2000_Rel_30_W4W"                   )] =   DECLARE_ASCII("swriter: WordStar 2000 Rel. 3.0 (W4W)"                       );
1735cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_WordStar_2000_Rel_35_W4W"                   )] =   DECLARE_ASCII("swriter: WordStar 2000 Rel. 3.5 (W4W)"                       );
1736cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_WordStar_33x_W4W"                           )] =   DECLARE_ASCII("swriter: WordStar 3.3x (W4W)"                                );
1737cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_WordStar_345_W4W"                           )] =   DECLARE_ASCII("swriter: WordStar 3.45 (W4W)"                                );
1738cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_WordStar_40_W4W"                            )] =   DECLARE_ASCII("swriter: WordStar 4.0  (W4W)"                                );
1739cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_WordStar_50_W4W"                            )] =   DECLARE_ASCII("swriter: WordStar 5.0  (W4W)"                                );
1740cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_WordStar_55_W4W"                            )] =   DECLARE_ASCII("swriter: WordStar 5.5  (W4W)"                                );
1741cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_WordStar_60_W4W"                            )] =   DECLARE_ASCII("swriter: WordStar 6.0  (W4W)"                                );
1742cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_MS_Works_40_Mac_W4W"                        )] =   DECLARE_ASCII("swriter: MS Works 4.0 Mac (W4W)"                             );
1743cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Mac_Write_4x_50_W4W"                        )] =   DECLARE_ASCII("swriter: Mac Write 4.x 5.0 (W4W)"                            );
1744cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Mac_Write_II_W4W"                           )] =   DECLARE_ASCII("swriter: Mac Write II (W4W)"                                 );
1745cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Mac_Write_Pro_W4W"                          )] =   DECLARE_ASCII("swriter: Mac Write Pro (W4W)"                                );
1746cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Lotus_Manuscript_W4W"                       )] =   DECLARE_ASCII("swriter: Lotus Manuscript (W4W)"                             );
1747cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_MASS_11_Rel_80_83_W4W"                      )] =   DECLARE_ASCII("swriter: MASS 11 Rel. 8.0-8.3 (W4W)"                         );
1748cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_MASS_11_Rel_85_90_W4W"                      )] =   DECLARE_ASCII("swriter: MASS 11 Rel. 8.5-9.0 (W4W)"                         );
1749cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Claris_Works_W4W"                           )] =   DECLARE_ASCII("swriter: Claris Works (W4W)"                                 );
1750cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_CTOS_DEF_W4W"                               )] =   DECLARE_ASCII("swriter: CTOS DEF (W4W)"                                     );
1751cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_OfficeWriter_40_W4W"                        )] =   DECLARE_ASCII("swriter: OfficeWriter 4.0 (W4W)"                             );
1752cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_OfficeWriter_50_W4W"                        )] =   DECLARE_ASCII("swriter: OfficeWriter 5.0 (W4W)"                             );
1753cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_OfficeWriter_6x_W4W"                        )] =   DECLARE_ASCII("swriter: OfficeWriter 6.x (W4W)"                             );
1754cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_XyWrite_III_W4W"                            )] =   DECLARE_ASCII("swriter: XyWrite III ( W4W)"                                 );
1755cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_XyWrite_IIIP_W4W"                           )] =   DECLARE_ASCII("swriter: XyWrite III+ ( W4W)"                                );
1756cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_XyWrite_Signature_W4W"                      )] =   DECLARE_ASCII("swriter: XyWrite Signature (W4W)"                            );
1757cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_XyWrite_Sig_Win_W4W"                        )] =   DECLARE_ASCII("swriter: XyWrite Sig. (Win) (W4W)"                           );
1758cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_XyWrite_IV_W4W"                             )] =   DECLARE_ASCII("swriter: XyWrite IV (W4W)"                                   );
1759cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_XyWrite_Win_10_W4W"                         )] =   DECLARE_ASCII("swriter: XyWrite (Win) 1.0 (W4W)"                            );
1760cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_XEROX_XIF_50_W4W"                           )] =   DECLARE_ASCII("swriter: XEROX XIF 5.0 (W4W)"                                );
1761cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_XEROX_XIF_50_Illustrator_W4W"               )] =   DECLARE_ASCII("swriter: XEROX XIF 5.0 (Illustrator) (W4W)"                  );
1762cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_XEROX_XIF_60_Color_Bitmap_W4W"              )] =   DECLARE_ASCII("swriter: XEROX XIF 6.0 (Color Bitmap) (W4W)"                 );
1763cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_XEROX_XIF_60_Res_Graphic_W4W"               )] =   DECLARE_ASCII("swriter: XEROX XIF 6.0 (Res Graphic) (W4W)"                  );
1764cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_WriteNow_30_Macintosh_W4W"                  )] =   DECLARE_ASCII("swriter: WriteNow 3.0 (Macintosh) (W4W)"                     );
1765cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Writing_Assistant_W4W"                      )] =   DECLARE_ASCII("swriter: Writing Assistant (W4W)"                            );
1766cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_VolksWriter_Deluxe_W4W"                     )] =   DECLARE_ASCII("swriter: VolksWriter Deluxe (W4W)"                           );
1767cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_VolksWriter_3_and_4_W4W"                    )] =   DECLARE_ASCII("swriter: VolksWriter 3 and 4 (W4W)"                          );
1768cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_MultiMate_33_W4W"                           )] =   DECLARE_ASCII("swriter: MultiMate 3.3 (W4W)"                                );
1769cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_MultiMate_Adv_36_W4W"                       )] =   DECLARE_ASCII("swriter: MultiMate Adv. 3.6 (W4W)"                           );
1770cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_MultiMate_Adv_II_37_W4W"                    )] =   DECLARE_ASCII("swriter: MultiMate Adv. II 3.7 (W4W)"                        );
1771cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_MultiMate_4_W4W"                            )] =   DECLARE_ASCII("swriter: MultiMate 4 (W4W)"                                  );
1772cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_NAVY_DIF_W4W"                               )] =   DECLARE_ASCII("swriter: NAVY DIF (W4W)"                                     );
1773cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_PFS_Write_W4W"                              )] =   DECLARE_ASCII("swriter: PFS Write (W4W)"                                    );
1774cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_PFS_First_Choice_10_W4W"                    )] =   DECLARE_ASCII("swriter: PFS First Choice 1.0 (W4W)"                         );
1775cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_PFS_First_Choice_20_W4W"                    )] =   DECLARE_ASCII("swriter: PFS First Choice 2.0 (W4W)"                         );
1776cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_PFS_First_Choice_30_W4W"                    )] =   DECLARE_ASCII("swriter: PFS First Choice 3.0 (W4W)"                         );
1777cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Professional_Write_10_W4W"                  )] =   DECLARE_ASCII("swriter: Professional Write 1.0 (W4W)"                       );
1778cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Professional_Write_2x_W4W"                  )] =   DECLARE_ASCII("swriter: Professional Write 2.x (W4W)"                       );
1779cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Professional_Write_Plus_W4W"                )] =   DECLARE_ASCII("swriter: Professional Write Plus (W4W)"                      );
1780cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Peach_Text_W4W"                             )] =   DECLARE_ASCII("swriter: Peach Text (W4W)"                                   );
1781cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_DCA_Revisable_Form_Text_W4W"                )] =   DECLARE_ASCII("swriter: DCA Revisable Form Text (W4W)"                      );
1782cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_DCA_with_Display_Write_5_W4W"               )] =   DECLARE_ASCII("swriter: DCA with Display Write 5 (W4W)"                     );
1783cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_DCAFFT_Final_Form_Text_W4W"                 )] =   DECLARE_ASCII("swriter: DCA/FFT-Final Form Text (W4W)"                      );
1784cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_DEC_DX_W4W"                                 )] =   DECLARE_ASCII("swriter: DEC DX (W4W)"                                       );
1785cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_DEC_WPS_PLUS_W4W"                           )] =   DECLARE_ASCII("swriter: DEC WPS-PLUS (W4W)"                                 );
1786cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_DisplayWrite_20_4x_W4W"                     )] =   DECLARE_ASCII("swriter: DisplayWrite 2.0-4.x (W4W)"                         );
1787cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_DisplayWrite_5x_W4W"                        )] =   DECLARE_ASCII("swriter: DisplayWrite 5.x (W4W)"                             );
1788cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_DataGeneral_CEO_Write_W4W"                  )] =   DECLARE_ASCII("swriter: DataGeneral CEO Write (W4W)"                        );
1789cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_EBCDIC_W4W"                                 )] =   DECLARE_ASCII("swriter: EBCDIC (W4W)"                                       );
1790cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Enable_W4W"                                 )] =   DECLARE_ASCII("swriter: Enable (W4W)"                                       );
1791cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Frame_Maker_MIF_30_W4W"                     )] =   DECLARE_ASCII("swriter: Frame Maker MIF 3.0 (W4W)"                          );
1792cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Frame_Maker_MIF_40_W4W"                     )] =   DECLARE_ASCII("swriter: Frame Maker MIF 4.0 (W4W)"                          );
1793cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Frame_Work_III_W4W"                         )] =   DECLARE_ASCII("swriter: Frame Work III (W4W)"                               );
1794cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Frame_Work_IV_W4W"                          )] =   DECLARE_ASCII("swriter: Frame Work IV  (W4W)"                               );
1795cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_HP_AdvanceWrite_Plus_W4W"                   )] =   DECLARE_ASCII("swriter: HP AdvanceWrite Plus (W4W)"                         );
1796cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_ICL_Office_Power_6_W4W"                     )] =   DECLARE_ASCII("swriter: ICL Office Power 6 (W4W)"                           );
1797cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_ICL_Office_Power_7_W4W"                     )] =   DECLARE_ASCII("swriter: ICL Office Power 7 (W4W)"                           );
1798cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Interleaf_W4W"                              )] =   DECLARE_ASCII("swriter: Interleaf (W4W)"                                    );
1799cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Interleaf_5_6_W4W"                          )] =   DECLARE_ASCII("swriter: Interleaf 5 - 6 (W4W)"                              );
1800cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Legacy_Winstar_onGO_W4W"                    )] =   DECLARE_ASCII("swriter: Legacy Winstar onGO (W4W)"                          );
1801cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_QA_Write_10_30_W4W"                         )] =   DECLARE_ASCII("swriter: Q&A Write 1.0-3.0 (W4W)"                            );
1802cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_QA_Write_40_W4W"                            )] =   DECLARE_ASCII("swriter: Q&A Write 4.0 (W4W)"                                );
1803cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Rapid_File_10_W4W"                          )] =   DECLARE_ASCII("swriter: Rapid File 1.0 (W4W)"                               );
1804cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Rapid_File_12_W4W"                          )] =   DECLARE_ASCII("swriter: Rapid File 1.2 (W4W)"                               );
1805cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Samna_Word_IV_IV_Plus_W4W"                  )] =   DECLARE_ASCII("swriter: Samna Word IV-IV Plus (W4W)"                        );
1806cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Total_Word_W4W"                             )] =   DECLARE_ASCII("swriter: Total Word (W4W)"                                   );
1807cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Uniplex_onGO_W4W"                           )] =   DECLARE_ASCII("swriter: Uniplex onGO (W4W)"                                 );
1808cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Uniplex_V7_V8_W4W"                          )] =   DECLARE_ASCII("swriter: Uniplex V7-V8 (W4W)"                                );
1809cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Wang_PC_W4W"                                )] =   DECLARE_ASCII("swriter: Wang PC (W4W)"                                      );
1810cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Wang_II_SWP_W4W"                            )] =   DECLARE_ASCII("swriter: Wang II SWP (W4W)"                                  );
1811cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_Wang_WP_Plus_W4W"                           )] =   DECLARE_ASCII("swriter: Wang WP Plus (W4W)"                                 );
1812cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_WITA_W4W"                                   )] =   DECLARE_ASCII("swriter: WITA (W4W)"                                         );
1813cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_WiziWord_30_W4W"                            )] =   DECLARE_ASCII("swriter: WiziWord 3.0 (W4W)"                                 );
1814cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_web_HTML"                                   )] =   DECLARE_ASCII("swriter/web: HTML"                                           );
1815cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_web_StarWriterWeb_50_VorlageTemplate"       )] =   DECLARE_ASCII("swriter/web: StarWriter/Web 5.0 Vorlage/Template"            );
1816cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_web_StarWriterWeb_40_VorlageTemplate"       )] =   DECLARE_ASCII("swriter/web: StarWriter/Web 4.0 Vorlage/Template"            );
1817cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_web_Text_StarWriterWeb"                     )] =   DECLARE_ASCII("swriter/web: Text (StarWriter/Web)"                          );
1818cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_web_Text_DOS_StarWriterWeb"                 )] =   DECLARE_ASCII("swriter/web: Text DOS (StarWriter/Web)"                      );
1819cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_web_Text_Mac_StarWriterWeb"                 )] =   DECLARE_ASCII("swriter/web: Text Mac (StarWriter/Web)"                      );
1820cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_web_Text_Unix_StarWriterWeb"                )] =   DECLARE_ASCII("swriter/web: Text Unix (StarWriter/Web)"                     );
1821cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_web_StarWriter_50"                          )] =   DECLARE_ASCII("swriter/web: StarWriter 5.0"                                 );
1822cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_web_StarWriter_40"                          )] =   DECLARE_ASCII("swriter/web: StarWriter 4.0"                                 );
1823cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_web_StarWriter_30"                          )] =   DECLARE_ASCII("swriter/web: StarWriter 3.0"                                 );
1824cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_web_Text_encoded"                           )] =   DECLARE_ASCII("swriter/web: Text (encoded)"                                 );
1825cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_globaldocument_StarWriter_60GlobalDocument" )] =   DECLARE_ASCII("swriter/GlobalDocument: StarOffice XML (GlobalDocument)"     );
1826cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_globaldocument_StarWriter_50GlobalDocument" )] =   DECLARE_ASCII("swriter/GlobalDocument: StarWriter 5.0/GlobalDocument"       );
1827cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_globaldocument_StarWriter_40GlobalDocument" )] =   DECLARE_ASCII("swriter/GlobalDocument: StarWriter 4.0/GlobalDocument"       );
1828cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_globaldocument_StarWriter_50"               )] =   DECLARE_ASCII("swriter/GlobalDocument: StarWriter 5.0"                      );
1829cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_globaldocument_StarWriter_40"               )] =   DECLARE_ASCII("swriter/GlobalDocument: StarWriter 4.0"                      );
1830cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_globaldocument_StarWriter_30"               )] =   DECLARE_ASCII("swriter/GlobalDocument: StarWriter 3.0"                      );
1831cdf0e10cSrcweir     aHash[DECLARE_ASCII("writer_globaldocument_Text_encoded"                )] =   DECLARE_ASCII("swriter/GlobalDocument: Text (encoded)"                      );
1832cdf0e10cSrcweir     aHash[DECLARE_ASCII("chart_StarOffice_XML_Chart"                        )] =   DECLARE_ASCII("schart: StarOffice XML (Chart)"                              );
1833cdf0e10cSrcweir     aHash[DECLARE_ASCII("chart_StarChart_50"                                )] =   DECLARE_ASCII("schart: StarChart 5.0"                                       );
1834cdf0e10cSrcweir     aHash[DECLARE_ASCII("chart_StarChart_40"                                )] =   DECLARE_ASCII("schart: StarChart 4.0"                                       );
1835cdf0e10cSrcweir     aHash[DECLARE_ASCII("chart_StarChart_30"                                )] =   DECLARE_ASCII("schart: StarChart 3.0"                                       );
1836cdf0e10cSrcweir     aHash[DECLARE_ASCII("calc_StarOffice_XML_Calc"                          )] =   DECLARE_ASCII("scalc: StarOffice XML (Calc)"                                );
1837cdf0e10cSrcweir     aHash[DECLARE_ASCII("calc_StarCalc_50"                                  )] =   DECLARE_ASCII("scalc: StarCalc 5.0"                                         );
1838cdf0e10cSrcweir     aHash[DECLARE_ASCII("calc_StarCalc_50_VorlageTemplate"                  )] =   DECLARE_ASCII("scalc: StarCalc 5.0 Vorlage/Template"                        );
1839cdf0e10cSrcweir     aHash[DECLARE_ASCII("calc_StarCalc_40"                                  )] =   DECLARE_ASCII("scalc: StarCalc 4.0"                                         );
1840cdf0e10cSrcweir     aHash[DECLARE_ASCII("calc_StarCalc_40_VorlageTemplate"                  )] =   DECLARE_ASCII("scalc: StarCalc 4.0 Vorlage/Template"                        );
1841cdf0e10cSrcweir     aHash[DECLARE_ASCII("calc_StarCalc_30"                                  )] =   DECLARE_ASCII("scalc: StarCalc 3.0"                                         );
1842cdf0e10cSrcweir     aHash[DECLARE_ASCII("calc_StarCalc_30_VorlageTemplate"                  )] =   DECLARE_ASCII("scalc: StarCalc 3.0 Vorlage/Template"                        );
1843cdf0e10cSrcweir     aHash[DECLARE_ASCII("calc_MS_Excel_97"                                  )] =   DECLARE_ASCII("scalc: MS Excel 97"                                          );
1844cdf0e10cSrcweir     aHash[DECLARE_ASCII("calc_MS_Excel_97_VorlageTemplate"                  )] =   DECLARE_ASCII("scalc: MS Excel 97 Vorlage/Template"                         );
1845cdf0e10cSrcweir     aHash[DECLARE_ASCII("calc_MS_Excel_95"                                  )] =   DECLARE_ASCII("scalc: MS Excel 95"                                          );
1846cdf0e10cSrcweir     aHash[DECLARE_ASCII("calc_MS_Excel_95_VorlageTemplate"                  )] =   DECLARE_ASCII("scalc: MS Excel 95 Vorlage/Template"                         );
1847cdf0e10cSrcweir     aHash[DECLARE_ASCII("calc_MS_Excel_5095"                                )] =   DECLARE_ASCII("scalc: MS Excel 5.0/95"                                      );
1848cdf0e10cSrcweir     aHash[DECLARE_ASCII("calc_MS_Excel_5095_VorlageTemplate"                )] =   DECLARE_ASCII("scalc: MS Excel 5.0/95 Vorlage/Template"                     );
1849cdf0e10cSrcweir     aHash[DECLARE_ASCII("calc_MS_Excel_40"                                  )] =   DECLARE_ASCII("scalc: MS Excel 4.0"                                         );
1850cdf0e10cSrcweir     aHash[DECLARE_ASCII("calc_MS_Excel_40_VorlageTemplate"                  )] =   DECLARE_ASCII("scalc: MS Excel 4.0 Vorlage/Template"                        );
1851cdf0e10cSrcweir     aHash[DECLARE_ASCII("calc_Rich_Text_Format_StarCalc"                    )] =   DECLARE_ASCII("scalc: Rich Text Format (StarCalc)"                          );
1852cdf0e10cSrcweir     aHash[DECLARE_ASCII("calc_SYLK"                                         )] =   DECLARE_ASCII("scalc: SYLK"                                                 );
1853cdf0e10cSrcweir     aHash[DECLARE_ASCII("calc_DIF"                                          )] =   DECLARE_ASCII("scalc: DIF"                                                  );
1854cdf0e10cSrcweir     aHash[DECLARE_ASCII("calc_HTML_StarCalc"                                )] =   DECLARE_ASCII("scalc: HTML (StarCalc)"                                      );
1855cdf0e10cSrcweir     aHash[DECLARE_ASCII("calc_dBase"                                        )] =   DECLARE_ASCII("scalc: dBase"                                                );
1856cdf0e10cSrcweir     aHash[DECLARE_ASCII("calc_Lotus"                                        )] =   DECLARE_ASCII("scalc: Lotus"                                                );
1857cdf0e10cSrcweir     aHash[DECLARE_ASCII("calc_StarCalc_10"                                  )] =   DECLARE_ASCII("scalc: StarCalc 1.0"                                         );
1858cdf0e10cSrcweir     aHash[DECLARE_ASCII("calc_Text_txt_csv_StarCalc"                        )] =   DECLARE_ASCII("scalc: Text - txt - csv (StarCalc)"                          );
1859cdf0e10cSrcweir     aHash[DECLARE_ASCII("impress_StarOffice_XML_Impress"                    )] =   DECLARE_ASCII("simpress: StarOffice XML (Impress)"                          );
1860cdf0e10cSrcweir     aHash[DECLARE_ASCII("impress_StarImpress_50"                            )] =   DECLARE_ASCII("simpress: StarImpress 5.0"                                   );
1861cdf0e10cSrcweir     aHash[DECLARE_ASCII("impress_StarImpress_50_Vorlage"                    )] =   DECLARE_ASCII("simpress: StarImpress 5.0 Vorlage"                           );
1862cdf0e10cSrcweir     aHash[DECLARE_ASCII("impress_StarImpress_40"                            )] =   DECLARE_ASCII("simpress: StarImpress 4.0"                                   );
1863cdf0e10cSrcweir     aHash[DECLARE_ASCII("impress_StarImpress_40_Vorlage"                    )] =   DECLARE_ASCII("simpress: StarImpress 4.0 Vorlage"                           );
1864cdf0e10cSrcweir     aHash[DECLARE_ASCII("impress_StarDraw_50_StarImpress"                   )] =   DECLARE_ASCII("simpress: StarDraw 5.0 (StarImpress)"                        );
1865cdf0e10cSrcweir     aHash[DECLARE_ASCII("impress_StarDraw_50_Vorlage_StarImpress"           )] =   DECLARE_ASCII("simpress: StarDraw 5.0 Vorlage (StarImpress)"                );
1866cdf0e10cSrcweir     aHash[DECLARE_ASCII("impress_StarDraw_30_StarImpress"                   )] =   DECLARE_ASCII("simpress: StarDraw 3.0 (StarImpress)"                        );
1867cdf0e10cSrcweir     aHash[DECLARE_ASCII("impress_StarDraw_30_Vorlage_StarImpress"           )] =   DECLARE_ASCII("simpress: StarDraw 3.0 Vorlage (StarImpress)"                );
1868cdf0e10cSrcweir     aHash[DECLARE_ASCII("impress_MS_PowerPoint_97"                          )] =   DECLARE_ASCII("simpress: MS PowerPoint 97"                                  );
1869cdf0e10cSrcweir     aHash[DECLARE_ASCII("impress_MS_PowerPoint_97_Vorlage"                  )] =   DECLARE_ASCII("simpress: MS PowerPoint 97 Vorlage"                          );
1870cdf0e10cSrcweir     aHash[DECLARE_ASCII("impress_CGM_Computer_Graphics_Metafile"            )] =   DECLARE_ASCII("simpress: CGM - Computer Graphics Metafile"                  );
1871cdf0e10cSrcweir     aHash[DECLARE_ASCII("impress_StarImpress_50_packed"                     )] =   DECLARE_ASCII("simpress: StarImpress 5.0 (packed)"                          );
1872cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_StarOffice_XML_Draw"                          )] =   DECLARE_ASCII("sdraw: StarOffice XML (Draw)"                                );
1873cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_GIF_Graphics_Interchange"                     )] =   DECLARE_ASCII("sdraw: GIF - Graphics Interchange"                           );
1874cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_PCD_Photo_CD"                                 )] =   DECLARE_ASCII("sdraw: PCD - Photo CD"                                       );
1875cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_PCX_Zsoft_Paintbrush"                         )] =   DECLARE_ASCII("sdraw: PCX - Zsoft Paintbrush"                               );
1876cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_PSD_Adobe_Photoshop"                          )] =   DECLARE_ASCII("sdraw: PSD - Adobe Photoshop"                                );
1877cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_PNG_Portable_Network_Graphic"                 )] =   DECLARE_ASCII("sdraw: PNG - Portable Network Graphic"                       );
1878cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_StarDraw_50"                                  )] =   DECLARE_ASCII("sdraw: StarDraw 5.0"                                         );
1879cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_PBM_Portable_Bitmap"                          )] =   DECLARE_ASCII("sdraw: PBM - Portable Bitmap"                                );
1880cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_PGM_Portable_Graymap"                         )] =   DECLARE_ASCII("sdraw: PGM - Portable Graymap"                               );
1881cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_PPM_Portable_Pixelmap"                        )] =   DECLARE_ASCII("sdraw: PPM - Portable Pixelmap"                              );
1882cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_RAS_Sun_Rasterfile"                           )] =   DECLARE_ASCII("sdraw: RAS - Sun Rasterfile"                                 );
1883cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_TGA_Truevision_TARGA"                         )] =   DECLARE_ASCII("sdraw: TGA - Truevision TARGA"                               );
1884cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_SGV_StarDraw_20"                              )] =   DECLARE_ASCII("sdraw: SGV - StarDraw 2.0"                                   );
1885cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_TIF_Tag_Image_File"                           )] =   DECLARE_ASCII("sdraw: TIF - Tag Image File"                                 );
1886cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_SGF_StarOffice_Writer_SGF"                    )] =   DECLARE_ASCII("sdraw: SGF - StarOffice Writer SGF"                          );
1887cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_XPM"                                          )] =   DECLARE_ASCII("sdraw: XPM"                                                  );
1888cdf0e10cSrcweir     aHash[DECLARE_ASCII("gif_Graphics_Interchange"                          )] =   DECLARE_ASCII("sdraw: GIF - Graphics Interchange"                           );
1889cdf0e10cSrcweir     aHash[DECLARE_ASCII("pcd_Photo_CD"                                      )] =   DECLARE_ASCII("sdraw: PCD - Photo CD"                                       );
1890cdf0e10cSrcweir     aHash[DECLARE_ASCII("pcx_Zsoft_Paintbrush"                              )] =   DECLARE_ASCII("sdraw: PCX - Zsoft Paintbrush"                               );
1891cdf0e10cSrcweir     aHash[DECLARE_ASCII("psd_Adobe_Photoshop"                               )] =   DECLARE_ASCII("sdraw: PSD - Adobe Photoshop"                                );
1892cdf0e10cSrcweir     aHash[DECLARE_ASCII("png_Portable_Network_Graphic"                      )] =   DECLARE_ASCII("sdraw: PNG - Portable Network Graphic"                       );
1893cdf0e10cSrcweir     aHash[DECLARE_ASCII("pbm_Portable_Bitmap"                               )] =   DECLARE_ASCII("sdraw: PBM - Portable Bitmap"                                );
1894cdf0e10cSrcweir     aHash[DECLARE_ASCII("pgm_Portable_Graymap"                              )] =   DECLARE_ASCII("sdraw: PGM - Portable Graymap"                               );
1895cdf0e10cSrcweir     aHash[DECLARE_ASCII("ppm_Portable_Pixelmap"                             )] =   DECLARE_ASCII("sdraw: PPM - Portable Pixelmap"                              );
1896cdf0e10cSrcweir     aHash[DECLARE_ASCII("ras_Sun_Rasterfile"                                )] =   DECLARE_ASCII("sdraw: RAS - Sun Rasterfile"                                 );
1897cdf0e10cSrcweir     aHash[DECLARE_ASCII("tga_Truevision_TARGA"                              )] =   DECLARE_ASCII("sdraw: TGA - Truevision TARGA"                               );
1898cdf0e10cSrcweir     aHash[DECLARE_ASCII("sgv_StarDraw_20"                                   )] =   DECLARE_ASCII("sdraw: SGV - StarDraw 2.0"                                   );
1899cdf0e10cSrcweir     aHash[DECLARE_ASCII("tif_Tag_Image_File"                                )] =   DECLARE_ASCII("sdraw: TIF - Tag Image File"                                 );
1900cdf0e10cSrcweir     aHash[DECLARE_ASCII("sgf_StarOffice_Writer_SGF"                         )] =   DECLARE_ASCII("sdraw: SGF - StarOffice Writer SGF"                          );
1901cdf0e10cSrcweir     aHash[DECLARE_ASCII("xpm_XPM"                                           )] =   DECLARE_ASCII("sdraw: XPM"                                                  );
1902cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_StarDraw_50_Vorlage"                          )] =   DECLARE_ASCII("sdraw: StarDraw 5.0 Vorlage"                                 );
1903cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_StarImpress_50_StarDraw"                      )] =   DECLARE_ASCII("sdraw: StarImpress 5.0 (StarDraw)"                           );
1904cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_StarImpress_50_Vorlage_StarDraw"              )] =   DECLARE_ASCII("sdraw: StarImpress 5.0 Vorlage (StarDraw)"                   );
1905cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_StarImpress_40_StarDraw"                      )] =   DECLARE_ASCII("sdraw: StarImpress 4.0 (StarDraw)"                           );
1906cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_StarImpress_40_Vorlage_StarDraw"              )] =   DECLARE_ASCII("sdraw: StarImpress 4.0 Vorlage (StarDraw)"                   );
1907cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_StarDraw_30"                                  )] =   DECLARE_ASCII("sdraw: StarDraw 3.0"                                         );
1908cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_StarDraw_30_Vorlage"                          )] =   DECLARE_ASCII("sdraw: StarDraw 3.0 Vorlage"                                 );
1909cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_EMF_MS_Windows_Metafile"                      )] =   DECLARE_ASCII("sdraw: EMF - MS Windows Metafile"                            );
1910cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_MET_OS2_Metafile"                             )] =   DECLARE_ASCII("sdraw: MET - OS/2 Metafile"                                  );
1911cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_DXF_AutoCAD_Interchange"                      )] =   DECLARE_ASCII("sdraw: DXF - AutoCAD Interchange"                            );
1912cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_EPS_Encapsulated_PostScript"                  )] =   DECLARE_ASCII("sdraw: EPS - Encapsulated PostScript"                        );
1913cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_WMF_MS_Windows_Metafile"                      )] =   DECLARE_ASCII("sdraw: WMF - MS Windows Metafile"                            );
1914cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_PCT_Mac_Pict"                                 )] =   DECLARE_ASCII("sdraw: PCT - Mac Pict"                                       );
1915cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_SVM_StarView_Metafile"                        )] =   DECLARE_ASCII("sdraw: SVM - StarView Metafile"                              );
1916cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_BMP_MS_Windows"                               )] =   DECLARE_ASCII("sdraw: BMP - MS Windows"                                     );
1917cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_JPG_JPEG"                                     )] =   DECLARE_ASCII("sdraw: JPG - JPEG"                                           );
1918cdf0e10cSrcweir     aHash[DECLARE_ASCII("draw_XBM_X_Consortium"                             )] =   DECLARE_ASCII("sdraw: XBM - X-Consortium"                                   );
1919cdf0e10cSrcweir     aHash[DECLARE_ASCII("emf_MS_Windows_Metafile"                           )] =   DECLARE_ASCII("sdraw: EMF - MS Windows Metafile"                            );
1920cdf0e10cSrcweir     aHash[DECLARE_ASCII("met_OS2_Metafile"                                  )] =   DECLARE_ASCII("sdraw: MET - OS/2 Metafile"                                  );
1921cdf0e10cSrcweir     aHash[DECLARE_ASCII("dxf_AutoCAD_Interchange"                           )] =   DECLARE_ASCII("sdraw: DXF - AutoCAD Interchange"                            );
1922cdf0e10cSrcweir     aHash[DECLARE_ASCII("eps_Encapsulated_PostScript"                       )] =   DECLARE_ASCII("sdraw: EPS - Encapsulated PostScript"                        );
1923cdf0e10cSrcweir     aHash[DECLARE_ASCII("wmf_MS_Windows_Metafile"                           )] =   DECLARE_ASCII("sdraw: WMF - MS Windows Metafile"                            );
1924cdf0e10cSrcweir     aHash[DECLARE_ASCII("pct_Mac_Pict"                                      )] =   DECLARE_ASCII("sdraw: PCT - Mac Pict"                                       );
1925cdf0e10cSrcweir     aHash[DECLARE_ASCII("svm_StarView_Metafile"                             )] =   DECLARE_ASCII("sdraw: SVM - StarView Metafile"                              );
1926cdf0e10cSrcweir     aHash[DECLARE_ASCII("bmp_MS_Windows"                                    )] =   DECLARE_ASCII("sdraw: BMP - MS Windows"                                     );
1927cdf0e10cSrcweir     aHash[DECLARE_ASCII("jpg_JPEG"                                          )] =   DECLARE_ASCII("sdraw: JPG - JPEG"                                           );
1928cdf0e10cSrcweir     aHash[DECLARE_ASCII("xbm_X_Consortium"                                  )] =   DECLARE_ASCII("sdraw: XBM - X-Consortium"                                   );
1929cdf0e10cSrcweir     aHash[DECLARE_ASCII("math_StarOffice_XML_Math"                          )] =   DECLARE_ASCII("smath: StarOffice XML (Math)"                                );
1930cdf0e10cSrcweir     aHash[DECLARE_ASCII("math_MathML_XML_Math"                              )] =   DECLARE_ASCII("smath: MathML XML (Math)"                                    );
1931cdf0e10cSrcweir     aHash[DECLARE_ASCII("math_StarMath_50"                                  )] =   DECLARE_ASCII("smath: StarMath 5.0"                                         );
1932cdf0e10cSrcweir     aHash[DECLARE_ASCII("math_StarMath_40"                                  )] =   DECLARE_ASCII("smath: StarMath 4.0"                                         );
1933cdf0e10cSrcweir     aHash[DECLARE_ASCII("math_StarMath_30"                                  )] =   DECLARE_ASCII("smath: StarMath 3.0"                                         );
1934cdf0e10cSrcweir     aHash[DECLARE_ASCII("math_StarMath_20"                                  )] =   DECLARE_ASCII("smath: StarMath 2.0"                                         );
1935cdf0e10cSrcweir     aHash[DECLARE_ASCII("math_MathType_3x"                                  )] =   DECLARE_ASCII("smath: MathType 3.x"                                         );
1936cdf0e10cSrcweir }
1937cdf0e10cSrcweir 
1938cdf0e10cSrcweir //*****************************************************************************************************************
impl_getOldFilterName(const::rtl::OUString & sNewName)1939cdf0e10cSrcweir ::rtl::OUString XCDGenerator::impl_getOldFilterName( const ::rtl::OUString& sNewName )
1940cdf0e10cSrcweir {
1941cdf0e10cSrcweir     ::rtl::OUString sOldName;
1942cdf0e10cSrcweir     ConstStringHashIterator pEntry = m_aData.aOldFilterNamesHash.find(sNewName);
1943cdf0e10cSrcweir     if( pEntry==m_aData.aOldFilterNamesHash.end() )
1944cdf0e10cSrcweir     {
1945cdf0e10cSrcweir         sOldName = sNewName;
1946cdf0e10cSrcweir     }
1947cdf0e10cSrcweir     else
1948cdf0e10cSrcweir     {
1949cdf0e10cSrcweir         sOldName = m_aData.aOldFilterNamesHash[sNewName];
1950cdf0e10cSrcweir     }
1951cdf0e10cSrcweir     return sOldName;
1952cdf0e10cSrcweir }
1953cdf0e10cSrcweir 
1954cdf0e10cSrcweir //*****************************************************************************************************************
impl_classifyType(const AppMember & rData,const::rtl::OUString & sTypeName,EFilterPackage & ePackage)1955cdf0e10cSrcweir void XCDGenerator::impl_classifyType( const AppMember& rData, const ::rtl::OUString& sTypeName, EFilterPackage& ePackage )
1956cdf0e10cSrcweir {
1957cdf0e10cSrcweir     ePackage = E_STANDARD;
1958cdf0e10cSrcweir 
1959cdf0e10cSrcweir     // Step over all registered filters for this type ...
1960cdf0e10cSrcweir     // Classify all of these filters. If one of them a standard filter ...
1961cdf0e10cSrcweir     // type must be a standard type too - otherwise not!
1962cdf0e10cSrcweir 
1963cdf0e10cSrcweir     CheckedStringListIterator   pIterator   ;
1964cdf0e10cSrcweir     ::rtl::OUString             sFilterName ;
1965cdf0e10cSrcweir     sal_Int32                   nOrder      ;
1966cdf0e10cSrcweir     while( rData.pFilterCache->searchFilterForType( sTypeName, pIterator, sFilterName ) == sal_True )
1967cdf0e10cSrcweir     {
1968cdf0e10cSrcweir         EFilterPackage eFilterPackage;
1969cdf0e10cSrcweir         XCDGenerator::impl_classifyFilter( rData, sFilterName, eFilterPackage, nOrder );
1970cdf0e10cSrcweir         if( eFilterPackage == E_STANDARD )
1971cdf0e10cSrcweir         {
1972cdf0e10cSrcweir             ePackage = E_STANDARD;
1973cdf0e10cSrcweir             break;
1974cdf0e10cSrcweir         }
1975cdf0e10cSrcweir     }
1976cdf0e10cSrcweir }
1977cdf0e10cSrcweir 
1978cdf0e10cSrcweir //*****************************************************************************************************************
impl_classifyFilter(const AppMember & rData,const::rtl::OUString & sFilterName,EFilterPackage & ePackage,sal_Int32 & nOrder)1979cdf0e10cSrcweir void XCDGenerator::impl_classifyFilter( const AppMember& rData, const ::rtl::OUString& sFilterName, EFilterPackage& ePackage, sal_Int32& nOrder )
1980cdf0e10cSrcweir {
1981cdf0e10cSrcweir     // a) For versions less then 4 => use hard coded list of filter names to differ between standard or additional filters.
1982cdf0e10cSrcweir     //    Why? This version don't support the order flag or hasn't set it right!
1983cdf0e10cSrcweir     // b) For version greater then 3 => use order of currently cached types in FilterCache!
1984cdf0e10cSrcweir 
1985cdf0e10cSrcweir     ePackage = E_STANDARD;
1986cdf0e10cSrcweir     nOrder   = 0;
1987cdf0e10cSrcweir 
1988cdf0e10cSrcweir     // writer
1989cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_StarOffice_XML_Writer"                               ) ) { ePackage = E_STANDARD; nOrder =  1; } else
1990cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_StarOffice_XML_Writer_Template"                      ) ) { ePackage = E_STANDARD; nOrder =  2; } else
1991cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_StarWriter_50"                                       ) ) { ePackage = E_STANDARD; nOrder =  3; } else
1992cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_StarWriter_50_VorlageTemplate"                       ) ) { ePackage = E_STANDARD; nOrder =  4; } else
1993cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_StarWriter_40"                                       ) ) { ePackage = E_STANDARD; nOrder =  5; } else
1994cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_StarWriter_40_VorlageTemplate"                       ) ) { ePackage = E_STANDARD; nOrder =  6; } else
1995cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_StarWriter_30"                                       ) ) { ePackage = E_STANDARD; nOrder =  7; } else
1996cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_StarWriter_30_VorlageTemplate"                       ) ) { ePackage = E_STANDARD; nOrder =  8; } else
1997cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_StarWriter_20"                                       ) ) { ePackage = E_STANDARD; nOrder =  9; } else
1998cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_MS_Word_97"                                          ) ) { ePackage = E_STANDARD; nOrder = 10; } else
1999cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_MS_Word_97_Vorlage"                                  ) ) { ePackage = E_STANDARD; nOrder = 11; } else
2000cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_MS_Word_95"                                          ) ) { ePackage = E_STANDARD; nOrder = 12; } else
2001cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_MS_Word_95_Vorlage"                                  ) ) { ePackage = E_STANDARD; nOrder = 13; } else
2002cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_MS_WinWord_2x_W4W"                                   ) ) { ePackage = E_STANDARD; nOrder = 14; } else
2003cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_MS_WinWord_1x_W4W"                                   ) ) { ePackage = E_STANDARD; nOrder = 15; } else
2004cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_MS_Word_6x_W4W"                                      ) ) { ePackage = E_STANDARD; nOrder = 16; } else
2005cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_MS_Word_5x_W4W"                                      ) ) { ePackage = E_STANDARD; nOrder = 17; } else
2006cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_MS_Word_4x_W4W"                                      ) ) { ePackage = E_STANDARD; nOrder = 18; } else
2007cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_MS_Word_3x_W4W"                                      ) ) { ePackage = E_STANDARD; nOrder = 19; } else
2008cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_WordPerfect_Win_70_W4W"                              ) ) { ePackage = E_STANDARD; nOrder = 20; } else
2009cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_WordPerfect_Win_61_W4W"                              ) ) { ePackage = E_STANDARD; nOrder = 21; } else
2010cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_WordPerfect_Win_60_W4W"                              ) ) { ePackage = E_STANDARD; nOrder = 22; } else
2011cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_WordPerfect_Win_51_52_W4W"                           ) ) { ePackage = E_STANDARD; nOrder = 23; } else
2012cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_HTML_StarWriter"                                     ) ) { ePackage = E_STANDARD; nOrder = 24; } else
2013cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_Text"                                                ) ) { ePackage = E_STANDARD; nOrder = 25; } else
2014cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_Text_encoded"                                        ) ) { ePackage = E_STANDARD; nOrder = 26; } else
2015cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_Text_DOS"                                            ) ) { ePackage = E_STANDARD; nOrder = 27; } else
2016cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_Text_Unix"                                           ) ) { ePackage = E_STANDARD; nOrder = 28; } else
2017cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_Text_Mac"                                            ) ) { ePackage = E_STANDARD; nOrder = 29; } else
2018cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_Rich_Text_Format"                                    ) ) { ePackage = E_STANDARD; nOrder = 30; }
2019cdf0e10cSrcweir 
2020cdf0e10cSrcweir     // writer web
2021cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_web_HTML"                                            ) ) { ePackage = E_STANDARD; nOrder =  1; } else
2022cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_web_StarOffice_XML_Writer"                           ) ) { ePackage = E_STANDARD; nOrder =  2; } else
2023cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_web_StarOffice_XML_Writer_Web_Template"              ) ) { ePackage = E_STANDARD; nOrder =  3; } else
2024cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_web_StarWriter_50"                                   ) ) { ePackage = E_STANDARD; nOrder =  4; } else
2025cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_web_StarWriterWeb_50_VorlageTemplate"                ) ) { ePackage = E_STANDARD; nOrder =  5; } else
2026cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_web_StarWriter_40"                                   ) ) { ePackage = E_STANDARD; nOrder =  6; } else
2027cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_web_StarWriterWeb_40_VorlageTemplate"                ) ) { ePackage = E_STANDARD; nOrder =  7; } else
2028cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_web_StarWriter_30"                                   ) ) { ePackage = E_STANDARD; nOrder =  8; } else
2029cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_web_Text_StarWriterWeb"                              ) ) { ePackage = E_STANDARD; nOrder =  9; } else
2030cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_web_Text_encoded"                                    ) ) { ePackage = E_STANDARD; nOrder = 10; } else
2031cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_web_Text_DOS_StarWriterWeb"                          ) ) { ePackage = E_STANDARD; nOrder = 11; } else
2032cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_web_Text_Unix_StarWriterWeb"                         ) ) { ePackage = E_STANDARD; nOrder = 12; } else
2033cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_web_Text_Mac_StarWriterWeb"                          ) ) { ePackage = E_STANDARD; nOrder = 13; }
2034cdf0e10cSrcweir 
2035cdf0e10cSrcweir     // global document
2036cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_globaldocument_StarOffice_XML_Writer_GlobalDocument" ) ) { ePackage = E_STANDARD; nOrder =  1; } else
2037cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_globaldocument_StarOffice_XML_Writer"                ) ) { ePackage = E_STANDARD; nOrder =  2; } else
2038cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_globaldocument_StarWriter_50"                        ) ) { ePackage = E_STANDARD; nOrder =  3; } else
2039cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_globaldocument_StarWriter_50GlobalDocument"          ) ) { ePackage = E_STANDARD; nOrder =  4; } else
2040cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_globaldocument_StarWriter_40"                        ) ) { ePackage = E_STANDARD; nOrder =  5; } else
2041cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_globaldocument_StarWriter_40GlobalDocument"          ) ) { ePackage = E_STANDARD; nOrder =  6; } else
2042cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_globaldocument_StarWriter_30"                        ) ) { ePackage = E_STANDARD; nOrder =  7; } else
2043cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("writer_globaldocument_Text_encoded"                         ) ) { ePackage = E_STANDARD; nOrder =  8; }
2044cdf0e10cSrcweir 
2045cdf0e10cSrcweir     // calc
2046cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("calc_StarOffice_XML_Calc"                                   ) ) { ePackage = E_STANDARD; nOrder =  1; } else
2047cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("calc_StarOffice_XML_Calc_Template"                          ) ) { ePackage = E_STANDARD; nOrder =  2; } else
2048cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("calc_StarCalc_50"                                           ) ) { ePackage = E_STANDARD; nOrder =  3; } else
2049cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("calc_StarCalc_50_VorlageTemplate"                           ) ) { ePackage = E_STANDARD; nOrder =  4; } else
2050cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("calc_StarCalc_40"                                           ) ) { ePackage = E_STANDARD; nOrder =  5; } else
2051cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("calc_StarCalc_40_VorlageTemplate"                           ) ) { ePackage = E_STANDARD; nOrder =  6; } else
2052cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("calc_StarCalc_30"                                           ) ) { ePackage = E_STANDARD; nOrder =  7; } else
2053cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("calc_StarCalc_30_VorlageTemplate"                           ) ) { ePackage = E_STANDARD; nOrder =  8; } else
2054cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("calc_StarCalc_10"                                           ) ) { ePackage = E_STANDARD; nOrder =  9; } else
2055cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("calc_MS_Excel_97"                                           ) ) { ePackage = E_STANDARD; nOrder = 10; } else
2056cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("calc_MS_Excel_97_VorlageTemplate"                           ) ) { ePackage = E_STANDARD; nOrder = 11; } else
2057cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("calc_MS_Excel_95"                                           ) ) { ePackage = E_STANDARD; nOrder = 12; } else
2058cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("calc_MS_Excel_95_VorlageTemplate"                           ) ) { ePackage = E_STANDARD; nOrder = 13; } else
2059cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("calc_MS_Excel_5095"                                         ) ) { ePackage = E_STANDARD; nOrder = 14; } else
2060cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("calc_MS_Excel_5095_VorlageTemplate"                         ) ) { ePackage = E_STANDARD; nOrder = 15; } else
2061cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("calc_MS_Excel_40"                                           ) ) { ePackage = E_STANDARD; nOrder = 16; } else
2062cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("calc_MS_Excel_40_VorlageTemplate"                           ) ) { ePackage = E_STANDARD; nOrder = 17; } else
2063cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("calc_HTML_StarCalc"                                         ) ) { ePackage = E_STANDARD; nOrder = 18; } else
2064cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("calc_HTML_WebQuery"                                         ) ) { ePackage = E_STANDARD; nOrder = 19; } else
2065cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("calc_Rich_Text_Format_StarCalc"                             ) ) { ePackage = E_STANDARD; nOrder = 20; } else
2066cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("calc_Text_txt_csv_StarCalc"                                 ) ) { ePackage = E_STANDARD; nOrder = 21; } else
2067cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("calc_dBase"                                                 ) ) { ePackage = E_STANDARD; nOrder = 22; } else
2068cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("calc_Lotus"                                                 ) ) { ePackage = E_STANDARD; nOrder = 23; } else
2069cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("calc_SYLK"                                                  ) ) { ePackage = E_STANDARD; nOrder = 24; } else
2070cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("calc_DIF"                                                   ) ) { ePackage = E_STANDARD; nOrder = 25; }
2071cdf0e10cSrcweir 
2072cdf0e10cSrcweir     // impress
2073cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("impress_StarOffice_XML_Impress"                             ) ) { ePackage = E_STANDARD; nOrder =  1; } else
2074cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("impress_StarOffice_XML_Impress_Template"                    ) ) { ePackage = E_STANDARD; nOrder =  2; } else
2075cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("impress_StarImpress_50"                                     ) ) { ePackage = E_STANDARD; nOrder =  3; } else
2076cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("impress_StarImpress_50_Vorlage"                             ) ) { ePackage = E_STANDARD; nOrder =  4; } else
2077cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("impress_StarImpress_50_packed"                              ) ) { ePackage = E_STANDARD; nOrder =  5; } else
2078cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("impress_StarImpress_40"                                     ) ) { ePackage = E_STANDARD; nOrder =  6; } else
2079cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("impress_StarImpress_40_Vorlage"                             ) ) { ePackage = E_STANDARD; nOrder =  7; } else
2080cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("impress_MS_PowerPoint_97"                                   ) ) { ePackage = E_STANDARD; nOrder =  8; } else
2081cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("impress_MS_PowerPoint_97_Vorlage"                           ) ) { ePackage = E_STANDARD; nOrder =  9; } else
2082cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("impress_StarOffice_XML_Draw"                                ) ) { ePackage = E_STANDARD; nOrder = 10; } else
2083cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("impress_StarDraw_50_StarImpress"                            ) ) { ePackage = E_STANDARD; nOrder = 11; } else
2084cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("impress_StarDraw_50_Vorlage_StarImpress"                    ) ) { ePackage = E_STANDARD; nOrder = 12; } else
2085cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("impress_StarDraw_30_StarImpress"                            ) ) { ePackage = E_STANDARD; nOrder = 13; } else
2086cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("impress_StarDraw_30_Vorlage_StarImpress"                    ) ) { ePackage = E_STANDARD; nOrder = 14; } else
2087cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("impress_CGM_Computer_Graphics_Metafile"                     ) ) { ePackage = E_STANDARD; nOrder = 15; }
2088cdf0e10cSrcweir 
2089cdf0e10cSrcweir     // draw
2090cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_StarOffice_XML_Draw"                                   ) ) { ePackage = E_STANDARD; nOrder =  1; } else
2091cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_StarOffice_XML_Draw_Template"                          ) ) { ePackage = E_STANDARD; nOrder =  2; } else
2092cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_StarDraw_50"                                           ) ) { ePackage = E_STANDARD; nOrder =  3; } else
2093cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_StarDraw_50_Vorlage"                                   ) ) { ePackage = E_STANDARD; nOrder =  4; } else
2094cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_StarDraw_30"                                           ) ) { ePackage = E_STANDARD; nOrder =  5; } else
2095cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_StarDraw_30_Vorlage"                                   ) ) { ePackage = E_STANDARD; nOrder =  6; } else
2096cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_StarOffice_XML_Impress"                                ) ) { ePackage = E_STANDARD; nOrder =  7; } else
2097cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_StarImpress_50_StarDraw"                               ) ) { ePackage = E_STANDARD; nOrder =  8; } else
2098cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_StarImpress_50_Vorlage_StarDraw"                       ) ) { ePackage = E_STANDARD; nOrder =  9; } else
2099cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_StarImpress_40_StarDraw"                               ) ) { ePackage = E_STANDARD; nOrder = 10; } else
2100cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_StarImpress_40_Vorlage_StarDraw"                       ) ) { ePackage = E_STANDARD; nOrder = 11; } else
2101cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_SGV_StarDraw_20"                                       ) ) { ePackage = E_STANDARD; nOrder = 12; } else
2102cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_SGF_StarOffice_Writer_SGF"                             ) ) { ePackage = E_STANDARD; nOrder = 13; } else
2103cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_SVM_StarView_Metafile"                                 ) ) { ePackage = E_STANDARD; nOrder = 14; } else
2104cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_WMF_MS_Windows_Metafile"                               ) ) { ePackage = E_STANDARD; nOrder = 15; } else
2105cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_EMF_MS_Windows_Metafile"                               ) ) { ePackage = E_STANDARD; nOrder = 16; } else
2106cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_EPS_Encapsulated_PostScript"                           ) ) { ePackage = E_STANDARD; nOrder = 17; } else
2107cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_DXF_AutoCAD_Interchange"                               ) ) { ePackage = E_STANDARD; nOrder = 18; } else
2108cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_BMP_MS_Windows"                                        ) ) { ePackage = E_STANDARD; nOrder = 19; } else
2109cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_GIF_Graphics_Interchange"                              ) ) { ePackage = E_STANDARD; nOrder = 20; } else
2110cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_JPG_JPEG"                                              ) ) { ePackage = E_STANDARD; nOrder = 21; } else
2111cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_MET_OS2_Metafile"                                      ) ) { ePackage = E_STANDARD; nOrder = 22; } else
2112cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_PBM_Portable_Bitmap"                                   ) ) { ePackage = E_STANDARD; nOrder = 23; } else
2113cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_PCD_Photo_CD_Base"                                     ) ) { ePackage = E_STANDARD; nOrder = 24; } else
2114cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_PCD_Photo_CD_Base4"                                    ) ) { ePackage = E_STANDARD; nOrder = 25; } else
2115cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_PCD_Photo_CD_Base16"                                   ) ) { ePackage = E_STANDARD; nOrder = 26; } else
2116cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_PCT_Mac_Pict"                                          ) ) { ePackage = E_STANDARD; nOrder = 27; } else
2117cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_PCX_Zsoft_Paintbrush"                                  ) ) { ePackage = E_STANDARD; nOrder = 28; } else
2118cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_PGM_Portable_Graymap"                                  ) ) { ePackage = E_STANDARD; nOrder = 29; } else
2119cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_PNG_Portable_Network_Graphic"                          ) ) { ePackage = E_STANDARD; nOrder = 30; } else
2120cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_PPM_Portable_Pixelmap"                                 ) ) { ePackage = E_STANDARD; nOrder = 31; } else
2121cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_PSD_Adobe_Photoshop"                                   ) ) { ePackage = E_STANDARD; nOrder = 32; } else
2122cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_RAS_Sun_Rasterfile"                                    ) ) { ePackage = E_STANDARD; nOrder = 33; } else
2123cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_TGA_Truevision_TARGA"                                  ) ) { ePackage = E_STANDARD; nOrder = 34; } else
2124cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_TIF_Tag_Image_File"                                    ) ) { ePackage = E_STANDARD; nOrder = 35; } else
2125cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_XBM_X_Consortium"                                      ) ) { ePackage = E_STANDARD; nOrder = 36; } else
2126cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("draw_XPM"                                                   ) ) { ePackage = E_STANDARD; nOrder = 37; }
2127cdf0e10cSrcweir 
2128cdf0e10cSrcweir     // chart
2129cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("chart_StarOffice_XML_Chart"                                 ) ) { ePackage = E_STANDARD; nOrder =  1; } else
2130cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("chart_StarChart_50"                                         ) ) { ePackage = E_STANDARD; nOrder =  2; } else
2131cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("chart_StarChart_40"                                         ) ) { ePackage = E_STANDARD; nOrder =  3; } else
2132cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("chart_StarChart_30"                                         ) ) { ePackage = E_STANDARD; nOrder =  4; }
2133cdf0e10cSrcweir 
2134cdf0e10cSrcweir     // math
2135cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("math_StarOffice_XML_Math"                                   ) ) { ePackage = E_STANDARD; nOrder =  1; } else
2136cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("math_StarMath_50"                                           ) ) { ePackage = E_STANDARD; nOrder =  2; } else
2137cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("math_StarMath_40"                                           ) ) { ePackage = E_STANDARD; nOrder =  3; } else
2138cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("math_StarMath_30"                                           ) ) { ePackage = E_STANDARD; nOrder =  4; } else
2139cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("math_StarMath_20"                                           ) ) { ePackage = E_STANDARD; nOrder =  5; } else
2140cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("math_MathML_XML_Math"                                       ) ) { ePackage = E_STANDARD; nOrder =  6; } else
2141cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("math_MathType_3x"                                           ) ) { ePackage = E_STANDARD; nOrder =  7; }
2142cdf0e10cSrcweir 
2143cdf0e10cSrcweir     // graphics
2144cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("bmp_Import"                                                 ) ) { ePackage = E_STANDARD; nOrder =  1; } else
2145cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("bmp_Export"                                                 ) ) { ePackage = E_STANDARD; nOrder =  2; } else
2146cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("dxf_Import"                                                 ) ) { ePackage = E_STANDARD; nOrder =  3; } else
2147cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("emf_Import"                                                 ) ) { ePackage = E_STANDARD; nOrder =  4; } else
2148cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("emf_Export"                                                 ) ) { ePackage = E_STANDARD; nOrder =  5; } else
2149cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("eps_Import"                                                 ) ) { ePackage = E_STANDARD; nOrder =  6; } else
2150cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("eps_Export"                                                 ) ) { ePackage = E_STANDARD; nOrder =  7; } else
2151cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("gif_Import"                                                 ) ) { ePackage = E_STANDARD; nOrder =  8; } else
2152cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("gif_Export"                                                 ) ) { ePackage = E_STANDARD; nOrder =  9; } else
2153cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("jpg_Import"                                                 ) ) { ePackage = E_STANDARD; nOrder = 10; } else
2154cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("jpg_Export"                                                 ) ) { ePackage = E_STANDARD; nOrder = 11; } else
2155cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("met_Import"                                                 ) ) { ePackage = E_STANDARD; nOrder = 12; } else
2156cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("met_Export"                                                 ) ) { ePackage = E_STANDARD; nOrder = 13; } else
2157cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("pbm_Import"                                                 ) ) { ePackage = E_STANDARD; nOrder = 14; } else
2158cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("pbm_Export"                                                 ) ) { ePackage = E_STANDARD; nOrder = 15; } else
2159cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("pcd_Import_Base16"                                          ) ) { ePackage = E_STANDARD; nOrder = 16; } else
2160cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("pcd_Import_Base4"                                           ) ) { ePackage = E_STANDARD; nOrder = 17; } else
2161cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("pcd_Import_Base"                                            ) ) { ePackage = E_STANDARD; nOrder = 18; } else
2162cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("pct_Import"                                                 ) ) { ePackage = E_STANDARD; nOrder = 19; } else
2163cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("pct_Export"                                                 ) ) { ePackage = E_STANDARD; nOrder = 20; } else
2164cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("pcx_Import"                                                 ) ) { ePackage = E_STANDARD; nOrder = 21; } else
2165cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("pgm_Import"                                                 ) ) { ePackage = E_STANDARD; nOrder = 22; } else
2166cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("pgm_Export"                                                 ) ) { ePackage = E_STANDARD; nOrder = 23; } else
2167cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("png_Import"                                                 ) ) { ePackage = E_STANDARD; nOrder = 24; } else
2168cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("png_Export"                                                 ) ) { ePackage = E_STANDARD; nOrder = 25; } else
2169cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("ppm_Import"                                                 ) ) { ePackage = E_STANDARD; nOrder = 26; } else
2170cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("ppm_Export"                                                 ) ) { ePackage = E_STANDARD; nOrder = 27; } else
2171cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("psd_Import"                                                 ) ) { ePackage = E_STANDARD; nOrder = 28; } else
2172cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("ras_Import"                                                 ) ) { ePackage = E_STANDARD; nOrder = 29; } else
2173cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("ras_Export"                                                 ) ) { ePackage = E_STANDARD; nOrder = 30; } else
2174cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("sgf_Import"                                                 ) ) { ePackage = E_STANDARD; nOrder = 31; } else
2175cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("sgv_Import"                                                 ) ) { ePackage = E_STANDARD; nOrder = 32; } else
2176cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("svg_Export"                                                 ) ) { ePackage = E_STANDARD; nOrder = 33; } else
2177cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("svm_Import"                                                 ) ) { ePackage = E_STANDARD; nOrder = 34; } else
2178cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("svm_Export"                                                 ) ) { ePackage = E_STANDARD; nOrder = 35; } else
2179cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("tga_Import"                                                 ) ) { ePackage = E_STANDARD; nOrder = 36; } else
2180cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("tif_Import"                                                 ) ) { ePackage = E_STANDARD; nOrder = 37; } else
2181cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("tif_Export"                                                 ) ) { ePackage = E_STANDARD; nOrder = 38; } else
2182cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("wmf_Import"                                                 ) ) { ePackage = E_STANDARD; nOrder = 39; } else
2183cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("wmf_Export"                                                 ) ) { ePackage = E_STANDARD; nOrder = 40; } else
2184cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("xbm_Import"                                                 ) ) { ePackage = E_STANDARD; nOrder = 41; } else
2185cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("xpm_Import"                                                 ) ) { ePackage = E_STANDARD; nOrder = 42; } else
2186cdf0e10cSrcweir     if( sFilterName == DECLARE_ASCII("xpm_Export"                                                 ) ) { ePackage = E_STANDARD; nOrder = 43; }
2187cdf0e10cSrcweir }
2188cdf0e10cSrcweir 
2189cdf0e10cSrcweir //*****************************************************************************************************************
impl_orderAlphabetical(css::uno::Sequence<::rtl::OUString> & lList)2190cdf0e10cSrcweir void XCDGenerator::impl_orderAlphabetical( css::uno::Sequence< ::rtl::OUString >& lList )
2191cdf0e10cSrcweir {
2192cdf0e10cSrcweir     ::std::vector< ::rtl::OUString > lSortedList;
2193cdf0e10cSrcweir     sal_Int32                        nCount     ;
2194cdf0e10cSrcweir     sal_Int32                        nItem      ;
2195cdf0e10cSrcweir 
2196cdf0e10cSrcweir     // Copy sequence to vector
2197cdf0e10cSrcweir     nCount = lList.getLength();
2198cdf0e10cSrcweir     for( nItem=0; nItem<nCount; ++nItem )
2199cdf0e10cSrcweir     {
2200cdf0e10cSrcweir         lSortedList.push_back( lList[nItem] );
2201cdf0e10cSrcweir     }
2202cdf0e10cSrcweir 
2203cdf0e10cSrcweir     // sort in a alphabetical order
2204cdf0e10cSrcweir     ::std::sort( lSortedList.begin(), lSortedList.end() );
2205cdf0e10cSrcweir 
2206cdf0e10cSrcweir     // copy sorted list back to sequence
2207cdf0e10cSrcweir     nItem = 0;
2208cdf0e10cSrcweir     for( ::std::vector< ::rtl::OUString >::iterator pIterator=lSortedList.begin(); pIterator!=lSortedList.end(); ++pIterator )
2209cdf0e10cSrcweir     {
2210cdf0e10cSrcweir         lList[nItem] = *pIterator;
2211cdf0e10cSrcweir         ++nItem;
2212cdf0e10cSrcweir     }
2213cdf0e10cSrcweir }
2214cdf0e10cSrcweir 
2215cdf0e10cSrcweir //*****************************************************************************************************************
2216cdf0e10cSrcweir class ModifiedUTF7Buffer
2217cdf0e10cSrcweir {
2218cdf0e10cSrcweir 	rtl::OUStringBuffer & m_rBuffer;
2219cdf0e10cSrcweir 	sal_uInt32 m_nValue;
2220cdf0e10cSrcweir 	int m_nFilled;
2221cdf0e10cSrcweir 
2222cdf0e10cSrcweir public:
ModifiedUTF7Buffer(rtl::OUStringBuffer * pTheBuffer)2223cdf0e10cSrcweir 	ModifiedUTF7Buffer(rtl::OUStringBuffer * pTheBuffer):
2224cdf0e10cSrcweir 		m_rBuffer(*pTheBuffer), m_nFilled(0) {}
2225cdf0e10cSrcweir 
2226cdf0e10cSrcweir 	inline void write(sal_Unicode c);
2227cdf0e10cSrcweir 
2228cdf0e10cSrcweir 	void flush();
2229cdf0e10cSrcweir };
2230cdf0e10cSrcweir 
write(sal_Unicode c)2231cdf0e10cSrcweir inline void ModifiedUTF7Buffer::write(sal_Unicode c)
2232cdf0e10cSrcweir {
2233cdf0e10cSrcweir 	switch (m_nFilled)
2234cdf0e10cSrcweir 	{
2235cdf0e10cSrcweir 		case 0:
2236cdf0e10cSrcweir 			m_nValue = sal_uInt32(c) << 8;
2237cdf0e10cSrcweir 			m_nFilled = 2;
2238cdf0e10cSrcweir 			break;
2239cdf0e10cSrcweir 
2240cdf0e10cSrcweir 		case 1:
2241cdf0e10cSrcweir 			m_nValue |= sal_uInt32(c);
2242cdf0e10cSrcweir 			m_nFilled = 3;
2243cdf0e10cSrcweir 			flush();
2244cdf0e10cSrcweir 			break;
2245cdf0e10cSrcweir 
2246cdf0e10cSrcweir 		case 2:
2247cdf0e10cSrcweir 			m_nValue |= sal_uInt32(c) >> 8;
2248cdf0e10cSrcweir 			m_nFilled = 3;
2249cdf0e10cSrcweir 			flush();
2250cdf0e10cSrcweir 			m_nValue = (sal_uInt32(c) & 0xFF) << 16;
2251cdf0e10cSrcweir 			m_nFilled = 1;
2252cdf0e10cSrcweir 			break;
2253cdf0e10cSrcweir 	}
2254cdf0e10cSrcweir }
2255cdf0e10cSrcweir 
flush()2256cdf0e10cSrcweir void ModifiedUTF7Buffer::flush()
2257cdf0e10cSrcweir {
2258cdf0e10cSrcweir 	static sal_Unicode const aModifiedBase64[64]
2259cdf0e10cSrcweir 		= { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
2260cdf0e10cSrcweir 			'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
2261cdf0e10cSrcweir 			'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
2262cdf0e10cSrcweir 			'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
2263cdf0e10cSrcweir 			'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '.' };
2264cdf0e10cSrcweir 	switch (m_nFilled)
2265cdf0e10cSrcweir 	{
2266cdf0e10cSrcweir 		case 1:
2267cdf0e10cSrcweir 			m_rBuffer.append(aModifiedBase64[m_nValue >> 18]);
2268cdf0e10cSrcweir 			m_rBuffer.append(aModifiedBase64[m_nValue >> 12 & 63]);
2269cdf0e10cSrcweir 			break;
2270cdf0e10cSrcweir 
2271cdf0e10cSrcweir 		case 2:
2272cdf0e10cSrcweir 			m_rBuffer.append(aModifiedBase64[m_nValue >> 18]);
2273cdf0e10cSrcweir 			m_rBuffer.append(aModifiedBase64[m_nValue >> 12 & 63]);
2274cdf0e10cSrcweir 			m_rBuffer.append(aModifiedBase64[m_nValue >> 6 & 63]);
2275cdf0e10cSrcweir 			break;
2276cdf0e10cSrcweir 
2277cdf0e10cSrcweir 		case 3:
2278cdf0e10cSrcweir 			m_rBuffer.append(aModifiedBase64[m_nValue >> 18]);
2279cdf0e10cSrcweir 			m_rBuffer.append(aModifiedBase64[m_nValue >> 12 & 63]);
2280cdf0e10cSrcweir 			m_rBuffer.append(aModifiedBase64[m_nValue >> 6 & 63]);
2281cdf0e10cSrcweir 			m_rBuffer.append(aModifiedBase64[m_nValue & 63]);
2282cdf0e10cSrcweir 			break;
2283cdf0e10cSrcweir 	}
2284cdf0e10cSrcweir 	m_nFilled = 0;
2285cdf0e10cSrcweir 	m_nValue = 0;
2286cdf0e10cSrcweir }
2287cdf0e10cSrcweir 
2288cdf0e10cSrcweir 
impl_isUsAsciiAlphaDigit(sal_Unicode c,sal_Bool bDigitAllowed)2289cdf0e10cSrcweir sal_Bool XCDGenerator::impl_isUsAsciiAlphaDigit(sal_Unicode c, sal_Bool bDigitAllowed)
2290cdf0e10cSrcweir {
2291cdf0e10cSrcweir 	return c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z'
2292cdf0e10cSrcweir 		   || bDigitAllowed && c >= '0' && c <= '9';
2293cdf0e10cSrcweir }
2294cdf0e10cSrcweir 
impl_encodeSetName(const::rtl::OUString & rSource)2295cdf0e10cSrcweir ::rtl::OUString XCDGenerator::impl_encodeSetName( const ::rtl::OUString& rSource )
2296cdf0e10cSrcweir {
2297cdf0e10cSrcweir     return impl_encodeSpecialSigns( rSource );
2298cdf0e10cSrcweir /*
2299cdf0e10cSrcweir 	rtl::OUStringBuffer aTarget;
2300cdf0e10cSrcweir 
2301cdf0e10cSrcweir 	sal_Unicode const * pBegin = rSource.getStr();
2302cdf0e10cSrcweir 	sal_Unicode const * pEnd = pBegin + rSource.getLength();
2303cdf0e10cSrcweir 	sal_Unicode const * pCopyEnd = pBegin;
2304cdf0e10cSrcweir 	sal_Unicode const * p = pBegin;
2305cdf0e10cSrcweir 	while (p != pEnd)
2306cdf0e10cSrcweir 	{
2307cdf0e10cSrcweir 		sal_Unicode c = *p;
2308cdf0e10cSrcweir         if (!impl_isUsAsciiAlphaDigit(c,p != pBegin))
2309cdf0e10cSrcweir 			switch (c)
2310cdf0e10cSrcweir 			{
2311cdf0e10cSrcweir 				case '-':
2312cdf0e10cSrcweir 				case '.':
2313cdf0e10cSrcweir 					if (p != pBegin)
2314cdf0e10cSrcweir 						break;
2315cdf0e10cSrcweir 				default:
2316cdf0e10cSrcweir 					aTarget.append(pCopyEnd, p - pCopyEnd);
2317cdf0e10cSrcweir 					aTarget.append(sal_Unicode('_'));
2318cdf0e10cSrcweir 					ModifiedUTF7Buffer aBuffer(&aTarget);
2319cdf0e10cSrcweir 					for (;;)
2320cdf0e10cSrcweir 					{
2321cdf0e10cSrcweir 						aBuffer.write(c);
2322cdf0e10cSrcweir 						++p;
2323cdf0e10cSrcweir 						if (p == pEnd)
2324cdf0e10cSrcweir 							break;
2325cdf0e10cSrcweir 						c = *p;
2326cdf0e10cSrcweir                         if (impl_isUsAsciiAlphaDigit(c) || c == '-' || c == '.')
2327cdf0e10cSrcweir 							break;
2328cdf0e10cSrcweir 					}
2329cdf0e10cSrcweir 					aBuffer.flush();
2330cdf0e10cSrcweir 					aTarget.append(sal_Unicode('_'));
2331cdf0e10cSrcweir 					pCopyEnd = p;
2332cdf0e10cSrcweir 					continue;
2333cdf0e10cSrcweir 			}
2334cdf0e10cSrcweir 		++p;
2335cdf0e10cSrcweir 	}
2336cdf0e10cSrcweir 
2337cdf0e10cSrcweir 	if (pCopyEnd == pBegin)
2338cdf0e10cSrcweir 		return rSource;
2339cdf0e10cSrcweir 	else
2340cdf0e10cSrcweir 	{
2341cdf0e10cSrcweir 		aTarget.append(pCopyEnd, pEnd - pCopyEnd);
2342cdf0e10cSrcweir 		return aTarget.makeStringAndClear();
2343cdf0e10cSrcweir 	}
2344cdf0e10cSrcweir */
2345cdf0e10cSrcweir }
2346