1
0
mirror of https://github.com/sismics/docs.git synced 2025-12-22 06:01:42 +00:00

Fire some more indexing events

This commit is contained in:
Benjamin Gamard
2018-04-01 23:06:45 +02:00
parent 68729e3b54
commit d819c05669
9 changed files with 173 additions and 4 deletions

View File

@@ -0,0 +1,31 @@
package com.sismics.docs.core.event;
import com.google.common.base.MoreObjects;
/**
* ACL created event.
*
* @author bgamard
*/
public class AclCreatedAsyncEvent extends UserEvent {
/**
* Source ID.
*/
private String sourceId;
public String getSourceId() {
return sourceId;
}
public AclCreatedAsyncEvent setSourceId(String sourceId) {
this.sourceId = sourceId;
return this;
}
@Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("sourceId", sourceId)
.toString();
}
}

View File

@@ -0,0 +1,31 @@
package com.sismics.docs.core.event;
import com.google.common.base.MoreObjects;
/**
* ACL deleted event.
*
* @author bgamard
*/
public class AclDeletedAsyncEvent extends UserEvent {
/**
* Source ID.
*/
private String sourceId;
public String getSourceId() {
return sourceId;
}
public AclDeletedAsyncEvent setSourceId(String sourceId) {
this.sourceId = sourceId;
return this;
}
@Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("sourceId", sourceId)
.toString();
}
}

View File

@@ -0,0 +1,36 @@
package com.sismics.docs.core.listener.async;
import com.google.common.eventbus.Subscribe;
import com.sismics.docs.core.event.AclCreatedAsyncEvent;
import com.sismics.docs.core.model.context.AppContext;
import com.sismics.docs.core.util.TransactionUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Listener on ACL created.
*
* @author bgamard
*/
public class AclCreatedAsyncListener {
/**
* Logger.
*/
private static final Logger log = LoggerFactory.getLogger(AclCreatedAsyncListener.class);
/**
* ACL created.
*
* @param event ACL created event
*/
@Subscribe
public void on(final AclCreatedAsyncEvent event) {
if (log.isInfoEnabled()) {
log.info("ACL created event: " + event.toString());
}
TransactionUtil.handle(() -> {
AppContext.getInstance().getIndexingHandler().createAcl(event.getSourceId());
});
}
}

View File

@@ -0,0 +1,36 @@
package com.sismics.docs.core.listener.async;
import com.google.common.eventbus.Subscribe;
import com.sismics.docs.core.event.AclDeletedAsyncEvent;
import com.sismics.docs.core.model.context.AppContext;
import com.sismics.docs.core.util.TransactionUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Listener on ACL deleted.
*
* @author bgamard
*/
public class AclDeletedAsyncListener {
/**
* Logger.
*/
private static final Logger log = LoggerFactory.getLogger(AclDeletedAsyncListener.class);
/**
* ACL deleted.
*
* @param event ACL deleted event
*/
@Subscribe
public void on(final AclDeletedAsyncEvent event) {
if (log.isInfoEnabled()) {
log.info("ACL deleted event: " + event.toString());
}
TransactionUtil.handle(() -> {
AppContext.getInstance().getIndexingHandler().deleteAcl(event.getSourceId());
});
}
}

View File

@@ -124,6 +124,8 @@ public class AppContext {
asyncEventBus.register(new DocumentDeletedAsyncListener());
asyncEventBus.register(new RebuildIndexAsyncListener());
asyncEventBus.register(new TemporaryFileCleanupAsyncListener());
asyncEventBus.register(new AclCreatedAsyncListener());
asyncEventBus.register(new AclDeletedAsyncListener());
mailEventBus = newAsyncEventBus();
mailEventBus.register(new PasswordLostAsyncListener());

View File

@@ -70,6 +70,20 @@ public interface IndexingHandler {
*/
void deleteDocument(String id);
/**
* Create an ACL.
*
* @param sourceId Source ID
*/
void createAcl(String sourceId);
/**
* Delete an ACL.
*
* @param sourceId Source ID
*/
void deleteAcl(String sourceId);
/**
* Searches documents by criteria.
*

View File

@@ -168,6 +168,16 @@ public class LuceneIndexingHandler implements IndexingHandler {
handle(indexWriter -> indexWriter.deleteDocuments(new Term("id", id)));
}
@Override
public void createAcl(String sourceId) {
// Lucene does not index ACLs
}
@Override
public void deleteAcl(String sourceId) {
// Lucene does not index ACLs
}
@Override
public void findByCriteria(PaginatedList<DocumentDto> paginatedList, DocumentCriteria criteria, SortCriteria sortCriteria) throws Exception {
Map<String, Object> parameterMap = new HashMap<>();