xref: /AOO41X/main/xmlhelp/source/com/sun/star/help/HelpIndexer.java (revision 57c10a96aed8f3a9d5f1051f7ae10190c7cf3c0e)
1*57c10a96SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*57c10a96SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*57c10a96SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*57c10a96SAndrew Rist  * distributed with this work for additional information
6*57c10a96SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*57c10a96SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*57c10a96SAndrew Rist  * "License"); you may not use this file except in compliance
9*57c10a96SAndrew Rist  * with the License.  You may obtain a copy of the License at
10cdf0e10cSrcweir  *
11*57c10a96SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
13*57c10a96SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*57c10a96SAndrew Rist  * software distributed under the License is distributed on an
15*57c10a96SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*57c10a96SAndrew Rist  * KIND, either express or implied.  See the License for the
17*57c10a96SAndrew Rist  * specific language governing permissions and limitations
18*57c10a96SAndrew Rist  * under the License.
19cdf0e10cSrcweir  *
20*57c10a96SAndrew Rist  *************************************************************/
21*57c10a96SAndrew Rist 
22*57c10a96SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir package com.sun.star.help;
25cdf0e10cSrcweir 
26cdf0e10cSrcweir import com.sun.star.lib.uno.helper.WeakBase;
27cdf0e10cSrcweir import com.sun.star.lang.XServiceInfo;
28cdf0e10cSrcweir import com.sun.star.script.XInvocation;
29cdf0e10cSrcweir import com.sun.star.beans.XIntrospectionAccess;
30cdf0e10cSrcweir import com.sun.star.uno.AnyConverter;
31cdf0e10cSrcweir import com.sun.star.uno.XComponentContext;
32cdf0e10cSrcweir 
33cdf0e10cSrcweir import java.io.File;
34cdf0e10cSrcweir import java.io.FileNotFoundException;
35cdf0e10cSrcweir import java.io.IOException;
36cdf0e10cSrcweir import java.util.Date;
37cdf0e10cSrcweir import java.util.zip.ZipOutputStream;
38cdf0e10cSrcweir 
39cdf0e10cSrcweir /**
40cdf0e10cSrcweir    When this tool is used with long path names on Windows, that is paths which start
41cdf0e10cSrcweir    with \\?\, then the caller must make sure that the path is unique. This is achieved
42cdf0e10cSrcweir    by removing '.' and '..' from the path. Paths which are created by
43cdf0e10cSrcweir    osl_getSystemPathFromFileURL fulfill this requirement. This is necessary because
44cdf0e10cSrcweir    lucene is patched to not use File.getCanonicalPath. See long_path.patch in the lucene
45cdf0e10cSrcweir    module.
46cdf0e10cSrcweir  */
47cdf0e10cSrcweir public class HelpIndexer extends WeakBase
48cdf0e10cSrcweir     implements XServiceInfo, XInvocation
49cdf0e10cSrcweir {
50cdf0e10cSrcweir     static private final String __serviceName =
51cdf0e10cSrcweir         "com.sun.star.help.HelpIndexer";
52cdf0e10cSrcweir     static private final String aCreateIndexMethodName = "createIndex";
53cdf0e10cSrcweir 
54cdf0e10cSrcweir     static private com.sun.star.help.HelpIndexerTool helpindexer = new com.sun.star.help.HelpIndexerTool();
55cdf0e10cSrcweir 
56cdf0e10cSrcweir     public HelpIndexer()
57cdf0e10cSrcweir     {
58cdf0e10cSrcweir     }
59cdf0e10cSrcweir 
60cdf0e10cSrcweir     public HelpIndexer(XComponentContext xCompContext)
61cdf0e10cSrcweir     {
62cdf0e10cSrcweir     }
63cdf0e10cSrcweir 
64cdf0e10cSrcweir     public static void mainImpl( String[] args, boolean bExtensionMode )
65cdf0e10cSrcweir     {
66cdf0e10cSrcweir         helpindexer.mainImpl( args , bExtensionMode );
67cdf0e10cSrcweir     }
68cdf0e10cSrcweir 
69cdf0e10cSrcweir     public static void createZipFile( File aDirToZip, String aTargetZipFileStr )
70cdf0e10cSrcweir             throws FileNotFoundException, IOException
71cdf0e10cSrcweir     {
72cdf0e10cSrcweir         helpindexer.createZipFile( aDirToZip , aTargetZipFileStr );
73cdf0e10cSrcweir     }
74cdf0e10cSrcweir 
75cdf0e10cSrcweir     public static void addToZipRecursively( ZipOutputStream zos, File aFile, String aBasePath )
76cdf0e10cSrcweir             throws FileNotFoundException, IOException
77cdf0e10cSrcweir     {
78cdf0e10cSrcweir         helpindexer.addToZipRecursively( zos , aFile , aBasePath );
79cdf0e10cSrcweir     }
80cdf0e10cSrcweir 
81cdf0e10cSrcweir     static public boolean deleteRecursively( File aFile )
82cdf0e10cSrcweir     {
83cdf0e10cSrcweir         return helpindexer.deleteRecursively( aFile );
84cdf0e10cSrcweir     }
85cdf0e10cSrcweir 
86cdf0e10cSrcweir     //===================================================
87cdf0e10cSrcweir     // XInvocation
88cdf0e10cSrcweir     public XIntrospectionAccess getIntrospection()
89cdf0e10cSrcweir     {
90cdf0e10cSrcweir         return  null;
91cdf0e10cSrcweir     }
92cdf0e10cSrcweir 
93cdf0e10cSrcweir     public Object invoke( String aFunctionName, java.lang.Object[] aParams,
94cdf0e10cSrcweir         short[][] aOutParamIndex, java.lang.Object[][] aOutParam )
95cdf0e10cSrcweir             throws  com.sun.star.lang.IllegalArgumentException,
96cdf0e10cSrcweir                     com.sun.star.script.CannotConvertException,
97cdf0e10cSrcweir                     com.sun.star.reflection.InvocationTargetException
98cdf0e10cSrcweir     {
99cdf0e10cSrcweir         if(
100cdf0e10cSrcweir               !aFunctionName.equals( aCreateIndexMethodName  ) )
101cdf0e10cSrcweir             throw new com.sun.star.lang.IllegalArgumentException();
102cdf0e10cSrcweir 
103cdf0e10cSrcweir         aOutParamIndex[0] = new short[0];
104cdf0e10cSrcweir         aOutParam[0] = new Object[0];
105cdf0e10cSrcweir 
106cdf0e10cSrcweir         int nParamCount = aParams.length;
107cdf0e10cSrcweir         String aStrs[] = new String[nParamCount];
108cdf0e10cSrcweir         for( int i = 0 ; i < nParamCount ; i++ )
109cdf0e10cSrcweir         {
110cdf0e10cSrcweir             try
111cdf0e10cSrcweir             {
112cdf0e10cSrcweir                 aStrs[i] = AnyConverter.toString( aParams[i] );
113cdf0e10cSrcweir             }
114cdf0e10cSrcweir             catch( IllegalArgumentException e )
115cdf0e10cSrcweir             {
116cdf0e10cSrcweir                 aStrs[i] = "";
117cdf0e10cSrcweir             }
118cdf0e10cSrcweir         }
119cdf0e10cSrcweir 
120cdf0e10cSrcweir         boolean bExtensionMode = true;
121cdf0e10cSrcweir         mainImpl( aStrs, bExtensionMode );
122cdf0e10cSrcweir 
123cdf0e10cSrcweir         return null;
124cdf0e10cSrcweir     }
125cdf0e10cSrcweir 
126cdf0e10cSrcweir     public void setValue( String aPropertyName, java.lang.Object aValue )
127cdf0e10cSrcweir         throws  com.sun.star.beans.UnknownPropertyException,
128cdf0e10cSrcweir                 com.sun.star.script.CannotConvertException,
129cdf0e10cSrcweir                 com.sun.star.reflection.InvocationTargetException
130cdf0e10cSrcweir     {
131cdf0e10cSrcweir         throw new com.sun.star.beans.UnknownPropertyException();
132cdf0e10cSrcweir     }
133cdf0e10cSrcweir 
134cdf0e10cSrcweir     public Object getValue( String aPropertyName )
135cdf0e10cSrcweir         throws com.sun.star.beans.UnknownPropertyException
136cdf0e10cSrcweir     {
137cdf0e10cSrcweir         throw new com.sun.star.beans.UnknownPropertyException();
138cdf0e10cSrcweir     }
139cdf0e10cSrcweir 
140cdf0e10cSrcweir     public boolean hasMethod( String aMethodName )
141cdf0e10cSrcweir     {
142cdf0e10cSrcweir         boolean bRet = (aMethodName.equals( aCreateIndexMethodName ) );
143cdf0e10cSrcweir         return bRet;
144cdf0e10cSrcweir     }
145cdf0e10cSrcweir     public boolean hasProperty( String aName ) {
146cdf0e10cSrcweir         return false;
147cdf0e10cSrcweir     }
148cdf0e10cSrcweir 
149cdf0e10cSrcweir 
150cdf0e10cSrcweir 
151cdf0e10cSrcweir     /** This method returns an array of all supported service names.
152cdf0e10cSrcweir      * @return Array of supported service names.
153cdf0e10cSrcweir      */
154cdf0e10cSrcweir     public String[] getSupportedServiceNames()
155cdf0e10cSrcweir     {
156cdf0e10cSrcweir         return getServiceNames();
157cdf0e10cSrcweir     }
158cdf0e10cSrcweir 
159cdf0e10cSrcweir     /** This method is a simple helper function to used in the
160cdf0e10cSrcweir      * static component initialisation functions as well as in
161cdf0e10cSrcweir      * getSupportedServiceNames.
162cdf0e10cSrcweir      */
163cdf0e10cSrcweir     public static String[] getServiceNames()
164cdf0e10cSrcweir     {
165cdf0e10cSrcweir         String[] sSupportedServiceNames = { __serviceName };
166cdf0e10cSrcweir         return sSupportedServiceNames;
167cdf0e10cSrcweir     }
168cdf0e10cSrcweir 
169cdf0e10cSrcweir 
170cdf0e10cSrcweir     /** This method returns true, if the given service will be
171cdf0e10cSrcweir      * supported by the component.
172cdf0e10cSrcweir      * @param sServiceName Service name.
173cdf0e10cSrcweir      * @return True, if the given service name will be supported.
174cdf0e10cSrcweir      */
175cdf0e10cSrcweir     public boolean supportsService( String sServiceName )
176cdf0e10cSrcweir     {
177cdf0e10cSrcweir         return sServiceName.equals( __serviceName );
178cdf0e10cSrcweir     }
179cdf0e10cSrcweir 
180cdf0e10cSrcweir 
181cdf0e10cSrcweir     /** Return the class name of the component.
182cdf0e10cSrcweir      * @return Class name of the component.
183cdf0e10cSrcweir      */
184cdf0e10cSrcweir     public String getImplementationName()
185cdf0e10cSrcweir     {
186cdf0e10cSrcweir         return  HelpIndexer.class.getName();
187cdf0e10cSrcweir     }
188cdf0e10cSrcweir 
189cdf0e10cSrcweir }
190cdf0e10cSrcweir 
191