| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| #ifndef __com_sun_star_document_ExtendedTypeDetection_idl__ |
| #define __com_sun_star_document_ExtendedTypeDetection_idl__ |
| |
| #ifndef __com_sun_star_document_XExtendedFilterDetection_idl__ |
| #include <com/sun/star/document/XExtendedFilterDetection.idl> |
| #endif |
| |
| //============================================================================= |
| |
| module com { module sun { module star { module document { |
| |
| //============================================================================= |
| /** describes a class of service which will be used for deep <type>TypeDetection</type> |
| in a generic way |
| |
| <p> |
| Due to the registered types, flat <type>TypeDetection</type> is already possible, i.e. |
| the assignment of types (e.g. to a URL) only on the basis of configuration data. |
| If, however, you imagine special cases (e.g. modifying the file extension of a |
| Writer file from .sdw to .doc), it quickly becomes clear that you cannot always |
| get a correct result with flat detection. To be certain to get correct results, |
| you need deep detection, i.e. the file itself has to be examined. |
| And that is exactly the function of DetectServices. They get all the information |
| collected so far on a document and then decide which type to assign it to. |
| In the new modular model, such a detector is meant as UNO service which registers |
| itself in the office and is requested by the generic type detection if necessary. |
| <br> |
| Therefore you need two pieces of information: |
| <ul> |
| <li> |
| The <strong>ServiceName</strong> - This must be a valid UNO service name. |
| It is also an entry in the corresponding configuration list. |
| <br> |
| Example: "com.company.devision.DetectService" |
| <br> |
| Note that this realy means the implementation name of the service. |
| Because it's not possible otherwise to distinguish between more then one |
| registered detect services in same office installation! But it's possible for |
| the generic type detection to create an uno service by his implementation name too. |
| </li> |
| <li> |
| A list of <strong>Types</strong> able to be recognized by this service - |
| You can also implement and register detectors for groups of types. |
| </li> |
| </ul> |
| See service <type>TypeDetection</type> and his configuration for further informations. |
| </p> |
| |
| @see TypeDetection |
| */ |
| published service ExtendedTypeDetection |
| { |
| //------------------------------------------------------------------------- |
| /** makes the deep detection |
| |
| <p> |
| Generic type detection searchs for a registered DetectService for an |
| already flat detected type. If any could be found it will be created and |
| used by calling methods of this interface. It gets a <type>MediaDescriptor</type> |
| which contains information about the document which should be detected and must return |
| <ul> |
| <li>an internal type name for detected format</li> |
| <li>or <NULL/> if format is unknown nor supported.</li> |
| </ul> |
| May be that given descriptor already includes the opened document stream as parameter |
| <member>MediaDescriptor::InputStream</member>. Then this one should be used everytime. |
| If it's not included in descriptor the value of <member>MediaDescriptor::URL</member> |
| must be used to open requested ressource by this service. |
| <br> |
| Note: The stream should be added to the descriptor if it wasn't a part of them before. |
| So further steps on the whole detection process can use it and will perform her work. |
| It's further not allowed to hold a reference to this stream any longer. Only copies |
| will be valid then. Otherwise nobody can close this stream then. |
| </p> |
| */ |
| interface XExtendedFilterDetection; |
| }; |
| |
| //============================================================================= |
| |
| }; }; }; }; |
| |
| #endif |