xref: /AOO41X/main/xmlhelp/source/com/sun/star/help/HelpIndexer.java (revision 1ecadb572e7010ff3b3382ad9bf179dbc6efadbb)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 package com.sun.star.help;
29 
30 import com.sun.star.lib.uno.helper.WeakBase;
31 import com.sun.star.lang.XServiceInfo;
32 import com.sun.star.script.XInvocation;
33 import com.sun.star.beans.XIntrospectionAccess;
34 import com.sun.star.uno.AnyConverter;
35 import com.sun.star.uno.XComponentContext;
36 
37 import java.io.File;
38 import java.io.FileNotFoundException;
39 import java.io.IOException;
40 import java.util.Date;
41 import java.util.zip.ZipOutputStream;
42 
43 /**
44    When this tool is used with long path names on Windows, that is paths which start
45    with \\?\, then the caller must make sure that the path is unique. This is achieved
46    by removing '.' and '..' from the path. Paths which are created by
47    osl_getSystemPathFromFileURL fulfill this requirement. This is necessary because
48    lucene is patched to not use File.getCanonicalPath. See long_path.patch in the lucene
49    module.
50  */
51 public class HelpIndexer extends WeakBase
52     implements XServiceInfo, XInvocation
53 {
54 	static private final String __serviceName =
55         "com.sun.star.help.HelpIndexer";
56 	static private final String aCreateIndexMethodName = "createIndex";
57 
58     static private com.sun.star.help.HelpIndexerTool helpindexer = new com.sun.star.help.HelpIndexerTool();
59 
60     public HelpIndexer()
61 	{
62     }
63 
64 	public HelpIndexer(XComponentContext xCompContext)
65     {
66     }
67 
68     public static void mainImpl( String[] args, boolean bExtensionMode )
69 	{
70         helpindexer.mainImpl( args , bExtensionMode );
71     }
72 
73     public static void createZipFile( File aDirToZip, String aTargetZipFileStr )
74             throws FileNotFoundException, IOException
75 	{
76         helpindexer.createZipFile( aDirToZip , aTargetZipFileStr );
77     }
78 
79     public static void addToZipRecursively( ZipOutputStream zos, File aFile, String aBasePath )
80             throws FileNotFoundException, IOException
81 	{
82         helpindexer.addToZipRecursively( zos , aFile , aBasePath );
83     }
84 
85     static public boolean deleteRecursively( File aFile )
86 	{
87         return helpindexer.deleteRecursively( aFile );
88     }
89 
90 	//===================================================
91 	// XInvocation
92 	public XIntrospectionAccess getIntrospection()
93 	{
94         return  null;
95     }
96 
97 	public Object invoke( String aFunctionName, java.lang.Object[] aParams,
98 		short[][] aOutParamIndex, java.lang.Object[][] aOutParam )
99 			throws	com.sun.star.lang.IllegalArgumentException,
100 					com.sun.star.script.CannotConvertException,
101 					com.sun.star.reflection.InvocationTargetException
102 	{
103 		if(
104               !aFunctionName.equals( aCreateIndexMethodName  ) )
105 		    throw new com.sun.star.lang.IllegalArgumentException();
106 
107 		aOutParamIndex[0] = new short[0];
108 		aOutParam[0] = new Object[0];
109 
110 		int nParamCount = aParams.length;
111 		String aStrs[] = new String[nParamCount];
112 		for( int i = 0 ; i < nParamCount ; i++ )
113 		{
114 			try
115 			{
116 				aStrs[i] = AnyConverter.toString( aParams[i] );
117 			}
118 			catch( IllegalArgumentException e )
119 			{
120 				aStrs[i] = "";
121 			}
122 		}
123 
124 		boolean bExtensionMode = true;
125 		mainImpl( aStrs, bExtensionMode );
126 
127 		return null;
128 	}
129 
130 	public void setValue( String aPropertyName, java.lang.Object aValue )
131 		throws	com.sun.star.beans.UnknownPropertyException,
132 				com.sun.star.script.CannotConvertException,
133 				com.sun.star.reflection.InvocationTargetException
134 	{
135 		throw new com.sun.star.beans.UnknownPropertyException();
136 	}
137 
138 	public Object getValue( String aPropertyName )
139 		throws com.sun.star.beans.UnknownPropertyException
140 	{
141 		throw new com.sun.star.beans.UnknownPropertyException();
142 	}
143 
144 	public boolean hasMethod( String aMethodName )
145 	{
146 		boolean bRet = (aMethodName.equals( aCreateIndexMethodName ) );
147 		return bRet;
148 	}
149 	public boolean hasProperty( String aName ) {
150 		return false;
151 	}
152 
153 
154 
155     /** This method returns an array of all supported service names.
156      * @return Array of supported service names.
157      */
158     public String[] getSupportedServiceNames()
159 	{
160         return getServiceNames();
161     }
162 
163     /** This method is a simple helper function to used in the
164      * static component initialisation functions as well as in
165      * getSupportedServiceNames.
166      */
167     public static String[] getServiceNames()
168 	{
169         String[] sSupportedServiceNames = { __serviceName };
170         return sSupportedServiceNames;
171     }
172 
173 
174     /** This method returns true, if the given service will be
175      * supported by the component.
176      * @param sServiceName Service name.
177      * @return True, if the given service name will be supported.
178      */
179     public boolean supportsService( String sServiceName )
180 	{
181         return sServiceName.equals( __serviceName );
182     }
183 
184 
185     /** Return the class name of the component.
186      * @return Class name of the component.
187      */
188     public String getImplementationName()
189 	{
190         return  HelpIndexer.class.getName();
191     }
192 
193 }
194 
195