Add a developer setting that will suppress automated search index updates.
This commit is contained in:
parent
39e7a818c2
commit
573a5e6cc6
5 changed files with 151 additions and 22 deletions
|
@ -42,6 +42,8 @@ import edu.cornell.mannlib.vitro.webapp.search.indexing.AdditionalUriFinders;
|
||||||
import edu.cornell.mannlib.vitro.webapp.search.indexing.IndexBuilder;
|
import edu.cornell.mannlib.vitro.webapp.search.indexing.IndexBuilder;
|
||||||
import edu.cornell.mannlib.vitro.webapp.search.indexing.SearchReindexingListener;
|
import edu.cornell.mannlib.vitro.webapp.search.indexing.SearchReindexingListener;
|
||||||
import edu.cornell.mannlib.vitro.webapp.startup.StartupStatus;
|
import edu.cornell.mannlib.vitro.webapp.startup.StartupStatus;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.utils.developer.Key;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.utils.developer.listeners.DeveloperDisabledModelChangeListener;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO
|
* TODO
|
||||||
|
@ -129,11 +131,12 @@ public class SearchIndexerSetup implements ServletContextListener {
|
||||||
// webapp.
|
// webapp.
|
||||||
context.setAttribute(IndexBuilder.class.getName(), builder);
|
context.setAttribute(IndexBuilder.class.getName(), builder);
|
||||||
|
|
||||||
// set up listeners so search index builder is notified of changes
|
// Create listener to notify index builder of changes to model
|
||||||
// to model
|
// (can be disabled by developer setting.)
|
||||||
ServletContext ctx = sce.getServletContext();
|
ModelContext.registerListenerForChanges(context,
|
||||||
SearchReindexingListener srl = new SearchReindexingListener(builder);
|
new DeveloperDisabledModelChangeListener(
|
||||||
ModelContext.registerListenerForChanges(ctx, srl);
|
new SearchReindexingListener(builder),
|
||||||
|
Key.SEARCH_INDEX_SUPPRESS_MODEL_CHANGE_LISTENER));
|
||||||
|
|
||||||
ss.info(this, "Setup of search indexer completed.");
|
ss.info(this, "Setup of search indexer completed.");
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
|
|
|
@ -110,6 +110,12 @@ public enum Key {
|
||||||
SEARCH_INDEX_DOCUMENT_RESTRICTION(
|
SEARCH_INDEX_DOCUMENT_RESTRICTION(
|
||||||
"developer.searchIndex.documentRestriction", false),
|
"developer.searchIndex.documentRestriction", false),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If set, don't pass model change events to the search indexer.
|
||||||
|
*/
|
||||||
|
SEARCH_INDEX_SUPPRESS_MODEL_CHANGE_LISTENER(
|
||||||
|
"developer.searchIndex.suppressModelChangeListener", true),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tell the SearchEngineLogger to log all index deletions.
|
* Tell the SearchEngineLogger to log all index deletions.
|
||||||
*/
|
*/
|
||||||
|
@ -185,6 +191,7 @@ public enum Key {
|
||||||
private final String propertyName;
|
private final String propertyName;
|
||||||
private final boolean bool;
|
private final boolean bool;
|
||||||
|
|
||||||
|
// TODO create a private enum for KeyType to clarify these constructors.
|
||||||
private Key(String propertyName, boolean bool) {
|
private Key(String propertyName, boolean bool) {
|
||||||
this.propertyName = propertyName;
|
this.propertyName = propertyName;
|
||||||
this.bool = bool;
|
this.bool = bool;
|
||||||
|
|
|
@ -0,0 +1,116 @@
|
||||||
|
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||||
|
|
||||||
|
package edu.cornell.mannlib.vitro.webapp.utils.developer.listeners;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.hp.hpl.jena.rdf.model.Model;
|
||||||
|
import com.hp.hpl.jena.rdf.model.ModelChangedListener;
|
||||||
|
import com.hp.hpl.jena.rdf.model.Statement;
|
||||||
|
import com.hp.hpl.jena.rdf.model.StmtIterator;
|
||||||
|
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.utils.developer.DeveloperSettings;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.utils.developer.Key;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If a particular developer flag is NOT set to true, this is transparent.
|
||||||
|
*
|
||||||
|
* Set the flag and this becomes opaque, passing no events through.
|
||||||
|
*/
|
||||||
|
public class DeveloperDisabledModelChangeListener implements
|
||||||
|
ModelChangedListener {
|
||||||
|
private final ModelChangedListener inner;
|
||||||
|
private final Key disablingKey;
|
||||||
|
|
||||||
|
public DeveloperDisabledModelChangeListener(ModelChangedListener inner,
|
||||||
|
Key disablingKey) {
|
||||||
|
this.inner = inner;
|
||||||
|
this.disablingKey = disablingKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isEnabled() {
|
||||||
|
return !DeveloperSettings.getInstance().getBoolean(disablingKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------
|
||||||
|
// Delegated methods.
|
||||||
|
// ----------------------------------------------------------------------
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addedStatement(Statement s) {
|
||||||
|
if (isEnabled()) {
|
||||||
|
inner.addedStatement(s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addedStatements(Statement[] statements) {
|
||||||
|
if (isEnabled()) {
|
||||||
|
inner.addedStatements(statements);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addedStatements(List<Statement> statements) {
|
||||||
|
if (isEnabled()) {
|
||||||
|
inner.addedStatements(statements);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addedStatements(StmtIterator statements) {
|
||||||
|
if (isEnabled()) {
|
||||||
|
inner.addedStatements(statements);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addedStatements(Model m) {
|
||||||
|
if (isEnabled()) {
|
||||||
|
inner.addedStatements(m);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removedStatement(Statement s) {
|
||||||
|
if (isEnabled()) {
|
||||||
|
inner.removedStatement(s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removedStatements(Statement[] statements) {
|
||||||
|
if (isEnabled()) {
|
||||||
|
inner.removedStatements(statements);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removedStatements(List<Statement> statements) {
|
||||||
|
if (isEnabled()) {
|
||||||
|
inner.removedStatements(statements);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removedStatements(StmtIterator statements) {
|
||||||
|
if (isEnabled()) {
|
||||||
|
inner.removedStatements(statements);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removedStatements(Model m) {
|
||||||
|
if (isEnabled()) {
|
||||||
|
inner.removedStatements(m);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void notifyEvent(Model m, Object event) {
|
||||||
|
if (isEnabled()) {
|
||||||
|
inner.notifyEvent(m, event);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -54,6 +54,7 @@ function DeveloperPanel(developerAjaxUrl) {
|
||||||
document.getElementById("developer_i18n_logStringRequests").disabled = !developerEnabled;
|
document.getElementById("developer_i18n_logStringRequests").disabled = !developerEnabled;
|
||||||
document.getElementById("developer_loggingRDFService_enable").disabled = !developerEnabled;
|
document.getElementById("developer_loggingRDFService_enable").disabled = !developerEnabled;
|
||||||
document.getElementById("developer_searchIndex_enable").disabled = !developerEnabled;
|
document.getElementById("developer_searchIndex_enable").disabled = !developerEnabled;
|
||||||
|
document.getElementById("developer_searchIndex_suppressModelChangeListener").disabled = !developerEnabled;
|
||||||
document.getElementById("developer_searchDeletions_enable").disabled = !developerEnabled;
|
document.getElementById("developer_searchDeletions_enable").disabled = !developerEnabled;
|
||||||
document.getElementById("developer_searchEngine_enable").disabled = !developerEnabled;
|
document.getElementById("developer_searchEngine_enable").disabled = !developerEnabled;
|
||||||
document.getElementById("developer_authorization_logDecisions_enable").disabled = !developerEnabled;
|
document.getElementById("developer_authorization_logDecisions_enable").disabled = !developerEnabled;
|
||||||
|
|
|
@ -96,17 +96,16 @@
|
||||||
<div id="developerTabSearch">
|
<div id="developerTabSearch">
|
||||||
<div class="devright">
|
<div class="devright">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
Indexing
|
Searching
|
||||||
<@showCheckbox "developer_searchIndex_enable", "Log indexing." />
|
<@showCheckbox "developer_searchEngine_enable", "Log searches" />
|
||||||
<div class="within">
|
<div class="within">
|
||||||
<@showCheckbox "developer_searchIndex_showDocuments",
|
<@showCheckbox "developer_searchEngine_addStackTrace", "Show stack trace" />
|
||||||
"Show document contents" />
|
<@showCheckbox "developer_searchEngine_addResults", "Show search results" />
|
||||||
<@showTextbox "developer_searchIndex_uriOrNameRestriction",
|
<@showTextbox "developer_searchEngine_queryRestriction",
|
||||||
"Restrict by URI or name" />
|
"Restrict by query string" />
|
||||||
<@showTextbox "developer_searchIndex_documentRestriction",
|
<@showTextbox "developer_searchEngine_stackRestriction",
|
||||||
"Restrict by document contents" />
|
"Restrict by calling stack" />
|
||||||
</div>
|
</div>
|
||||||
<@showCheckbox "developer_searchDeletions_enable", "Log deletions." />
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
@ -118,16 +117,19 @@
|
||||||
|
|
||||||
<div class="devleft">
|
<div class="devleft">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
Searching
|
Indexing
|
||||||
<@showCheckbox "developer_searchEngine_enable", "Log searches" />
|
<@showCheckbox "developer_searchIndex_enable", "Log indexing." />
|
||||||
<div class="within">
|
<div class="within">
|
||||||
<@showCheckbox "developer_searchEngine_addStackTrace", "Show stack trace" />
|
<@showCheckbox "developer_searchIndex_showDocuments",
|
||||||
<@showCheckbox "developer_searchEngine_addResults", "Show search results" />
|
"Show document contents" />
|
||||||
<@showTextbox "developer_searchEngine_queryRestriction",
|
<@showTextbox "developer_searchIndex_uriOrNameRestriction",
|
||||||
"Restrict by query string" />
|
"Restrict by URI or name" />
|
||||||
<@showTextbox "developer_searchEngine_stackRestriction",
|
<@showTextbox "developer_searchIndex_documentRestriction",
|
||||||
"Restrict by calling stack" />
|
"Restrict by document contents" />
|
||||||
</div>
|
</div>
|
||||||
|
<@showCheckbox "developer_searchDeletions_enable", "Log deletions." />
|
||||||
|
<@showCheckbox "developer_searchIndex_suppressModelChangeListener",
|
||||||
|
"Suppress the automatic indexing of changed triples." />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Add table
Reference in a new issue