1d1766043SAndrew Rist/**************************************************************
2*af1fe498Smseidel *
3d1766043SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4d1766043SAndrew Rist * or more contributor license agreements.  See the NOTICE file
5d1766043SAndrew Rist * distributed with this work for additional information
6d1766043SAndrew Rist * regarding copyright ownership.  The ASF licenses this file
7d1766043SAndrew Rist * to you under the Apache License, Version 2.0 (the
8d1766043SAndrew Rist * "License"); you may not use this file except in compliance
9d1766043SAndrew Rist * with the License.  You may obtain a copy of the License at
10*af1fe498Smseidel *
11d1766043SAndrew Rist *   http://www.apache.org/licenses/LICENSE-2.0
12*af1fe498Smseidel *
13d1766043SAndrew Rist * Unless required by applicable law or agreed to in writing,
14d1766043SAndrew Rist * software distributed under the License is distributed on an
15d1766043SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16d1766043SAndrew Rist * KIND, either express or implied.  See the License for the
17d1766043SAndrew Rist * specific language governing permissions and limitations
18d1766043SAndrew Rist * under the License.
19*af1fe498Smseidel *
20d1766043SAndrew Rist *************************************************************/
21d1766043SAndrew Rist
22d1766043SAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir#if ! defined INCLUDED_com_sun_star_deployment_XPackage_idl
25cdf0e10cSrcweir#define INCLUDED_com_sun_star_deployment_XPackage_idl
26cdf0e10cSrcweir
27cdf0e10cSrcweir#include <com/sun/star/beans/Optional.idl>
28cdf0e10cSrcweir#include <com/sun/star/beans/Ambiguous.idl>
29cdf0e10cSrcweir#include <com/sun/star/beans/StringPair.idl>
30cdf0e10cSrcweir#include <com/sun/star/deployment/DeploymentException.idl>
31cdf0e10cSrcweir#include <com/sun/star/deployment/XPackageTypeInfo.idl>
32cdf0e10cSrcweir#include <com/sun/star/deployment/ExtensionRemovedException.idl>
33cdf0e10cSrcweir#include <com/sun/star/graphic/XGraphic.idl>
34cdf0e10cSrcweir#include <com/sun/star/lang/XComponent.idl>
35cdf0e10cSrcweir#include <com/sun/star/lang/IllegalArgumentException.idl>
36cdf0e10cSrcweir#include <com/sun/star/task/XAbortChannel.idl>
37cdf0e10cSrcweir#include <com/sun/star/ucb/CommandFailedException.idl>
38cdf0e10cSrcweir#include <com/sun/star/ucb/CommandAbortedException.idl>
39cdf0e10cSrcweir#include <com/sun/star/ucb/XCommandEnvironment.idl>
40cdf0e10cSrcweir#include <com/sun/star/util/XModifyBroadcaster.idl>
41cdf0e10cSrcweir
42cdf0e10cSrcweir
43cdf0e10cSrcweirmodule com { module sun { module star { module deployment {
44cdf0e10cSrcweir
45cdf0e10cSrcweir/** Objects of this interface reflect a bound package and are issued by a
46cdf0e10cSrcweir    <type>PackageRegistryBackend</type>.
47*af1fe498Smseidel
4834c958abSJürgen Schmidt    @since OpenOffice 2.0
49cdf0e10cSrcweir*/
50cdf0e10cSrcweirinterface XPackage
51cdf0e10cSrcweir{
52cdf0e10cSrcweir    /** implemented to notify that the package has been removed
53cdf0e10cSrcweir     */
54cdf0e10cSrcweir    interface com::sun::star::lang::XComponent;
55*af1fe498Smseidel
56cdf0e10cSrcweir    /** notifies changes of the registration state of the package
57cdf0e10cSrcweir     */
58cdf0e10cSrcweir    interface com::sun::star::util::XModifyBroadcaster;
59*af1fe498Smseidel
60cdf0e10cSrcweir
61cdf0e10cSrcweir    /** creates a command channel to be used to asynchronously abort a command.
62*af1fe498Smseidel
63cdf0e10cSrcweir        @return
64cdf0e10cSrcweir                abort channel
65cdf0e10cSrcweir    */
66cdf0e10cSrcweir    com::sun::star::task::XAbortChannel createAbortChannel();
67*af1fe498Smseidel
68cdf0e10cSrcweir    /** checks if the package can be installed.
69cdf0e10cSrcweir
70cdf0e10cSrcweir        Only if the return value is true the package is allowed to be installed.
71cdf0e10cSrcweir        In case of false or in case of an exception, the package must be removed
72cdf0e10cSrcweir        completely.
73cdf0e10cSrcweir        After return of this function no code from the extension may be used
74cdf0e10cSrcweir        anymore, so that the extension can be safely removed from the harddisk.
75*af1fe498Smseidel
76cdf0e10cSrcweir        @param xCmdEnv
77cdf0e10cSrcweir               command environment for error handling and other interaction.
788e0daafcSTsutomu Uchino        @param alreadyInstalled
79*af1fe498Smseidel            indicates that an extension with the same identifier is already installed.
80cdf0e10cSrcweir
81cdf0e10cSrcweir        @return
82cdf0e10cSrcweir            null - all prerequisites are met. Otherwise, a value from
83cdf0e10cSrcweir            <member>Prerequisites</member> indicating what prerequisites are missing.
84cdf0e10cSrcweir     */
85cdf0e10cSrcweir    long checkPrerequisites(
86cdf0e10cSrcweir        [in] com::sun::star::task::XAbortChannel xAbortChannel,
87cdf0e10cSrcweir        [in] com::sun::star::ucb::XCommandEnvironment xCmdEnv,
88cdf0e10cSrcweir        [in] boolean alreadyInstalled)
89cdf0e10cSrcweir        raises (DeploymentException,
90cdf0e10cSrcweir                ExtensionRemovedException,
91cdf0e10cSrcweir                com::sun::star::ucb::CommandFailedException,
92cdf0e10cSrcweir                com::sun::star::ucb::CommandAbortedException);
93*af1fe498Smseidel
94cdf0e10cSrcweir    /** checks if the dependencies for this package are still satisfied
95cdf0e10cSrcweir
96*af1fe498Smseidel        After updating the OpenOffice, some dependencies for packages might
97cdf0e10cSrcweir        no longer be satisfied.
98*af1fe498Smseidel
9934c958abSJürgen Schmidt        @since OpenOffice 3.2
100cdf0e10cSrcweir
101cdf0e10cSrcweir        @param xCmdEnv
102cdf0e10cSrcweir               command environment for error handling and other interaction.
103cdf0e10cSrcweir
104cdf0e10cSrcweir        @return
105cdf0e10cSrcweir            true - all dependencies are satisfied
106cdf0e10cSrcweir            false - at least one dependency failed.
107cdf0e10cSrcweir     */
108cdf0e10cSrcweir    boolean checkDependencies(
109cdf0e10cSrcweir        [in] com::sun::star::ucb::XCommandEnvironment xCmdEnv )
110cdf0e10cSrcweir        raises (DeploymentException,
111cdf0e10cSrcweir                ExtensionRemovedException,
112cdf0e10cSrcweir                com::sun::star::ucb::CommandFailedException);
113*af1fe498Smseidel
114cdf0e10cSrcweir
115cdf0e10cSrcweir    /** determines whether the package is currently is registered, i.e.
116cdf0e10cSrcweir        whether it is active.
117*af1fe498Smseidel
118cdf0e10cSrcweir        @param xAbortChannel
119cdf0e10cSrcweir               abort channel to asynchronously abort the registration process,
120cdf0e10cSrcweir               or null
121cdf0e10cSrcweir        @param xCmdEnv
122cdf0e10cSrcweir               command environment for error and progress handling
123cdf0e10cSrcweir        @return
124cdf0e10cSrcweir                status whether the package is registered (<TRUE/>, <FALSE/>) or
125cdf0e10cSrcweir                the status is ambiguous.  Additionally, a registration status
126cdf0e10cSrcweir                may not apply, e.g. in case of an empty package bundle.
127cdf0e10cSrcweir    */
128cdf0e10cSrcweir    com::sun::star::beans::Optional<
129cdf0e10cSrcweir        com::sun::star::beans::Ambiguous<boolean> > isRegistered(
130cdf0e10cSrcweir            [in] com::sun::star::task::XAbortChannel xAbortChannel,
131cdf0e10cSrcweir            [in] com::sun::star::ucb::XCommandEnvironment xCmdEnv )
132cdf0e10cSrcweir        raises (DeploymentException,
133cdf0e10cSrcweir                com::sun::star::ucb::CommandFailedException,
134cdf0e10cSrcweir                com::sun::star::ucb::CommandAbortedException);
135*af1fe498Smseidel
136cdf0e10cSrcweir    /** registers this <type>XPackage</type>.
137cdf0e10cSrcweir
138cdf0e10cSrcweir        NEVER call this directly. This is done by the extension manager if necessary.
139cdf0e10cSrcweir
140cdf0e10cSrcweir        @param startup
141cdf0e10cSrcweir               indicates that registration is adapted to the particular
142cdf0e10cSrcweir               startup scenario. That is, it is set to true, when called
143cdf0e10cSrcweir               from <member>XExtensionManager::synchronize</member>
144cdf0e10cSrcweir        @param xAbortChannel
145cdf0e10cSrcweir               abort channel to asynchronously abort the registration process,
146cdf0e10cSrcweir               or null
147cdf0e10cSrcweir        @param xCmdEnv
148cdf0e10cSrcweir               command environment for error and progress handling
149cdf0e10cSrcweir    */
150cdf0e10cSrcweir    void registerPackage(
151cdf0e10cSrcweir        [in] boolean startup,
152cdf0e10cSrcweir        [in] com::sun::star::task::XAbortChannel xAbortChannel,
153cdf0e10cSrcweir        [in] com::sun::star::ucb::XCommandEnvironment xCmdEnv )
154cdf0e10cSrcweir        raises (DeploymentException,
155cdf0e10cSrcweir                ExtensionRemovedException,
156cdf0e10cSrcweir                com::sun::star::ucb::CommandFailedException,
157cdf0e10cSrcweir                com::sun::star::ucb::CommandAbortedException,
158cdf0e10cSrcweir                com::sun::star::lang::IllegalArgumentException);
159*af1fe498Smseidel
160cdf0e10cSrcweir    /** revokes this <type>XPackage</type>.
161cdf0e10cSrcweir
162cdf0e10cSrcweir        NEVER call this directly. This is done by the extension manager if necessary.
163*af1fe498Smseidel
164cdf0e10cSrcweir        @param xAbortChannel
165cdf0e10cSrcweir               abort channel to asynchronously abort the registration process,
166cdf0e10cSrcweir               or null
167cdf0e10cSrcweir        @param xCmdEnv
168cdf0e10cSrcweir               command environment for error and progress handling
169cdf0e10cSrcweir    */
170cdf0e10cSrcweir    void revokePackage(
171cdf0e10cSrcweir        [in] com::sun::star::task::XAbortChannel xAbortChannel,
172cdf0e10cSrcweir        [in] com::sun::star::ucb::XCommandEnvironment xCmdEnv )
173cdf0e10cSrcweir        raises (DeploymentException,
174cdf0e10cSrcweir                com::sun::star::ucb::CommandFailedException,
175cdf0e10cSrcweir                com::sun::star::ucb::CommandAbortedException,
176cdf0e10cSrcweir                com::sun::star::lang::IllegalArgumentException);
177*af1fe498Smseidel
178cdf0e10cSrcweir    /** reflects whether this package is a bundle of one or more packages,
179cdf0e10cSrcweir        e.g. a zip (legacy) package file or a document hosting script packages.
180*af1fe498Smseidel
181cdf0e10cSrcweir        @return
182*af1fe498Smseidel                in case this package reflects a package bundle
183cdf0e10cSrcweir    */
184cdf0e10cSrcweir    boolean isBundle();
185*af1fe498Smseidel
186cdf0e10cSrcweir    /** Gets packages of the bundle.
187cdf0e10cSrcweir
188cdf0e10cSrcweir        If <member>isRemoved</member> returns true then getBundle may return an
189cdf0e10cSrcweir        empty sequence in case the object is not registered.
190cdf0e10cSrcweir
191cdf0e10cSrcweir        @param xAbortChannel
192cdf0e10cSrcweir               abort channel to asynchronously abort the registration process,
193cdf0e10cSrcweir               or null
194cdf0e10cSrcweir        @param xCmdEnv
195cdf0e10cSrcweir               command environment for error and progress handling
196cdf0e10cSrcweir        @return
197cdf0e10cSrcweir                set of packages enclosed in this package
198cdf0e10cSrcweir    */
199cdf0e10cSrcweir    sequence<XPackage> getBundle(
200cdf0e10cSrcweir        [in] com::sun::star::task::XAbortChannel xAbortChannel,
201cdf0e10cSrcweir        [in] com::sun::star::ucb::XCommandEnvironment xCmdEnv )
202cdf0e10cSrcweir        raises (DeploymentException,
203cdf0e10cSrcweir                com::sun::star::ucb::CommandFailedException,
204cdf0e10cSrcweir                com::sun::star::ucb::CommandAbortedException,
205cdf0e10cSrcweir                com::sun::star::lang::IllegalArgumentException);
206*af1fe498Smseidel
207cdf0e10cSrcweir    /** returns the file name of the package.
208cdf0e10cSrcweir
209cdf0e10cSrcweir        @return
210cdf0e10cSrcweir                file name of the package
211cdf0e10cSrcweir    */
212cdf0e10cSrcweir    string getName();
213cdf0e10cSrcweir
214cdf0e10cSrcweir    /** returns the unique extension identifier.
215cdf0e10cSrcweir
216cdf0e10cSrcweir        @return
217cdf0e10cSrcweir                the extension identifier (a
218cdf0e10cSrcweir        <code>"org.openoffice.legacy."</code> one if the extension does not
219cdf0e10cSrcweir        explicitly specify one), or an empty <code>Optional</code> if this
220cdf0e10cSrcweir        package does not represent an extension
221cdf0e10cSrcweir    */
222cdf0e10cSrcweir    com::sun::star::beans::Optional<string> getIdentifier();
223cdf0e10cSrcweir
224cdf0e10cSrcweir    /** returns the textual version representation of the package.
225cdf0e10cSrcweir
226cdf0e10cSrcweir        A textual version representation is a finite string following the
227cdf0e10cSrcweir        BNF<br/>
228cdf0e10cSrcweir        version ::= [element ("." element)*]<br/>
229cdf0e10cSrcweir        element ::= ("0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9")+
230cdf0e10cSrcweir
231cdf0e10cSrcweir        @return
232cdf0e10cSrcweir                the textual version representation
233cdf0e10cSrcweir    */
234cdf0e10cSrcweir    string getVersion()
235cdf0e10cSrcweir        raises (ExtensionRemovedException);
236*af1fe498Smseidel
237cdf0e10cSrcweir    /** returns the location of the package.
238*af1fe498Smseidel
239cdf0e10cSrcweir        @return
240cdf0e10cSrcweir                location of package
241cdf0e10cSrcweir    */
242cdf0e10cSrcweir    string getURL();
243*af1fe498Smseidel
244cdf0e10cSrcweir    /** returns the display name of the package, e.g. for graphical user
245cdf0e10cSrcweir        interfaces (GUI).
246*af1fe498Smseidel
247cdf0e10cSrcweir        @return
248cdf0e10cSrcweir                display name of the package
249cdf0e10cSrcweir    */
250cdf0e10cSrcweir    string getDisplayName()
251cdf0e10cSrcweir        raises (ExtensionRemovedException);
252*af1fe498Smseidel
253cdf0e10cSrcweir    /** returns a description string to describe the  package.
254*af1fe498Smseidel
255cdf0e10cSrcweir        @return
256cdf0e10cSrcweir                description
257cdf0e10cSrcweir    */
258cdf0e10cSrcweir    string getDescription()
259cdf0e10cSrcweir         raises (ExtensionRemovedException);
260cdf0e10cSrcweir
261cdf0e10cSrcweir    /** returns a string containing the license text.
262*af1fe498Smseidel
263cdf0e10cSrcweir        @return
264cdf0e10cSrcweir                license
265cdf0e10cSrcweir    */
266cdf0e10cSrcweir    string getLicenseText()
267cdf0e10cSrcweir         raises (ExtensionRemovedException);
268cdf0e10cSrcweir
269cdf0e10cSrcweir    /** returns a sequence of update information URLs.
270cdf0e10cSrcweir
271cdf0e10cSrcweir        The sequence may be empty in case no update information is available.
272cdf0e10cSrcweir        If the sequence contains more than one URL, the extra URLs must mirror
273cdf0e10cSrcweir        the information available at the first URL.
274cdf0e10cSrcweir
275cdf0e10cSrcweir        @return
276cdf0e10cSrcweir                update information URLs
277cdf0e10cSrcweir    */
278cdf0e10cSrcweir    sequence<string> getUpdateInformationURLs()
279cdf0e10cSrcweir        raises (ExtensionRemovedException);
280cdf0e10cSrcweir    /** returns the publisher info for a package, the strings
281cdf0e10cSrcweir        might be empty, if there are no publisher
282cdf0e10cSrcweir
283cdf0e10cSrcweir        <type scope="::com::sun::star::beans">StringPair</type>::First
284cdf0e10cSrcweir        represents the publisher name and
285cdf0e10cSrcweir        <type scope="::com::sun::star::beans">StringPair</type>::Second
286cdf0e10cSrcweir        represents the URL to the publisher.
287cdf0e10cSrcweir    */
288cdf0e10cSrcweir
289cdf0e10cSrcweir    ::com::sun::star::beans::StringPair getPublisherInfo()
290cdf0e10cSrcweir        raises (ExtensionRemovedException);
291cdf0e10cSrcweir    /** returns the <type>XPackageTypeInfo</type>, e.g. media-type etc.
292*af1fe498Smseidel
293cdf0e10cSrcweir        @return
294cdf0e10cSrcweir                media type of package
295cdf0e10cSrcweir    */
296cdf0e10cSrcweir    XPackageTypeInfo getPackageType();
297*af1fe498Smseidel
298cdf0e10cSrcweir    /** exports package to given destination URL.
299*af1fe498Smseidel
300cdf0e10cSrcweir        @param destFolderURL
301cdf0e10cSrcweir               package destination folder URL, must be UCB conform
302cdf0e10cSrcweir        @param newTitle
303cdf0e10cSrcweir               new package name
304cdf0e10cSrcweir        @param nameClashAction
305cdf0e10cSrcweir               one of <type scope="com::sun::star::ucb">NameClash</type>
306cdf0e10cSrcweir        @param xCmdEnv
307cdf0e10cSrcweir               command environment for error and progress handling
308cdf0e10cSrcweir    */
309cdf0e10cSrcweir    void exportTo( [in] string destFolderURL,
310cdf0e10cSrcweir                   [in] string newTitle,
311cdf0e10cSrcweir                   [in] long nameClashAction,
312cdf0e10cSrcweir                   [in] com::sun::star::ucb::XCommandEnvironment xCmdEnv )
313cdf0e10cSrcweir        raises (
314cdf0e10cSrcweir            ExtensionRemovedException,
315cdf0e10cSrcweir            com::sun::star::ucb::CommandFailedException,
316cdf0e10cSrcweir            com::sun::star::ucb::CommandAbortedException);
317cdf0e10cSrcweir
318cdf0e10cSrcweir    /** returns an icon for a package.
319*af1fe498Smseidel
320cdf0e10cSrcweir        @param highContrast
321cdf0e10cSrcweir            return high contrast icon
322cdf0e10cSrcweir        @return
323cdf0e10cSrcweir            the icon which should be used to represent the table in the
324cdf0e10cSrcweir            database application window, or <NULL/> if the default icon
325cdf0e10cSrcweir            should be used.
326cdf0e10cSrcweir    */
327cdf0e10cSrcweir    com::sun::star::graphic::XGraphic getIcon( [in] boolean highContrast )
328cdf0e10cSrcweir        raises (ExtensionRemovedException);
329cdf0e10cSrcweir
330cdf0e10cSrcweir    /** returns the name of the repository where this object comes from.
331cdf0e10cSrcweir     */
332cdf0e10cSrcweir    string getRepositoryName();
333cdf0e10cSrcweir
334cdf0e10cSrcweir    /** return a URL to a directory which contains the registration data.
335cdf0e10cSrcweir
336cdf0e10cSrcweir        This data may be created when calling
337cdf0e10cSrcweir        <member>XPackage::registerPackage</member>.  If this is the case is
338cdf0e10cSrcweir        indicated by <member
339cdf0e10cSrcweir        scope="com::sun::star::beans">Optional::IsPresent</member> of the return
340cdf0e10cSrcweir        value.
341cdf0e10cSrcweir        If registration data are created during registration, but the package is
342cdf0e10cSrcweir        currently not registered, for example after calling
343cdf0e10cSrcweir        <member>XPackage::revokePackage</member>, then <member
344cdf0e10cSrcweir        scope="com::sun::star::beans">Optional::IsPresent</member> is true and
345cdf0e10cSrcweir        the <member scope="com::sun::star::beans">Optional::Value</member> may
346cdf0e10cSrcweir        be an empty string.
347cdf0e10cSrcweir    */
348cdf0e10cSrcweir    com::sun::star::beans::Optional<string> getRegistrationDataURL()
349cdf0e10cSrcweir        raises (ExtensionRemovedException);
350*af1fe498Smseidel
351cdf0e10cSrcweir    /** indicates if this object represents a removed extension or extension
352cdf0e10cSrcweir        item. This is the case when it was created by providing
353cdf0e10cSrcweir        <code>true</code> for the <code>removed</code> parameter in the function
354cdf0e10cSrcweir        <member>XPackageRegistry::bindPackage</member>.
355cdf0e10cSrcweir     */
356cdf0e10cSrcweir    boolean isRemoved();
357cdf0e10cSrcweir
358cdf0e10cSrcweir};
359cdf0e10cSrcweir
360cdf0e10cSrcweir}; }; }; };
361cdf0e10cSrcweir
362cdf0e10cSrcweir#endif
363