⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 extractor.html

📁 a a a a a a a a a a a a a a a a a a a a a a
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<FONT color="green">530</FONT>                        Object[] reference = (Object[]) pending.get(0);<a name="line.530"></a>
<FONT color="green">531</FONT>                        pending.remove(0);<a name="line.531"></a>
<FONT color="green">532</FONT>                        extractByIdOrContext(documentsByIdOrContext, topics, pending,<a name="line.532"></a>
<FONT color="green">533</FONT>                                (String) reference[0], ((Boolean) reference[1])<a name="line.533"></a>
<FONT color="green">534</FONT>                                        .equals(Boolean.FALSE));<a name="line.534"></a>
<FONT color="green">535</FONT>                    } catch (Exception exception) {<a name="line.535"></a>
<FONT color="green">536</FONT>                        exception.printStackTrace();<a name="line.536"></a>
<FONT color="green">537</FONT>                    }<a name="line.537"></a>
<FONT color="green">538</FONT>            } finally {<a name="line.538"></a>
<FONT color="green">539</FONT>                if (toRecycle.size() != 0)<a name="line.539"></a>
<FONT color="green">540</FONT>                    recycle(toRecycle);<a name="line.540"></a>
<FONT color="green">541</FONT>                if (documents != null)<a name="line.541"></a>
<FONT color="green">542</FONT>                    recycle(documents);<a name="line.542"></a>
<FONT color="green">543</FONT>            }<a name="line.543"></a>
<FONT color="green">544</FONT>        }<a name="line.544"></a>
<FONT color="green">545</FONT>    <a name="line.545"></a>
<FONT color="green">546</FONT>        private void extract(String path) throws NotesException,<a name="line.546"></a>
<FONT color="green">547</FONT>                TransformerConfigurationException, ParserConfigurationException {<a name="line.547"></a>
<FONT color="green">548</FONT>            // open the root element for all topics and references: &lt;documentation&gt;<a name="line.548"></a>
<FONT color="green">549</FONT>            System.out.println("&lt;documentation&gt;");<a name="line.549"></a>
<FONT color="green">550</FONT>            // open the list of all exposed entities: &lt;topics&gt;<a name="line.550"></a>
<FONT color="green">551</FONT>            System.out.println("&lt;topics&gt;");<a name="line.551"></a>
<FONT color="green">552</FONT>            System.out.println("");<a name="line.552"></a>
<FONT color="green">553</FONT>            // initialize Lotus Notes and open the database with help<a name="line.553"></a>
<FONT color="green">554</FONT>            NotesThread.sinitThread();<a name="line.554"></a>
<FONT color="green">555</FONT>            Database database = null;<a name="line.555"></a>
<FONT color="green">556</FONT>            HashMap topics = new HashMap();<a name="line.556"></a>
<FONT color="green">557</FONT>            try {<a name="line.557"></a>
<FONT color="green">558</FONT>                session = NotesFactory.createSession();<a name="line.558"></a>
<FONT color="green">559</FONT>                exporter = createDxlExporter();<a name="line.559"></a>
<FONT color="green">560</FONT>                extractTransformer = createTrasformer(extractXsl);<a name="line.560"></a>
<FONT color="green">561</FONT>                cleanTransformer = createTrasformer(cleanXsl);<a name="line.561"></a>
<FONT color="green">562</FONT>                filterTransformer = createTrasformer(filterXsl);<a name="line.562"></a>
<FONT color="green">563</FONT>                builder = createBuilder();<a name="line.563"></a>
<FONT color="green">564</FONT>                database = session.getDatabase("", path, true);<a name="line.564"></a>
<FONT color="green">565</FONT>                if (!database.isOpen() &amp;&amp; !database.open())<a name="line.565"></a>
<FONT color="green">566</FONT>                    throw new NotesException(NotesError.NOTES_ERR_DATABASE_MISSING,<a name="line.566"></a>
<FONT color="green">567</FONT>                            "The database cannot be opened.");<a name="line.567"></a>
<FONT color="green">568</FONT>                extract(database, topics);<a name="line.568"></a>
<FONT color="green">569</FONT>            } finally {<a name="line.569"></a>
<FONT color="green">570</FONT>                if (database != null)<a name="line.570"></a>
<FONT color="green">571</FONT>                    recycle(database);<a name="line.571"></a>
<FONT color="green">572</FONT>                if (exporter != null)<a name="line.572"></a>
<FONT color="green">573</FONT>                    recycle(exporter);<a name="line.573"></a>
<FONT color="green">574</FONT>                if (session != null)<a name="line.574"></a>
<FONT color="green">575</FONT>                    recycle(session);<a name="line.575"></a>
<FONT color="green">576</FONT>                NotesThread.stermThread();<a name="line.576"></a>
<FONT color="green">577</FONT>    <a name="line.577"></a>
<FONT color="green">578</FONT>                // close the list of all exposed topics: &lt;/topics&gt;<a name="line.578"></a>
<FONT color="green">579</FONT>                System.out.println("&lt;/topics&gt;");<a name="line.579"></a>
<FONT color="green">580</FONT>    <a name="line.580"></a>
<FONT color="green">581</FONT>                // open the list of references: &lt;references&gt;<a name="line.581"></a>
<FONT color="green">582</FONT>                System.out.println("&lt;references&gt;");<a name="line.582"></a>
<FONT color="green">583</FONT>                Set entries = topics.entrySet();<a name="line.583"></a>
<FONT color="green">584</FONT>                Iterator iterator = entries.iterator();<a name="line.584"></a>
<FONT color="green">585</FONT>                while (iterator.hasNext()) {<a name="line.585"></a>
<FONT color="green">586</FONT>                    Entry entry = (Entry) iterator.next();<a name="line.586"></a>
<FONT color="green">587</FONT>                    Topic topic = (Topic) entry.getValue();<a name="line.587"></a>
<FONT color="green">588</FONT>                    System.out.println("&lt;reference id=\"" + topic.id + "\" type=\""<a name="line.588"></a>
<FONT color="green">589</FONT>                            + topic.type + "\" name=\"" + topic.getFullName() + "\"/&gt;");<a name="line.589"></a>
<FONT color="green">590</FONT>                }<a name="line.590"></a>
<FONT color="green">591</FONT>                // close the list of references: &lt;/references&gt;<a name="line.591"></a>
<FONT color="green">592</FONT>                System.out.println("&lt;/references&gt;");<a name="line.592"></a>
<FONT color="green">593</FONT>    <a name="line.593"></a>
<FONT color="green">594</FONT>                // close the root element for all entities and references: &lt;/documentation&gt;<a name="line.594"></a>
<FONT color="green">595</FONT>                System.out.println("&lt;/documentation&gt;");<a name="line.595"></a>
<FONT color="green">596</FONT>            }<a name="line.596"></a>
<FONT color="green">597</FONT>        }<a name="line.597"></a>
<FONT color="green">598</FONT>    <a name="line.598"></a>
<FONT color="green">599</FONT>        private DxlExporter createDxlExporter() throws NotesException {<a name="line.599"></a>
<FONT color="green">600</FONT>            DxlExporter exporter = session.createDxlExporter();<a name="line.600"></a>
<FONT color="green">601</FONT>            exporter.setExitOnFirstFatalError(true);<a name="line.601"></a>
<FONT color="green">602</FONT>            exporter.setDoctypeSYSTEM(dtd);<a name="line.602"></a>
<FONT color="green">603</FONT>            return exporter;<a name="line.603"></a>
<FONT color="green">604</FONT>        }<a name="line.604"></a>
<FONT color="green">605</FONT>    <a name="line.605"></a>
<FONT color="green">606</FONT>        private Transformer createTrasformer(String file)<a name="line.606"></a>
<FONT color="green">607</FONT>                throws TransformerConfigurationException {<a name="line.607"></a>
<FONT color="green">608</FONT>            TransformerFactory factory = TransformerFactory.newInstance();<a name="line.608"></a>
<FONT color="green">609</FONT>            // factory.setFeature("http://xml.org/sax/features/validation",true);<a name="line.609"></a>
<FONT color="green">610</FONT>            return factory.newTransformer(new StreamSource(new File(file)));<a name="line.610"></a>
<FONT color="green">611</FONT>        }<a name="line.611"></a>
<FONT color="green">612</FONT>    <a name="line.612"></a>
<FONT color="green">613</FONT>        private DocumentBuilder createBuilder() throws ParserConfigurationException {<a name="line.613"></a>
<FONT color="green">614</FONT>            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();<a name="line.614"></a>
<FONT color="green">615</FONT>            // factory.setValidating(true);<a name="line.615"></a>
<FONT color="green">616</FONT>            return factory.newDocumentBuilder();<a name="line.616"></a>
<FONT color="green">617</FONT>        }<a name="line.617"></a>
<FONT color="green">618</FONT>    <a name="line.618"></a>
<FONT color="green">619</FONT>        private void recycle(Base object) {<a name="line.619"></a>
<FONT color="green">620</FONT>            try {<a name="line.620"></a>
<FONT color="green">621</FONT>                object.recycle();<a name="line.621"></a>
<FONT color="green">622</FONT>            } catch (NotesException exception) {<a name="line.622"></a>
<FONT color="green">623</FONT>            }<a name="line.623"></a>
<FONT color="green">624</FONT>        }<a name="line.624"></a>
<FONT color="green">625</FONT>    <a name="line.625"></a>
<FONT color="green">626</FONT>        private void recycle(Vector objects) {<a name="line.626"></a>
<FONT color="green">627</FONT>            try {<a name="line.627"></a>
<FONT color="green">628</FONT>                session.recycle(objects);<a name="line.628"></a>
<FONT color="green">629</FONT>            } catch (NotesException exception) {<a name="line.629"></a>
<FONT color="green">630</FONT>            }<a name="line.630"></a>
<FONT color="green">631</FONT>        }<a name="line.631"></a>
<FONT color="green">632</FONT>    <a name="line.632"></a>
<FONT color="green">633</FONT>        private static String generateName(String context) {<a name="line.633"></a>
<FONT color="green">634</FONT>            String name = context.toLowerCase();<a name="line.634"></a>
<FONT color="green">635</FONT>            if (name.startsWith("h_"))<a name="line.635"></a>
<FONT color="green">636</FONT>                name = name.substring(2, name.length());<a name="line.636"></a>
<FONT color="green">637</FONT>            if (name.endsWith("_java"))<a name="line.637"></a>
<FONT color="green">638</FONT>                name = name.substring(0, name.length() - 5);<a name="line.638"></a>
<FONT color="green">639</FONT>            return name;<a name="line.639"></a>
<FONT color="green">640</FONT>        }<a name="line.640"></a>
<FONT color="green">641</FONT>    <a name="line.641"></a>
<FONT color="green">642</FONT>        private static String getStringValue(Document document, String name)<a name="line.642"></a>
<FONT color="green">643</FONT>                throws NotesException {<a name="line.643"></a>
<FONT color="green">644</FONT>            String value = document.getItemValueString(name);<a name="line.644"></a>
<FONT color="green">645</FONT>            return value != null ? value.trim() : "";<a name="line.645"></a>
<FONT color="green">646</FONT>        }<a name="line.646"></a>
<FONT color="green">647</FONT>    <a name="line.647"></a>
<FONT color="green">648</FONT>        private static int countOf(String text, char character) {<a name="line.648"></a>
<FONT color="green">649</FONT>            int count = 0;<a name="line.649"></a>
<FONT color="green">650</FONT>            for (int currentPosition = 0, lastPosition = 0; (currentPosition = text.indexOf(<a name="line.650"></a>
<FONT color="green">651</FONT>                    character, lastPosition)) &gt;= 0; lastPosition = currentPosition + 1)<a name="line.651"></a>
<FONT color="green">652</FONT>                ++count;<a name="line.652"></a>
<FONT color="green">653</FONT>            return count;<a name="line.653"></a>
<FONT color="green">654</FONT>        }<a name="line.654"></a>
<FONT color="green">655</FONT>    <a name="line.655"></a>
<FONT color="green">656</FONT>        private static String getFirstWord(String text) {<a name="line.656"></a>
<FONT color="green">657</FONT>            int space = text.indexOf(' ');<a name="line.657"></a>
<FONT color="green">658</FONT>            return space &lt; 0 ? text : text.substring(0, space);<a name="line.658"></a>
<FONT color="green">659</FONT>        }<a name="line.659"></a>
<FONT color="green">660</FONT>    <a name="line.660"></a>
<FONT color="green">661</FONT>        private static String getSecondWord(String text) {<a name="line.661"></a>
<FONT color="green">662</FONT>    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -