📄 crawlsettingssaxhandler.java
字号:
} else if (handlerStack.peek() instanceof RefinementHandler) { ((Refinement) stack.peek()).setDescription(value); } else { illegalElementError(name); } } } private class OrganizationHandler extends ElementHandler { public void endElement(String name) throws SAXException { if (handlerStack.peek() instanceof MetaHandler) { settings.setOrganization(value); } else if (handlerStack.peek() instanceof RefinementHandler) { ((Refinement) stack.peek()).setOrganization(value); } else { illegalElementError(name); } } } private class OperatorHandler extends ElementHandler { public void endElement(String name) throws SAXException { if (handlerStack.peek() instanceof MetaHandler) { settings.setOperator(value); } else if (handlerStack.peek() instanceof RefinementHandler) { ((Refinement) stack.peek()).setOperator(value); } else { illegalElementError(name); } } } private class AudienceHandler extends ElementHandler { public void endElement(String name) throws SAXException { if (handlerStack.peek() instanceof MetaHandler) { settings.setAudience(value); } else if (handlerStack.peek() instanceof RefinementHandler) { ((Refinement) stack.peek()).setAudience(value); } else { illegalElementError(name); } } } private class DateHandler extends ElementHandler { public void endElement(String name) throws SAXException { if (handlerStack.peek() instanceof MetaHandler) { try { settings.setLastSavedTime(ArchiveUtils .parse14DigitDate(value)); } catch (ParseException e) { throw new SAXException(e); } } else { illegalElementError(name); } } } // Refinement handlers private class RefinementListHandler extends ElementHandler { public void startElement(String name) throws SAXException { if (!(handlerStack.peek() instanceof RootHandler)) { illegalElementError(name); } } } private class RefinementHandler extends ElementHandler { public void startElement(String name, Attributes atts) throws SAXException { stack.push(new Refinement(settings, atts .getValue(XMLSettingsHandler.XML_ELEMENT_REFERENCE))); } } private class ReferenceHandler extends ElementHandler { public void endElement(String name) throws SAXException { if (handlerStack.peek() instanceof RefinementHandler) { ((Refinement) stack.peek()).setReference(value); } else { illegalElementError(name); } } } private class LimitsHandler extends ElementHandler { } private class TimespanHandler extends ElementHandler { public void startElement(String name, Attributes atts) throws SAXException { if (stack.peek() instanceof Refinement) { String from = atts .getValue(XMLSettingsHandler.XML_ATTRIBUTE_FROM); String to = atts.getValue(XMLSettingsHandler.XML_ATTRIBUTE_TO); try { TimespanCriteria timespan = new TimespanCriteria(from, to); ((Refinement) stack.peek()).addCriteria(timespan); } catch (ParseException e) { throw new SAXException(e); } } else { illegalElementError(name); } } } private class PortnumberHandler extends ElementHandler { public void endElement(String name) throws SAXException { if (handlerStack.peek() instanceof LimitsHandler) { ((Refinement) stack.peek()).addCriteria(new PortnumberCriteria(value)); } else { illegalElementError(name); } } } private class URIMatcherHandler extends ElementHandler { public void endElement(String name) throws SAXException { if (handlerStack.peek() instanceof LimitsHandler) { ((Refinement) stack.peek()).addCriteria(new RegularExpressionCriteria(value)); } else { illegalElementError(name); } } } // Handlers for objects and attributes private class ModuleHandler extends ElementHandler { public void startElement(String name, Attributes atts) throws SAXException { ModuleType module; if (name.equals(XMLSettingsHandler.XML_ELEMENT_CONTROLLER)) { module = settingsHandler.getOrder(); } else { module = settingsHandler.getSettingsObject(null).getModule( atts.getValue(XMLSettingsHandler.XML_ATTRIBUTE_NAME)); } stack.push(module); } public void endElement(String name) throws SAXException { stack.pop(); } } private class NewModuleHandler extends ElementHandler { public void startElement(String name, Attributes atts) throws SAXException { ComplexType parentModule = (ComplexType) stack.peek(); String moduleName = atts .getValue(XMLSettingsHandler.XML_ATTRIBUTE_NAME); String moduleClass = atts .getValue(XMLSettingsHandler.XML_ATTRIBUTE_CLASS); try { ModuleType module = SettingsHandler .instantiateModuleTypeFromClassName(moduleName, moduleClass); try { parentModule.setAttribute(settings, module); } catch (AttributeNotFoundException e) { // Attribute was not found, but the complex type might // be a MapType and then we are allowed to add new // elements. try { parentModule.addElement(settings, module); } catch (IllegalStateException ise) { // An attribute in the settings file is not in the // ComplexType's definition, log and skip. logger.log(Level.WARNING,"Module '" + moduleName + "' in '" + locator.getSystemId() + "', line: " + locator.getLineNumber() + ", column: " + locator.getColumnNumber() + " is not defined in '" + parentModule.getName() + "'."); throw new SAXException(new AttributeNotFoundException( ise.getMessage())); } } stack.push(module); } catch (InvocationTargetException e) { logger.log(Level.WARNING,"Couldn't instantiate " + moduleName + ", from class: " + moduleClass + "' in '" + locator.getSystemId() + "', line: " + locator.getLineNumber() + ", column: " + locator.getColumnNumber(), e); throw new SAXException(e); } catch (InvalidAttributeValueException e) { throw new SAXException(e); } } public void endElement(String name) throws SAXException { stack.pop(); } } private class MapHandler extends ElementHandler { public void startElement(String name, Attributes atts) throws SAXException { String mapName = atts .getValue(XMLSettingsHandler.XML_ATTRIBUTE_NAME); ComplexType parentModule = (ComplexType) stack.peek(); try { stack.push(parentModule.getAttribute(settings, mapName)); } catch (AttributeNotFoundException e) { throw new SAXException(e); } } public void endElement(String name) throws SAXException { stack.pop(); } } private class SimpleElementHandler extends ElementHandler { public void startElement(String name, Attributes atts) throws SAXException { stack.push(atts.getValue(XMLSettingsHandler.XML_ATTRIBUTE_NAME)); } public void endElement(String name) throws SAXException { String elementName = (String) stack.pop(); Object container = stack.peek(); if (container instanceof ComplexType) { try { try { ((ComplexType) container).setAttribute(settings, new Attribute(elementName, value)); } catch (AttributeNotFoundException e) { // Attribute was not found, but the complex type might // be a MapType and then we are allowed to add new // elements. try { ((ComplexType) container).addElement(settings, new SimpleType(elementName, "", value)); } catch (IllegalStateException ise) { logger.warning("Unknown attribute '" + elementName + "' in '" + locator.getSystemId() + "', line: " + locator.getLineNumber() + ", column: " + locator.getColumnNumber()); } } } catch (InvalidAttributeValueException e) { try { logger.warning("Illegal value '" + value + "' for attribute '" + elementName + "' in '" + locator.getSystemId() + "', line: " + locator.getLineNumber() + ", column: " + locator.getColumnNumber() + ", Value reset to default value: " + ((ComplexType) container).getAttribute( settings, elementName)); } catch (AttributeNotFoundException e1) { throw new SAXException(e1); } } } else { if (container == null) { // We can get here if an override is referring to a global // filter since removed. Log it as severe; operator will // probably want to know of all overrides with references // to a global filter since removed. logger.severe("Empty container (Was a referenced parent" + " filter removed?). Element details: elementName " + elementName + ", name " + name); } else { ((ListType) container).add(value); } } } } private class ListHandler extends ElementHandler { public void startElement(String name, Attributes atts) throws SAXException { String listName = atts .getValue(XMLSettingsHandler.XML_ATTRIBUTE_NAME); ComplexType parentModule = (ComplexType) stack.peek(); ListType list; try { list = (ListType) parentModule.getAttribute(settings, listName); } catch (AttributeNotFoundException e) { throw new SAXException(e); } list.clear(); stack.push(list); } public void endElement(String name) throws SAXException { stack.pop(); } } /* * (non-Javadoc) * * @see org.archive.crawler.settings.ValueErrorHandler#handleValueError(org.archive.crawler.settings.Constraint.FailedCheck) */ public void handleValueError(FailedCheck error) { logger.warning(error.getMessage() + "\n Attribute: '" + error.getOwner().getName() + ":" + error.getDefinition().getName() + "'\n Value: '" + value + "'\n File: '" + locator.getSystemId() + "', line: " + locator.getLineNumber() + ", column: " + locator.getColumnNumber()); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -