diff options
author | Oliver Bolte <obo@openoffice.org> | 2008-03-25 14:09:56 +0000 |
---|---|---|
committer | Oliver Bolte <obo@openoffice.org> | 2008-03-25 14:09:56 +0000 |
commit | d9b65dc3e392bf12eba106e3792e5e25051df837 (patch) | |
tree | fc7350c63bf4b8cdb0a8a323e292ffe83f78d15d /xmlhelp | |
parent | 71ccce6c74e6e9124b39a2b1dbed4b51ca40cca7 (diff) |
INTEGRATION: CWS ucbfixes06 (1.18.50); FILE REMOVED
2008/01/21 15:30:19 kso 1.18.50.1: #i85425# - cleanup of CVS module.
Diffstat (limited to 'xmlhelp')
-rw-r--r-- | xmlhelp/source/com/sun/star/help/HelpIndexer.java | 686 |
1 files changed, 0 insertions, 686 deletions
diff --git a/xmlhelp/source/com/sun/star/help/HelpIndexer.java b/xmlhelp/source/com/sun/star/help/HelpIndexer.java deleted file mode 100644 index 6e8b9de17494..000000000000 --- a/xmlhelp/source/com/sun/star/help/HelpIndexer.java +++ /dev/null @@ -1,686 +0,0 @@ -/************************************************************************* - * - * OpenOffice.org - a multi-platform office productivity suite - * - * $RCSfile: HelpIndexer.java,v $ - * - * $Revision: 1.18 $ - * - * last change: $Author: vg $ $Date: 2007-01-15 12:37:20 $ - * - * The Contents of this file are made available subject to - * the terms of GNU Lesser General Public License Version 2.1. - * - * - * GNU Lesser General Public License Version 2.1 - * ============================================= - * Copyright 2005 by Sun Microsystems, Inc. - * 901 San Antonio Road, Palo Alto, CA 94303, USA - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License version 2.1, as published by the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - * - ************************************************************************/ - -/************************************************************************** - TODO - ************************************************************************** - - *************************************************************************/ - -package com.sun.star.help; - -import java.io.*; -import java.net.URL; -import java.util.*; - -import org.w3c.dom.*; -import org.xml.sax.*; -import javax.xml.parsers.*; -import com.jclark.xsl.sax.*; - -import com.sun.xmlsearch.util.*; -import com.sun.xmlsearch.xml.indexer.*; - -import com.sleepycat.db.*; - -public class HelpIndexer { - - private HelpURLStreamHandlerFactory _urlHandler = null; - private String _language = null, _module = null, _system = null; - - public HelpIndexer( - HelpURLStreamHandlerFactory urlHandler, - String language, - String module, - String system) { - _urlHandler = urlHandler; - _system = system; - _language = language; - _module = module; - } - - private final class TagInfo { - String _tag, _id; - - public TagInfo(String id, String tag) { - _tag = tag; - _id = id; - } - - public String get_tag() { - return _tag; - } - - public String get_id() { - return _id; - } - } - - private final class DocInfo { - private String _url = null, _id = null; - - private ArrayList _helptags = new ArrayList(); - - public void append(String id, String tag) { - _helptags.add(new TagInfo(id, tag)); - } - - public String getURL() { - return _url; - } - - public void setURL(String url) { - _url = url; - } - - public void setId(String id) { - _id = id; - } - - public String getId() { - return _id; - } - - public ArrayList getAppendices() { - return _helptags; - } - } - - Hashtable _hashDocInfo = new Hashtable(); - Hashtable _hashHelptext = new Hashtable(); - - private void schnitzel() { - // Determine the location of the database - String installDirectory = HelpDatabases.getInstallDirectory(); - Db table = null; - - try { - table = new Db(null, 0); - table.set_error_stream(System.err); - table.set_errpfx("indexing"); - - // Create indexDirectory, if not existent - String indexDirectory = - installDirectory - + _language - + File.separator - + _module - + ".idx"; - File indexDir = new File(indexDirectory); - if (indexDir.exists() && indexDir.isFile()) - indexDir.delete(); - - if (!indexDir.exists()) - indexDir.mkdir(); - - indexDir = null; - - // Initialize the indexBuilder - XmlIndexBuilder builder = new XmlIndexBuilder(indexDirectory); - - String[] translations = { "vnd.sun.star.help://", "#HLP#" }; - PrefixTranslator translator = - PrefixTranslator.makePrefixTranslator(translations); - builder.setPrefixTranslator(translator); - - builder.clearIndex(); // Build index from scratch - builder.setTransformLocation( - installDirectory + "..\\StyleSheets\\Indexing\\"); - builder.init("index"); - - // Determine and read the database - String fileName = - installDirectory + _language + File.separator + _module + ".db"; - - table.open(null,fileName, null, Db.DB_BTREE, Db.DB_RDONLY, 0644); - Dbc cursor = table.cursor(null, 0); - StringDbt key = new StringDbt(); - StringDbt data = new StringDbt(); - - boolean first = true; - // Initially the cursor must allocate the necessary memory - key.set_flags(Db.DB_DBT_MALLOC); - data.set_flags(Db.DB_DBT_MALLOC); - while (Db.DB_NOTFOUND != cursor.get(key, data, Db.DB_NEXT)) { - try { - String keyStr = key.getString(); - String dataStr = data.getFile(); - String tagStr = data.getHash(); - - DocInfo info = (DocInfo) _hashDocInfo.get(dataStr); - - if (info == null) { - info = new DocInfo(); - _hashDocInfo.put(dataStr, info); - } - - if (!tagStr.equals("")) - info.append(keyStr, tagStr); - else { - String url = - "vnd.sun.star.help://" - + _module - + "/" - + keyStr - + "?Language=" - + _language; - info.setURL(url); - info.setId(keyStr); - } - } catch (Exception e) { - } - if (first) { - key.set_flags(Db.DB_DBT_REALLOC); - data.set_flags(Db.DB_DBT_REALLOC); - first = false; - } - } - cursor.close(); - table.close(0); - - System.out.println("Indexing..."); - Enumeration enumer = _hashDocInfo.elements(); - int cut = 0; - while (enumer.hasMoreElements() && cut < 100000000) { - try { - DocInfo info = (DocInfo) enumer.nextElement(); - String url = info.getURL(); - if (url == null) { - System.out.println( - "<----------------------------------->"); - System.out.println( - "big error: found helptext without URL"); - System.out.println( - "<----------------------------------->"); - continue; - } - cut++; - - HelpURLStreamHandlerFactory.setMode(null); - byte[] embResolved = getSourceDocument(url); - // InputSource in = new InputSource( new ByteArrayInputStream( embResolved ) ); - - ByteArrayInputStream inbyte = - new ByteArrayInputStream(embResolved); - InputStreamReader inread; - try { - inread = new InputStreamReader(inbyte, "UTF8"); - } catch (UnsupportedEncodingException e) { - inread = new InputStreamReader(inbyte); - } - InputSource in = new InputSource(inread); - - in.setEncoding("UTF8"); - Document docResolved = null; - try { - DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance(); - dFactory.setValidating(false); - DocumentBuilder dBuilder = dFactory.newDocumentBuilder(); - docResolved = dBuilder.parse(in); - } catch (Exception e) { - if (docResolved == null) - System.err.println("Nullpointer"); - - System.err.println(e.getMessage()); - } - - String id = info.getId(); - if (id == null) - System.out.println("Found tag without valid id"); - else - addKeywords(docResolved, info.getId()); - - Object[] attrList = info.getAppendices().toArray(); - for (int i = 0; i < attrList.length; ++i) { - TagInfo tag = (TagInfo) attrList[i]; - Node node = extractHelptext(docResolved, tag.get_tag()); - if (node != null) { - String text = dump(node); - _hashHelptext.put(tag.get_id(), text); - } - } - HelpURLStreamHandlerFactory.setMode(embResolved); - - int idx = url.indexOf('?'); - if (idx != -1) - url = url.substring(0, idx); - System.out.println(url); - builder.indexDocument(new URL(url), ""); - } catch (Exception e) { - System.err.println(e.getMessage()); - } - } - - try { - dumpHelptext(); - _keywords.dump(); - builder.close(); - } catch (Exception e) { - System.err.println(e.getMessage()); - } - } catch (DbRunRecoveryException e) { - System.out.println("Not able to create cursor: " + e.getMessage()); - System.exit(1); - } catch (DbException e) { - System.out.println("Error initializing database"); - System.exit(1); - } catch (FileNotFoundException fnfe) { - System.err.println("HelpAccess: " + fnfe.getMessage()); - System.exit(1); - } catch (java.lang.Exception e) { - System.out.println("any other exception" + e.getMessage()); - } - } - - public final class NodeIterator { - private final class StackElement { - public boolean _isDone; - public Node _node; - - StackElement(Node node) { - _isDone = false; - _node = node; - } - } - - private Stack stack = new Stack(); - - public NodeIterator(Node node) { - stack.push(new StackElement(node)); - } - - void change() { - ((StackElement) (stack.peek()))._isDone = true; - NodeList top = - ((StackElement) (stack.peek()))._node.getChildNodes(); - for (int i = top.getLength() - 1; i >= 0; --i) - stack.push(new StackElement(top.item(i))); - } - - public Node next() { - if (stack.empty()) - return null; - while (!((StackElement) (stack.peek()))._isDone) - change(); - return ((StackElement) stack.pop())._node; - } - } - - /** - * Given a dom of the document, the next Help:Helptext following Help:HelpID value="tag" is extracted - */ - - private Node extractHelptext(Node node, String tag) { - boolean found = false; - Node test; - NodeIterator it = new NodeIterator(node); - while ((test = it.next()) != null) { - if (!found - && test.getNodeName().equals("help:help-id") - && ((Element) test).getAttribute("value").equals(tag)) - found = true; - if (found && test.getNodeName().equals("help:help-text")) - return test; - } - return null; - } - - public final class Keywords { - private Hashtable _hash = new Hashtable(); - - class Data { - int pos = 0; - String[] _idList = new String[5]; - - void append(String id) { - if (pos == _idList.length) { - String[] buff = _idList; - _idList = new String[pos + 5]; - for (int i = 0; i < buff.length; ++i) - _idList[i] = buff[i]; - buff = null; - } - _idList[pos++] = id; - } - - int getLength() { - return pos; - } - - String getString() { - String ret = new String(); - for (int i = 0; i < pos; ++i) { - ret += (_idList[i] + ";"); - } - return ret; - } - } // end class data - - public void insert(String key, String id) { - Data data = (Data) _hash.get(key); - if (data == null) { - data = new Data(); - _hash.put(key, data); - } - data.append(id); - } - - void dump() { - Enumeration enumer = _hash.keys(); - int j = 0; - String[] list = new String[_hash.size()]; - while (enumer.hasMoreElements()) { - list[j++] = (String) enumer.nextElement(); - } - - Db table; - try { - table = new Db(null, 0); - - String fileName = - HelpDatabases.getInstallDirectory() - + _language - + File.separator - + _module - + ".key"; - - table.open(null,fileName, null, Db.DB_BTREE, Db.DB_CREATE, 0644); - - for (int i = 0; i < list.length; ++i) { - Data data = (Data) _hash.get(list[i]); - StringDbt key = new StringDbt(list[i]); - StringDbt value = new StringDbt(data.getString()); - table.put(null, key, value, 0); - } - table.close(0); - } catch (Exception e) { - System.out.println("error writing keydata"); - } - } - - } - - void dumpHelptext() { - Enumeration enumer = _hashHelptext.keys(); - int j = 0; - String[] list = new String[_hashHelptext.size()]; - while (enumer.hasMoreElements()) { - list[j++] = (String) enumer.nextElement(); - } - - Db table; - try { - table = new Db(null, 0); - - String fileName = - HelpDatabases.getInstallDirectory() - + _language - + File.separator - + _module - + ".ht"; - - table.open(null,fileName, null, Db.DB_BTREE, Db.DB_CREATE, 0644); - - for (int i = 0; i < list.length; ++i) { - String data = (String) _hashHelptext.get(list[i]); - StringDbt key = new StringDbt(list[i]); - StringDbt value = new StringDbt(data); - table.put(null, key, value, 0); - } - table.close(0); - } catch (Exception e) { - System.out.println("error writing keydata"); - } - } - - Keywords _keywords = new Keywords(); - - private void addKeywords(Node node, String id) { - Node test; - NodeIterator it = new NodeIterator(node); - while ((test = it.next()) != null) { - if (test.getNodeName().equals("help:key-word")) { - Element element = (Element) test; - - String isEmbedded = element.getAttribute("embedded"); - - if (isEmbedded != null && isEmbedded.equals("false")) { - String keyword = element.getAttribute("value"); - String getJump = element.getAttribute("tag"); - - if (!keyword.equals("") && !id.equals("")) - _keywords.insert(keyword, id + "#" + getJump); - } - } - } - } - - /** - * Returns a textual representation of - * the node - */ - - private String dump(Node node) { - String app = new String(); - if (node.hasChildNodes()) { - NodeList list = node.getChildNodes(); - for (int i = 0; i < list.getLength(); ++i) - app += dump(list.item(i)); - } - if (node.getNodeType() == Node.ELEMENT_NODE) { - /* - String start = "<" + node.getNodeName(); - NamedNodeMap attr = node.getAttributes(); - for( int j = 0; j < attr.getLength(); ++j ) - { - start += ( " " + ((Attr)attr.item(j)).getName()+"=\"" + ((Attr)attr.item(j)).getValue() + "\""); - } - start += ">"; - String end = "</" + node.getNodeName() + ">"; - - return start + app + end; - */ - } else if (node.getNodeType() == Node.TEXT_NODE) { - return ((Text) node).toString(); - } - return app; - } - - // This is a configurable class, which capsulates the parser initialization stuff and all this things - - public static final class ParseStuff { - private XSLProcessor _processor; - private OutputMethodHandlerImpl _output; - - private ParseStuff() { - _processor = new XSLProcessorImpl(); - // Determine the parser - SAXParserFactory spf = SAXParserFactory.newInstance(); - spf.setValidating(false); - try { - _processor.setParser(spf.newSAXParser().getParser()); - } catch (java.lang.Exception e) { - System.err.println( - "<!-- NO HELP AVAILABLE: no parser found -->"); - System.exit(1); - } - - // Determine the OutputMethodHandler - _output = new OutputMethodHandlerImpl(_processor); - _processor.setOutputMethodHandler(_output); - } - - // Loading from a URL - public ParseStuff(URL url) { - this(); - try { - _processor.loadStylesheet( - new InputSource(url.toExternalForm())); - } catch (SAXException e) { - System.err.println("<!-- Syntactic error in stylesheet -->"); - System.err.println(e.getMessage()); - System.exit(1); - } catch (java.io.IOException e) { - System.err.println("<!-- Style sheet not found -->"); - System.err.println(e.getMessage()); - System.exit(1); - } - // TODO System.out.println( "Using stylesheet: " + url.toExternalForm() ); - } - - // Loading from a file - public ParseStuff(String styleSheet) { - this(); - try { - _processor.loadStylesheet( - new InputSource(new FileInputStream(styleSheet))); - } catch (SAXException e) { - System.err.println("<!-- Syntactic error in stylesheet -->"); - System.exit(1); - } catch (java.io.IOException e) { - System.err.println("<!-- Style sheet not found: -->"); - System.err.println(e.getMessage()); - System.exit(1); - } - // System.out.println( "Using stylesheet: " + styleSheet ); - } - - public byte[] parse(String url) { - InputSource _in = new InputSource(url); - _in.setEncoding("UTF-8"); - - HelpOutputStream _out = new HelpOutputStream(); - try { - // OutputStreamDestination _dest = - // new OutputStreamDestination( _out ); - HelpProvider.ProviderDestination _dest = - new HelpProvider.ProviderDestination(_out, "UTF-8"); - synchronized (this) { - _output.setDestination(_dest); - _processor.parse(_in); - _out.flush(); - } - } catch ( SAXParseException e ){ - e.printStackTrace(); - System.err.println("url: " + url); - System.err.println(e.getMessage()); - System.err.println("Line: "+e.getLineNumber()+" Column: "+e.getColumnNumber()+" public ID: "+e.getPublicId()+" System ID: "+e.getSystemId() ); - System.exit(1); - - } - catch (Exception e) { - e.printStackTrace(); - System.err.println("url: " + url); - System.err.println(e.getMessage()); - System.exit(1); - } - - return _out.getBigBuffer(); - } - - public void setParameter(String key, Object value) { - _processor.setParameter(key, value); - } - } // end class ParseStuff - - /** - * Returns the embedding resolved document - */ - - ParseStuff _stuff = null; - - byte[] getSourceDocument(String url) { - // Initialize - if (_stuff == null) { - String styleSheet = - HelpDatabases.getInstallDirectory() - + "..\\StyleSheets\\Indexing\\ResEmb.xsl"; - _stuff = new ParseStuff(styleSheet); - - // Setting the parameters - _stuff.setParameter("Language", _language); - _stuff.setParameter("Database", _module); - } - - // and parse - return _stuff.parse(url); - } - - // Now has to be settled up - public static void main(String[] args) throws Exception { - System.setProperty("XMLSEARCH", HelpDatabases.getInstallDirectory()); - if (args.length != 6) { - System.out.println( - "Usage example: main -language de -module swriter -system WIN"); - System.exit(1); - } - - String language = null, module = null, system = null; - - for (int i = 0; i < 5; i += 2) { - if (args[i].trim().equals("-language")) - language = args[i + 1]; - else if (args[i].trim().equals("-module")) - module = args[i + 1]; - else if (args[i].trim().equals("-system")) - system = args[i + 1]; - } - - if (language == null || module == null || system == null) { - System.out.println( - "Usage example: main -language de -module swriter -system WIN"); - System.exit(1); - } else { - System.out.println(" Configuring for \"system\" = " + system); - System.out.println(" \"module\" = " + module); - System.out.println(" \"language\" = " + language); - } - - try { - String urlmode = HelpDatabases.getURLMode(); - HelpURLStreamHandlerFactory urlHandler = - new HelpURLStreamHandlerFactory(urlmode); - URL.setURLStreamHandlerFactory(urlHandler); - - HelpIndexer helpIndexer = - new HelpIndexer(urlHandler, language, module, system); - - // helpIndexer.indexDatabase(); - helpIndexer.schnitzel(); - } catch (Exception e) { - e.printStackTrace(); - } - } -} |