📄 cmssearchconfiguration.java
字号:
// search index source rule
xPath = XPATH_SEARCH + "/" + N_INDEXSOURCES + "/" + N_INDEXSOURCE;
digester.addObjectCreate(xPath, CmsSearchIndexSource.class);
digester.addCallMethod(xPath + "/" + N_NAME, "setName", 0);
digester.addCallMethod(xPath + "/" + N_INDEXER, "setIndexerClassName", 1);
digester.addCallParam(xPath + "/" + N_INDEXER, 0, N_CLASS);
digester.addCallMethod(xPath + "/" + N_RESOURCES + "/" + N_RESOURCE, "addResourceName", 0);
digester.addCallMethod(xPath + "/" + N_DOCUMENTTYPES_INDEXED + "/" + N_NAME, "addDocumentType", 0);
digester.addSetNext(xPath, "addSearchIndexSource");
// generic <param> parameter rules
digester.addCallMethod(
"*/" + I_CmsXmlConfiguration.N_PARAM,
I_CmsConfigurationParameterHandler.ADD_PARAMETER_METHOD,
2);
digester.addCallParam("*/" + I_CmsXmlConfiguration.N_PARAM, 0, I_CmsXmlConfiguration.A_NAME);
digester.addCallParam("*/" + I_CmsXmlConfiguration.N_PARAM, 1);
}
/**
* @see org.opencms.configuration.I_CmsXmlConfiguration#generateXml(org.dom4j.Element)
*/
public Element generateXml(Element parent) {
// add <search> node
Element searchElement = parent.addElement(N_SEARCH);
if (OpenCms.getRunLevel() >= OpenCms.RUNLEVEL_3_SHELL_ACCESS) {
// initialized OpenCms instance is available, use latest values
m_searchManager = OpenCms.getSearchManager();
}
// add <cache> element
searchElement.addElement(N_CACHE).addText(m_searchManager.getResultCacheSize());
// add <directory> element
searchElement.addElement(N_DIRECTORY).addText(m_searchManager.getDirectory());
// add <timeout> element
searchElement.addElement(N_TIMEOUT).addText(m_searchManager.getTimeout());
// add <exerpt> element
searchElement.addElement(N_EXCERPT).addText(String.valueOf(m_searchManager.getMaxExcerptLength()));
// add <highlighter> element
searchElement.addElement(N_HIGHLIGHTER).addText(m_searchManager.getHighlighter().getClass().getName());
// <documenttypes>
Element documenttypesElement = searchElement.addElement(N_DOCUMENTTYPES);
List docTypeKeyList = new ArrayList(m_searchManager.getDocumentTypeConfigs().keySet());
Collections.sort(docTypeKeyList);
List sortedDocTypeList = new ArrayList();
Iterator i = docTypeKeyList.iterator();
while (i.hasNext()) {
CmsSearchDocumentType currDocType = m_searchManager.getDocumentTypeConfig((String)i.next());
sortedDocTypeList.add(currDocType);
}
Iterator docTypeIterator = sortedDocTypeList.iterator();
while (docTypeIterator.hasNext()) {
CmsSearchDocumentType currSearchDocType = (CmsSearchDocumentType)docTypeIterator.next();
// add the next <documenttype> element
Element documenttypeElement = documenttypesElement.addElement(N_DOCUMENTTYPE);
// add <name> element
documenttypeElement.addElement(N_NAME).addText(currSearchDocType.getName());
// add <class> element
documenttypeElement.addElement(N_CLASS).addText(currSearchDocType.getClassName());
// add <mimetypes> element
Element mimetypesElement = documenttypeElement.addElement(N_MIMETYPES);
// get the list of mimetypes to trigger the document factory class
Iterator mimeTypesIterator = currSearchDocType.getMimeTypes().iterator();
while (mimeTypesIterator.hasNext()) {
// add <mimetype> element(s)
mimetypesElement.addElement(N_MIMETYPE).addText((String)mimeTypesIterator.next());
}
// add <resourcetypes> element
Element restypesElement = documenttypeElement.addElement(N_RESOURCETYPES);
// get the list of Cms resource types to trigger the document factory
Iterator resTypesIterator = currSearchDocType.getResourceTypes().iterator();
while (resTypesIterator.hasNext()) {
// add <resourcetype> element(s)
restypesElement.addElement(N_RESOURCETYPE).addText((String)resTypesIterator.next());
}
}
// </documenttypes>
// <analyzers>
Element analyzersElement = searchElement.addElement(N_ANALYZERS);
List analyzerList = new ArrayList(m_searchManager.getAnalyzers().keySet());
// sort Analyzers in ascending order
Collections.sort(analyzerList);
Iterator analyzersIterator = analyzerList.iterator();
while (analyzersIterator.hasNext()) {
CmsSearchAnalyzer searchAnalyzer = m_searchManager.getCmsSearchAnalyzer((String)analyzersIterator.next());
// add the next <analyzer> element
Element analyzerElement = analyzersElement.addElement(N_ANALYZER);
// add <class> element
analyzerElement.addElement(N_CLASS).addText(searchAnalyzer.getClassName());
if (searchAnalyzer.getStemmerAlgorithm() != null) {
// add <stemmer> element
analyzerElement.addElement(N_STEMMER).addText(searchAnalyzer.getStemmerAlgorithm());
}
// add <locale> element
analyzerElement.addElement(N_LOCALE).addText(searchAnalyzer.getLocale());
}
// </analyzers>
// <indexes>
Element indexesElement = searchElement.addElement(N_INDEXES);
Iterator indexIterator = m_searchManager.getSearchIndexes().iterator();
while (indexIterator.hasNext()) {
CmsSearchIndex searchIndex = (CmsSearchIndex)indexIterator.next();
// add the next <index> element
Element indexElement = indexesElement.addElement(N_INDEX);
// add <name> element
indexElement.addElement(N_NAME).addText(searchIndex.getName());
// add <rebuild> element
indexElement.addElement(N_REBUILD).addText(searchIndex.getRebuildMode());
// add <project> element
indexElement.addElement(N_PROJECT).addText(searchIndex.getProject());
// add <locale> element
indexElement.addElement(N_LOCALE).addText(searchIndex.getLocale());
// add <sources> element
Element sourcesElement = indexElement.addElement(N_SOURCES);
// iterate above sourcenames
Iterator sourcesIterator = searchIndex.getSourceNames().iterator();
while (sourcesIterator.hasNext()) {
// add <source> element
sourcesElement.addElement(N_SOURCE).addText((String)sourcesIterator.next());
}
// iterate additional params
Map indexConfiguration = searchIndex.getConfiguration();
if (indexConfiguration != null) {
Iterator it = indexConfiguration.keySet().iterator();
while (it.hasNext()) {
String name = (String)it.next();
String value = indexConfiguration.get(name).toString();
Element paramNode = indexElement.addElement(N_PARAM);
paramNode.addAttribute(A_NAME, name);
paramNode.addText(value);
}
}
}
// </indexes>
// <indexsources>
Element indexsourcesElement = searchElement.addElement(N_INDEXSOURCES);
List indexSources = new ArrayList(m_searchManager.getSearchIndexSources().values());
Iterator indexsourceIterator = indexSources.iterator();
while (indexsourceIterator.hasNext()) {
CmsSearchIndexSource searchIndexSource = (CmsSearchIndexSource)indexsourceIterator.next();
// add <indexsource> element(s)
Element indexsourceElement = indexsourcesElement.addElement(N_INDEXSOURCE);
// add <name> element
indexsourceElement.addElement(N_NAME).addText(searchIndexSource.getName());
// add <indexer class=""> element
Element indexerElement = indexsourceElement.addElement(N_INDEXER).addAttribute(
N_CLASS,
searchIndexSource.getIndexerClassName());
Map params = searchIndexSource.getParams();
Iterator paramIterator = params.keySet().iterator();
while (paramIterator.hasNext()) {
String paramKey = (String)paramIterator.next();
// add <param name=""> element(s)
indexerElement.addElement(I_CmsXmlConfiguration.N_PARAM).addAttribute(
I_CmsXmlConfiguration.A_NAME,
paramKey).addText((String)params.get(paramKey));
}
// add <resources> element
Element resourcesElement = indexsourceElement.addElement(N_RESOURCES);
Iterator resourceIterator = searchIndexSource.getResourcesNames().iterator();
while (resourceIterator.hasNext()) {
// add <resource> element(s)
resourcesElement.addElement(N_RESOURCE).addText((String)resourceIterator.next());
}
// add <documenttypes-indexed> element
Element doctypes_indexedElement = indexsourceElement.addElement(N_DOCUMENTTYPES_INDEXED);
Iterator doctypesIterator = searchIndexSource.getDocumentTypes().iterator();
while (doctypesIterator.hasNext()) {
// add <name> element(s)
doctypes_indexedElement.addElement(N_NAME).addText((String)doctypesIterator.next());
}
}
// </indexsources>
return searchElement;
}
/**
* @see org.opencms.configuration.I_CmsXmlConfiguration#getDtdFilename()
*/
public String getDtdFilename() {
return CONFIGURATION_DTD_NAME;
}
/**
* Returns the generated search manager.<p>
*
* @return the generated search manager
*/
public CmsSearchManager getSearchManager() {
return m_searchManager;
}
/**
* Will be called when configuration of this object is finished.<p>
*/
public void initializeFinished() {
if (CmsLog.INIT.isInfoEnabled()) {
CmsLog.INIT.info(Messages.get().getBundle().key(Messages.INIT_SEARCH_CONFIG_FINISHED_0));
}
}
/**
* Sets the generated search manager.<p>
*
* @param manager the search manager to set
*/
public void setSearchManager(CmsSearchManager manager) {
m_searchManager = manager;
if (CmsLog.INIT.isInfoEnabled()) {
CmsLog.INIT.info(Messages.get().getBundle().key(Messages.INIT_SEARCH_MANAGER_FINISHED_0));
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -