package com.constellio.data.extensions;
import com.constellio.data.dao.services.bigVault.solr.BigVaultServerTransaction;
import com.constellio.data.frameworks.extensions.ExtensionBooleanResult;
import com.constellio.data.frameworks.extensions.ExtensionUtils.BooleanCaller;
import com.constellio.data.frameworks.extensions.VaultBehaviorsList;
import org.apache.solr.common.params.SolrParams;
import static com.constellio.data.frameworks.extensions.ExtensionUtils.getBooleanValue;
public class DataLayerSystemExtensions {
//------------ Extension points -----------
public VaultBehaviorsList<BigVaultServerExtension> bigVaultServerExtension = new VaultBehaviorsList<>();
public VaultBehaviorsList<TransactionLogExtension> transactionLogExtensions = new VaultBehaviorsList<>();
public VaultBehaviorsList<BigVaultServerExtension> getBigVaultServerExtension() {
return bigVaultServerExtension;
}
public void afterQuery(SolrParams params, long qtime) {
for (BigVaultServerExtension extension : bigVaultServerExtension) {
try {
extension.afterQuery(params, qtime);
} catch (Exception e) {
// e.printStackTrace();
}
}
}
public void afterUpdate(BigVaultServerTransaction transaction, long qtime) {
for (BigVaultServerExtension extension : bigVaultServerExtension) {
extension.afterUpdate(transaction, qtime);
}
}
public void afterCommmit(BigVaultServerTransaction transaction, long qtime) {
for (BigVaultServerExtension extension : bigVaultServerExtension) {
extension.afterCommit(transaction, qtime);
}
}
//----------------- Callers ---------------
public boolean isDocumentFieldLoggedInTransactionLog(final String field, final String schema, final String collection,
boolean defaultValue) {
return getBooleanValue(getTransactionLogExtensions(), defaultValue, new BooleanCaller<TransactionLogExtension>() {
@Override
public ExtensionBooleanResult call(TransactionLogExtension extension) {
return extension.isDocumentFieldLoggedInTransactionLog(field, schema, collection);
}
});
}
public VaultBehaviorsList<TransactionLogExtension> getTransactionLogExtensions() {
return transactionLogExtensions;
}
}