1*b1cdbd2cSJim Jagielski/**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_resource_XStringResourcePersistence_idl__
24*b1cdbd2cSJim Jagielski#define __com_sun_star_resource_XStringResourcePersistence_idl__
25*b1cdbd2cSJim Jagielski
26*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_resource_XStringResourceManager_idl__
27*b1cdbd2cSJim Jagielski#include <com/sun/star/resource/XStringResourceManager.idl>
28*b1cdbd2cSJim Jagielski#endif
29*b1cdbd2cSJim Jagielski
30*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_embed_XStorage_idl__
31*b1cdbd2cSJim Jagielski#include <com/sun/star/embed/XStorage.idl>
32*b1cdbd2cSJim Jagielski#endif
33*b1cdbd2cSJim Jagielski
34*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_task_XInteractionHandler_idl__
35*b1cdbd2cSJim Jagielski#include <com/sun/star/task/XInteractionHandler.idl>
36*b1cdbd2cSJim Jagielski#endif
37*b1cdbd2cSJim Jagielski
38*b1cdbd2cSJim Jagielski
39*b1cdbd2cSJim Jagielski//=============================================================================
40*b1cdbd2cSJim Jagielski
41*b1cdbd2cSJim Jagielskimodule com { module sun { module star { module resource {
42*b1cdbd2cSJim Jagielski
43*b1cdbd2cSJim Jagielski//=============================================================================
44*b1cdbd2cSJim Jagielski/**
45*b1cdbd2cSJim Jagielski	Interface derived from XStringResourceManager containing
46*b1cdbd2cSJim Jagielski	basic persistence functionality limited to operations that
47*b1cdbd2cSJim Jagielski	are independend from a associated location or storage.
48*b1cdbd2cSJim Jagielski
49*b1cdbd2cSJim Jagielski	@see <type>XStringResourceManager</type>.
50*b1cdbd2cSJim Jagielski*/
51*b1cdbd2cSJim Jagielskipublished interface XStringResourcePersistence: com::sun::star::resource::XStringResourceManager
52*b1cdbd2cSJim Jagielski{
53*b1cdbd2cSJim Jagielski    /**
54*b1cdbd2cSJim Jagielski		Stores all string table data respectively all data modified since
55*b1cdbd2cSJim Jagielski		the last call to <member>store</member> to the location or storage
56*b1cdbd2cSJim Jagielski		associated with the StringResourceManager. Each locale is stored
57*b1cdbd2cSJim Jagielski		in a single file following the format of Java properties files.
58*b1cdbd2cSJim Jagielski
59*b1cdbd2cSJim Jagielski		This interface is supported by the services
60*b1cdbd2cSJim Jagielski		<type>StringResourceWithLocation</type> and
61*b1cdbd2cSJim Jagielski		<type>StringResourceWithStorage</type>
62*b1cdbd2cSJim Jagielski
63*b1cdbd2cSJim Jagielski		The StringResourceWithLocation is initialised with an URL
64*b1cdbd2cSJim Jagielski		specifying a location used to load data from and store data to,
65*b1cdbd2cSJim Jagielski		see <type>StringResourceWithLocation</type>.
66*b1cdbd2cSJim Jagielski
67*b1cdbd2cSJim Jagielski		The StringResourceWithStorage is initialised with an in-
68*b1cdbd2cSJim Jagielski		stance of <type scope="com::sun::star::embed">XStorage</type>
69*b1cdbd2cSJim Jagielski		used to load data from and store data to,
70*b1cdbd2cSJim Jagielski		see <type>StringResourceWithStorage</type>.
71*b1cdbd2cSJim Jagielski
72*b1cdbd2cSJim Jagielski		If the string table isn't modified (see <member>isModified</member>)
73*b1cdbd2cSJim Jagielski		this method does nothing.
74*b1cdbd2cSJim Jagielski
75*b1cdbd2cSJim Jagielski		This method can throw all exceptions thrown by the methods of
76*b1cdbd2cSJim Jagielski		<type scope="com::sun::star::embed">XStorage</type> respectively
77*b1cdbd2cSJim Jagielski		a <type scope="com::sun::star::ucb">CommandAbortedException in
78*b1cdbd2cSJim Jagielski		case of a StringResourceWithLocation for all exceptions that are
79*b1cdbd2cSJim Jagielski		not handled by a previously specified
80*b1cdbd2cSJim Jagielski		<type scope="com::sun::star::task">XInteractionHandler</type>.
81*b1cdbd2cSJim Jagielski		The handler to be used for the store operation can be specified
82*b1cdbd2cSJim Jagielski		during initialisation of <type>StringResourceWithLocation</type>.
83*b1cdbd2cSJim Jagielski
84*b1cdbd2cSJim Jagielski		@throws <type scope="com::sun::star::lang">NoSupportException</type>
85*b1cdbd2cSJim Jagielski			if no URL or no valid storage are provided.
86*b1cdbd2cSJim Jagielski    */
87*b1cdbd2cSJim Jagielski    void store()
88*b1cdbd2cSJim Jagielski		raises( com::sun::star::lang::NoSupportException,
89*b1cdbd2cSJim Jagielski				com::sun::star::uno::Exception );
90*b1cdbd2cSJim Jagielski
91*b1cdbd2cSJim Jagielski
92*b1cdbd2cSJim Jagielski     /**
93*b1cdbd2cSJim Jagielski		provides the current modify state of the StringResourceManager instance.
94*b1cdbd2cSJim Jagielski
95*b1cdbd2cSJim Jagielski        @return
96*b1cdbd2cSJim Jagielski            <TRUE/> if the string table has changed since the last call to
97*b1cdbd2cSJim Jagielski            <member>store</member> or, if supported
98*b1cdbd2cSJim Jagielski			<code>XStringResourceWithStorage::storeAsStorage</code>.
99*b1cdbd2cSJim Jagielski			<FALSE/> if the table hasn't changed.
100*b1cdbd2cSJim Jagielski    */
101*b1cdbd2cSJim Jagielski    boolean isModified();
102*b1cdbd2cSJim Jagielski
103*b1cdbd2cSJim Jagielski
104*b1cdbd2cSJim Jagielski    /**
105*b1cdbd2cSJim Jagielski		Sets the comment stored first in each locale data file.
106*b1cdbd2cSJim Jagielski
107*b1cdbd2cSJim Jagielski		This interface method can be used to overwrite the comment used
108*b1cdbd2cSJim Jagielski		during initialisation of the services
109*b1cdbd2cSJim Jagielski		<type>StringResourceWithLocation</type> or
110*b1cdbd2cSJim Jagielski		<type>StringResourceWithStorage</type>
111*b1cdbd2cSJim Jagielski
112*b1cdbd2cSJim Jagielski        @param Comment
113*b1cdbd2cSJim Jagielski            Comment stored first in each properties file followed by a line
114*b1cdbd2cSJim Jagielski			feed character. The line feed character is added automatically
115*b1cdbd2cSJim Jagielski			and hasn't to be part of the comment string. The caller is re-
116*b1cdbd2cSJim Jagielski			sponsible that the passed string is a valid comment in a Java
117*b1cdbd2cSJim Jagielski			properties file, e.g. "# My strings". The string may be empty.
118*b1cdbd2cSJim Jagielski    */
119*b1cdbd2cSJim Jagielski    void setComment( [in] string Comment );
120*b1cdbd2cSJim Jagielski
121*b1cdbd2cSJim Jagielski
122*b1cdbd2cSJim Jagielski    /**
123*b1cdbd2cSJim Jagielski		Stores all string table data to the provided storage.
124*b1cdbd2cSJim Jagielski
125*b1cdbd2cSJim Jagielski		Calling this method does not affect the association with a location
126*b1cdbd2cSJim Jagielski		(in case of a <type>StringResourceWithLocation</type> instance)
127*b1cdbd2cSJim Jagielski		repectively with a storage (in case of a
128*b1cdbd2cSJim Jagielski		<type>StringResourceWithStorage</type> instance).
129*b1cdbd2cSJim Jagielski		The modified state isn't affected either.
130*b1cdbd2cSJim Jagielski
131*b1cdbd2cSJim Jagielski		This method can be used to make a copy of the current string
132*b1cdbd2cSJim Jagielski		table data to a storage. This method can throw all exceptions
133*b1cdbd2cSJim Jagielski		thrown by the methods of <type scope="com::sun::star::embed">XStorage</type>
134*b1cdbd2cSJim Jagielski
135*b1cdbd2cSJim Jagielski        @param Storage
136*b1cdbd2cSJim Jagielski            all string table data will be stored to this storage.
137*b1cdbd2cSJim Jagielski
138*b1cdbd2cSJim Jagielski        @param BaseName
139*b1cdbd2cSJim Jagielski            Base string for the file names used to store the locale data.
140*b1cdbd2cSJim Jagielski			The locale data is stored in Java properties files also following
141*b1cdbd2cSJim Jagielski			the corresponding naming sceme. The files will be named like this:
142*b1cdbd2cSJim Jagielski			"[BaseName]_[Language]_[Country].properties",
143*b1cdbd2cSJim Jagielski			e.g. "MyBaseName_en_US.properties"
144*b1cdbd2cSJim Jagielski			If an empty string is passed for BaseName, "strings" will be used
145*b1cdbd2cSJim Jagielski			as BaseName.
146*b1cdbd2cSJim Jagielski
147*b1cdbd2cSJim Jagielski        @param Comment
148*b1cdbd2cSJim Jagielski            Comment stored first in each properties file,
149*b1cdbd2cSJim Jagielski			for a detailed description see <member>setComment</member>.
150*b1cdbd2cSJim Jagielski
151*b1cdbd2cSJim Jagielski		This method can throw all exceptions thrown by the methods of
152*b1cdbd2cSJim Jagielski		<type scope="com::sun::star::embed">XStorage</type>
153*b1cdbd2cSJim Jagielski    */
154*b1cdbd2cSJim Jagielski    void storeToStorage( [in] ::com::sun::star::embed::XStorage Storage,
155*b1cdbd2cSJim Jagielski		[in] string BaseName, [in] string Comment )
156*b1cdbd2cSJim Jagielski			raises ( com::sun::star::uno::Exception );
157*b1cdbd2cSJim Jagielski
158*b1cdbd2cSJim Jagielski
159*b1cdbd2cSJim Jagielski    /**
160*b1cdbd2cSJim Jagielski		Stores all string table data to the location specified by the
161*b1cdbd2cSJim Jagielski		passed URL string.
162*b1cdbd2cSJim Jagielski
163*b1cdbd2cSJim Jagielski		Calling this method does not affect the association with a location
164*b1cdbd2cSJim Jagielski		(in case of a <type>StringResourceWithLocation</type> instance)
165*b1cdbd2cSJim Jagielski		repectively with a storage (in case of a
166*b1cdbd2cSJim Jagielski		<type>StringResourceWithStorage</type> instance).
167*b1cdbd2cSJim Jagielski		The modified state isn't affected either.
168*b1cdbd2cSJim Jagielski
169*b1cdbd2cSJim Jagielski		This method can be used to make a copy of the current string
170*b1cdbd2cSJim Jagielski		table data to a location.
171*b1cdbd2cSJim Jagielski
172*b1cdbd2cSJim Jagielski        @param URL
173*b1cdbd2cSJim Jagielski            the location the string table data should be stored to.
174*b1cdbd2cSJim Jagielski
175*b1cdbd2cSJim Jagielski        @param BaseName
176*b1cdbd2cSJim Jagielski            Base string for the file names used to store the locale data.
177*b1cdbd2cSJim Jagielski			The locale data is stored in Java properties files also following
178*b1cdbd2cSJim Jagielski			the corresponding naming sceme. The files will be named like this:
179*b1cdbd2cSJim Jagielski			"[BaseName]_[Language]_[Country].properties",
180*b1cdbd2cSJim Jagielski			e.g. "MyBaseName_en_US.properties"
181*b1cdbd2cSJim Jagielski			If an empty string is passed for BaseName, "strings" will be used
182*b1cdbd2cSJim Jagielski			as BaseName.
183*b1cdbd2cSJim Jagielski
184*b1cdbd2cSJim Jagielski        @param Comment
185*b1cdbd2cSJim Jagielski            Comment stored first in each properties file,
186*b1cdbd2cSJim Jagielski			for a detailed description see <member>setComment</member>.
187*b1cdbd2cSJim Jagielski
188*b1cdbd2cSJim Jagielski        @param Handler
189*b1cdbd2cSJim Jagielski			a <type scope="com::sun::star::task">XInteractionHandler</type>.
190*b1cdbd2cSJim Jagielski			It will be passed to ucb handle exceptions. Exceptions not processed
191*b1cdbd2cSJim Jagielski			by this handler will be passed as com::sun::star::uno::Exception. If
192*b1cdbd2cSJim Jagielski			this parameter is null this applies to all exceptions thrown by ucb.
193*b1cdbd2cSJim Jagielski
194*b1cdbd2cSJim Jagielski	    @see com::sun::star::task::InteractionHandler
195*b1cdbd2cSJim Jagielski	*/
196*b1cdbd2cSJim Jagielski	void storeToURL( [in] string URL, [in] string BaseName, [in] string Comment,
197*b1cdbd2cSJim Jagielski		[in] com::sun::star::task::XInteractionHandler Handler )
198*b1cdbd2cSJim Jagielski			raises( com::sun::star::uno::Exception );
199*b1cdbd2cSJim Jagielski
200*b1cdbd2cSJim Jagielski
201*b1cdbd2cSJim Jagielski	/**
202*b1cdbd2cSJim Jagielski		Returns a sequence of byte representing the complete string resource
203*b1cdbd2cSJim Jagielski		in a binary format.
204*b1cdbd2cSJim Jagielski
205*b1cdbd2cSJim Jagielski		This method is intended to support datatransfer functionality, e.g. provided
206*b1cdbd2cSJim Jagielski		by <type scope="com::sun::star::datatransfer">XTransferable</type> and
207*b1cdbd2cSJim Jagielski		related interfaces.
208*b1cdbd2cSJim Jagielski
209*b1cdbd2cSJim Jagielski		See <member>importBinary</member>).
210*b1cdbd2cSJim Jagielski
211*b1cdbd2cSJim Jagielski		@return  a sequence of byte representing the string resource.
212*b1cdbd2cSJim Jagielski	*/
213*b1cdbd2cSJim Jagielski	sequence<byte> exportBinary();
214*b1cdbd2cSJim Jagielski
215*b1cdbd2cSJim Jagielski
216*b1cdbd2cSJim Jagielski	/**
217*b1cdbd2cSJim Jagielski		Initializes the string resource with binary data. This method
218*b1cdbd2cSJim Jagielski		expects the data format returned by <member>exportBinary</member>.
219*b1cdbd2cSJim Jagielski
220*b1cdbd2cSJim Jagielski		All locales and strings previously added to the string resource
221*b1cdbd2cSJim Jagielski		will be deleted. So after calling this method the string resource
222*b1cdbd2cSJim Jagielski		only contains the locales and strings specified in the binary data.
223*b1cdbd2cSJim Jagielski
224*b1cdbd2cSJim Jagielski		This method is intended to support datatransfer functionality, e.g. provided
225*b1cdbd2cSJim Jagielski		by <type scope="com::sun::star::datatransfer">XTransferable</type> and
226*b1cdbd2cSJim Jagielski		related interfaces.
227*b1cdbd2cSJim Jagielski
228*b1cdbd2cSJim Jagielski		See <member>importBinary</member>).
229*b1cdbd2cSJim Jagielski
230*b1cdbd2cSJim Jagielski		@throws com::sun::star::lang::IllegalArgumentException
231*b1cdbd2cSJim Jagielski		if Data is empty or does not meet the binary format returned by
232*b1cdbd2cSJim Jagielski		the current or earlier version of <member>exportBinary</member>).
233*b1cdbd2cSJim Jagielski	*/
234*b1cdbd2cSJim Jagielski	void importBinary( [in] sequence<byte> Data )
235*b1cdbd2cSJim Jagielski		raises ( com::sun::star::lang::IllegalArgumentException );
236*b1cdbd2cSJim Jagielski
237*b1cdbd2cSJim Jagielski};
238*b1cdbd2cSJim Jagielski
239*b1cdbd2cSJim Jagielski//=============================================================================
240*b1cdbd2cSJim Jagielski
241*b1cdbd2cSJim Jagielski}; }; }; };
242*b1cdbd2cSJim Jagielski
243*b1cdbd2cSJim Jagielski#endif
244