From: Jean-Marc V. <jm...@us...> - 2004-07-10 13:57:31
|
Update of /cvsroot/exist/eXist-1.0/src/org/exist/collections In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26941/src/org/exist/collections Modified Files: Collection.java Log Message: Refactoring: extract method: private XMLReader prepareSAXParser(DBBroker broker, String name, DocumentImpl oldDoc, Trigger trigger, Indexer indexer) Index: Collection.java =================================================================== RCS file: /cvsroot/exist/eXist-1.0/src/org/exist/collections/Collection.java,v retrieving revision 1.37 retrieving revision 1.38 diff -C2 -d -r1.37 -r1.38 *** Collection.java 10 Jul 2004 11:01:09 -0000 1.37 --- Collection.java 10 Jul 2004 13:57:15 -0000 1.38 *************** *** 712,716 **** DocumentImpl document, oldDoc = null; XMLReader reader; ! InputSource source; try { oldDoc = checkPermissions(broker, name); --- 712,717 ---- DocumentImpl document, oldDoc = null; XMLReader reader; ! InputSource source = new InputSource(new StringReader(data)); ! try { oldDoc = checkPermissions(broker, name); *************** *** 719,765 **** manageDocumentInformation(broker, name, oldDoc, document ); - // setup triggers Trigger trigger = setupTriggers(broker, name, oldDoc); Indexer indexer = new Indexer(broker); indexer.setDocument(document); ! // add observers to the indexer ! Observer observer; ! broker.deleteObservers(); ! if (observers != null) { ! for (Iterator i = observers.iterator(); i.hasNext(); ) { ! observer = (Observer) i.next(); ! indexer.addObserver(observer); ! broker.addObserver(observer); ! } ! } ! // prepare the SAX parser ! indexer.setValidating(true); ! reader = getReader(broker); ! reader.setEntityResolver(this); ! ! if (trigger != null && triggersEnabled) { ! reader.setContentHandler(trigger.getInputHandler()); ! reader.setProperty( ! "http://xml.org/sax/properties/lexical-handler", ! trigger.getLexicalInputHandler()); ! trigger.setOutputHandler(indexer); ! trigger.setValidating(true); ! // prepare the trigger ! trigger.prepare(oldDoc == null ! ? Trigger.STORE_DOCUMENT_EVENT ! : Trigger.UPDATE_DOCUMENT_EVENT, broker, name, oldDoc); ! } else { ! reader.setContentHandler(indexer); ! reader ! .setProperty( ! "http://xml.org/sax/properties/lexical-handler", ! indexer); ! } ! reader.setErrorHandler(indexer); // first pass: parse the document to determine tree structure LOG.debug("validating document " + name); - source = new InputSource(new StringReader(data)); try { reader.parse(source); --- 720,732 ---- manageDocumentInformation(broker, name, oldDoc, document ); Trigger trigger = setupTriggers(broker, name, oldDoc); Indexer indexer = new Indexer(broker); indexer.setDocument(document); ! addObserversToIndexer(broker, indexer); ! reader = prepareSAXParser(broker, name, oldDoc, trigger, indexer); // first pass: parse the document to determine tree structure LOG.debug("validating document " + name); try { reader.parse(source); *************** *** 803,806 **** --- 770,774 ---- lock.release(); } + // reset the input source source = new InputSource(new StringReader(data)); *************** *** 837,840 **** --- 805,866 ---- } + /** prepare the SAX parser + * @param broker + * @param name + * @param oldDoc + * @param trigger + * @param indexer + * @return + * @throws EXistException + * @throws SAXException + * @throws SAXNotRecognizedException + * @throws SAXNotSupportedException + * @throws TriggerException + */ + private XMLReader prepareSAXParser(DBBroker broker, String name, DocumentImpl oldDoc, Trigger trigger, Indexer indexer) throws EXistException, SAXException, SAXNotRecognizedException, SAXNotSupportedException, TriggerException { + XMLReader reader; + indexer.setValidating(true); + reader = getReader(broker); + reader.setEntityResolver(this); + + if (trigger != null && triggersEnabled) { + reader.setContentHandler(trigger.getInputHandler()); + reader.setProperty( + "http://xml.org/sax/properties/lexical-handler", + trigger.getLexicalInputHandler()); + trigger.setOutputHandler(indexer); + trigger.setLexicalOutputHandler(indexer); + trigger.setValidating(true); + // prepare the trigger + trigger.prepare(oldDoc == null + ? Trigger.STORE_DOCUMENT_EVENT + : Trigger.UPDATE_DOCUMENT_EVENT, broker, name, oldDoc); + } else { + reader.setContentHandler(indexer); + reader + .setProperty( + "http://xml.org/sax/properties/lexical-handler", + indexer); + } + reader.setErrorHandler(indexer); + return reader; + } + + /** add observers to the indexer + * @param broker + * @param indexer + */ + private void addObserversToIndexer(DBBroker broker, Indexer indexer) { + Observer observer; + broker.deleteObservers(); + if (observers != null) { + for (Iterator i = observers.iterator(); i.hasNext(); ) { + observer = (Observer) i.next(); + indexer.addObserver(observer); + broker.addObserver(observer); + } + } + } + /** If an old document exists, keep information about the document. * @param broker *************** *** 921,964 **** manageDocumentInformation(broker, name, oldDoc, document ); - // setup triggers Trigger trigger = setupTriggers(broker, name, oldDoc); ! Indexer parser = new Indexer(broker); ! parser.setDocument(document); ! // add observers to the indexer ! Observer observer; ! broker.deleteObservers(); ! if (observers != null) { ! for (Iterator i = observers.iterator(); i.hasNext(); ) { ! observer = (Observer) i.next(); ! parser.addObserver(observer); ! broker.addObserver(observer); ! } ! } ! // prepare the SAX parser ! parser.setValidating(true); ! reader = getReader(broker); ! reader.setEntityResolver(this); ! if (trigger != null && triggersEnabled) { ! reader.setContentHandler(trigger.getInputHandler()); ! reader.setProperty( ! "http://xml.org/sax/properties/lexical-handler", ! trigger.getLexicalInputHandler()); ! trigger.setOutputHandler(parser); ! trigger.setLexicalOutputHandler(parser); ! trigger.setValidating(true); ! // prepare the trigger ! trigger.prepare(oldDoc == null ! ? Trigger.STORE_DOCUMENT_EVENT ! : Trigger.UPDATE_DOCUMENT_EVENT, broker, name, oldDoc); ! } else { ! reader.setContentHandler(parser); ! reader ! .setProperty( ! "http://xml.org/sax/properties/lexical-handler", ! parser); ! } ! reader.setErrorHandler(parser); // first pass: parse the document to determine tree structure --- 947,957 ---- manageDocumentInformation(broker, name, oldDoc, document ); Trigger trigger = setupTriggers(broker, name, oldDoc); ! Indexer indexer = new Indexer(broker); ! indexer.setDocument(document); ! addObserversToIndexer(broker, indexer); ! reader = prepareSAXParser(broker, name, oldDoc, trigger, indexer); // first pass: parse the document to determine tree structure *************** *** 979,983 **** broker.removeDocument(getName() + '/' + oldDoc.getFileName(), false); oldDoc.copyOf(document); ! parser.setDocumentObject(oldDoc); document = oldDoc; } else { --- 972,976 ---- broker.removeDocument(getName() + '/' + oldDoc.getFileName(), false); oldDoc.copyOf(document); ! indexer.setDocumentObject(oldDoc); document = oldDoc; } else { *************** *** 986,990 **** } ! parser.setValidating(false); if (trigger != null) trigger.setValidating(false); --- 979,983 ---- } ! indexer.setValidating(false); if (trigger != null) trigger.setValidating(false); *************** *** 1058,1062 **** boolean privileged) throws EXistException, LockException, PermissionDeniedException, TriggerException, SAXException { ! Indexer parser = new Indexer(broker); if (broker.isReadOnly()) throw new PermissionDeniedException("Database is read-only"); --- 1051,1055 ---- boolean privileged) throws EXistException, LockException, PermissionDeniedException, TriggerException, SAXException { ! Indexer indexer = new Indexer(broker); if (broker.isReadOnly()) throw new PermissionDeniedException("Database is read-only"); *************** *** 1071,1092 **** Trigger trigger = setupTriggers(broker, name, oldDoc); ! parser.setDocument(document); ! // add observers to the indexer ! Observer observer; ! broker.deleteObservers(); ! if (observers != null) { ! for (Iterator i = observers.iterator(); i.hasNext(); ) { ! observer = (Observer) i.next(); ! parser.addObserver(observer); ! broker.addObserver(observer); ! } ! } ! parser.setValidating(true); streamer = new DOMStreamer(); if (trigger != null && triggersEnabled) { streamer.setContentHandler(trigger.getInputHandler()); streamer.setLexicalHandler(trigger.getLexicalInputHandler()); ! trigger.setOutputHandler(parser); trigger.setValidating(true); // prepare the trigger --- 1064,1076 ---- Trigger trigger = setupTriggers(broker, name, oldDoc); ! indexer.setDocument(document); ! addObserversToIndexer(broker, indexer); ! indexer.setValidating(true); streamer = new DOMStreamer(); if (trigger != null && triggersEnabled) { streamer.setContentHandler(trigger.getInputHandler()); streamer.setLexicalHandler(trigger.getLexicalInputHandler()); ! trigger.setOutputHandler(indexer); trigger.setValidating(true); // prepare the trigger *************** *** 1095,1100 **** : Trigger.UPDATE_DOCUMENT_EVENT, broker, name, oldDoc); } else { ! streamer.setContentHandler(parser); ! streamer.setLexicalHandler(parser); } --- 1079,1084 ---- : Trigger.UPDATE_DOCUMENT_EVENT, broker, name, oldDoc); } else { ! streamer.setContentHandler(indexer); ! streamer.setLexicalHandler(indexer); } *************** *** 1112,1116 **** broker.removeDocument(getName() + '/' + oldDoc.getFileName(), false); oldDoc.copyOf(document); ! parser.setDocumentObject(oldDoc); document = oldDoc; } else { --- 1096,1100 ---- broker.removeDocument(getName() + '/' + oldDoc.getFileName(), false); oldDoc.copyOf(document); ! indexer.setDocumentObject(oldDoc); document = oldDoc; } else { *************** *** 1119,1123 **** } ! parser.setValidating(false); if (trigger != null) trigger.setValidating(false); --- 1103,1107 ---- } ! indexer.setValidating(false); if (trigger != null) trigger.setValidating(false); *************** *** 1171,1175 **** */ private Trigger setupTriggers(DBBroker broker, String name, DocumentImpl oldDoc) { - // setup triggers Trigger trigger = null; if (triggersEnabled && !name.equals(COLLECTION_CONFIG_FILE)) { --- 1155,1158 ---- |