Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*************************************************************************
3 : : *
4 : : * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 : : *
6 : : * Copyright 2000, 2010 Oracle and/or its affiliates.
7 : : *
8 : : * OpenOffice.org - a multi-platform office productivity suite
9 : : *
10 : : * This file is part of OpenOffice.org.
11 : : *
12 : : * OpenOffice.org is free software: you can redistribute it and/or modify
13 : : * it under the terms of the GNU Lesser General Public License version 3
14 : : * only, as published by the Free Software Foundation.
15 : : *
16 : : * OpenOffice.org is distributed in the hope that it will be useful,
17 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 : : * GNU Lesser General Public License version 3 for more details
20 : : * (a copy is included in the LICENSE file that accompanied this code).
21 : : *
22 : : * You should have received a copy of the GNU Lesser General Public License
23 : : * version 3 along with OpenOffice.org. If not, see
24 : : * <http://www.openoffice.org/license.html>
25 : : * for a copy of the LGPLv3 License.
26 : : *
27 : : ************************************************************************/
28 : :
29 : : #include "sal/config.h"
30 : :
31 : : #include <fstream>
32 : :
33 : : //
34 : : // XRMResParser
35 : : //
36 : :
37 : : class XRMResParser
38 : : {
39 : : private:
40 : : rtl::OString sGID;
41 : : rtl::OString sLID;
42 : :
43 : : sal_Bool bError;
44 : : sal_Bool bText;
45 : :
46 : : rtl::OString sCurrentOpenTag;
47 : : rtl::OString sCurrentCloseTag;
48 : : rtl::OString sCurrentText;
49 : : std::vector<rtl::OString> aLanguages;
50 : :
51 : : protected:
52 : : rtl::OString GetAttribute( const rtl::OString &rToken, const rtl::OString &rAttribute );
53 : : void Error( const rtl::OString &rError );
54 : :
55 : : virtual void Output( const rtl::OString& rOutput )=0;
56 : : virtual void WorkOnDesc(
57 : : const rtl::OString &rOpenTag,
58 : : rtl::OString &rText
59 : : )=0;
60 : : virtual void WorkOnText(
61 : : const rtl::OString &rOpenTag,
62 : : rtl::OString &rText
63 : : )=0;
64 : : virtual void EndOfText(
65 : : const rtl::OString &rOpenTag,
66 : : const rtl::OString &rCloseTag
67 : : )=0;
68 : :
69 : 0 : rtl::OString GetGID() { return sGID; }
70 : 0 : rtl::OString GetLID() { return sLID; }
71 : :
72 : : void ConvertStringToDBFormat( rtl::OString &rString );
73 : : void ConvertStringToXMLFormat( rtl::OString &rString );
74 : :
75 : : public:
76 : : XRMResParser();
77 : : virtual ~XRMResParser();
78 : :
79 : : int Execute( int nToken, char * pToken );
80 : :
81 : 0 : void SetError( sal_Bool bErr = sal_True ) { bError = bErr; }
82 : 0 : sal_Bool GetError() { return bError; }
83 : : };
84 : :
85 : : //
86 : : // class XRMResOutputParser
87 : : //
88 : :
89 : : class XRMResOutputParser : public XRMResParser
90 : : {
91 : : private:
92 : : std::vector<rtl::OString> aLanguages;
93 : : protected:
94 : : std::ofstream pOutputStream;
95 : : public:
96 : : XRMResOutputParser ( const rtl::OString &rOutputFile );
97 : : virtual ~XRMResOutputParser();
98 : : };
99 : :
100 : : //
101 : : // XRMResExport
102 : : //
103 : :
104 : : class XRMResExport : public XRMResOutputParser
105 : : {
106 : : private:
107 : : ResData *pResData;
108 : : rtl::OString sPrj;
109 : : rtl::OString sPath;
110 : : std::vector<rtl::OString> aLanguages;
111 : :
112 : : protected:
113 : : void WorkOnDesc(
114 : : const rtl::OString &rOpenTag,
115 : : rtl::OString &rText
116 : : );
117 : : void WorkOnText(
118 : : const rtl::OString &rOpenTag,
119 : : rtl::OString &rText
120 : : );
121 : : void EndOfText(
122 : : const rtl::OString &rOpenTag,
123 : : const rtl::OString &rCloseTag
124 : : );
125 : : void Output( const rtl::OString& rOutput );
126 : :
127 : : public:
128 : : XRMResExport(
129 : : const rtl::OString &rOutputFile,
130 : : const rtl::OString &rProject,
131 : : const rtl::OString &rFilePath
132 : : );
133 : : virtual ~XRMResExport();
134 : : };
135 : :
136 : : //
137 : : // class XRMResMerge
138 : : //
139 : :
140 : : class XRMResMerge : public XRMResOutputParser
141 : : {
142 : : private:
143 : : MergeDataFile *pMergeDataFile;
144 : : rtl::OString sFilename;
145 : : ResData *pResData;
146 : : std::vector<rtl::OString> aLanguages;
147 : :
148 : : protected:
149 : : void WorkOnDesc(
150 : : const rtl::OString &rOpenTag,
151 : : rtl::OString &rText
152 : : );
153 : : void WorkOnText(
154 : : const rtl::OString &rOpenTag,
155 : : rtl::OString &rText
156 : : );
157 : : void EndOfText(
158 : : const rtl::OString &rOpenTag,
159 : : const rtl::OString &rCloseTag
160 : : );
161 : : void Output( const rtl::OString& rOutput );
162 : : public:
163 : : XRMResMerge(
164 : : const rtl::OString &rMergeSource,
165 : : const rtl::OString &rOutputFile,
166 : : const rtl::OString &rFilename
167 : : );
168 : : virtual ~XRMResMerge();
169 : : };
170 : :
171 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|