package org.orienteer.pages.module;
import org.orienteer.core.OrienteerWebApplication;
import org.orienteer.pages.PagesCompoundRequestMapper;
import com.orientechnologies.orient.core.db.document.ODatabaseDocument;
import com.orientechnologies.orient.core.hook.ODocumentHookAbstract;
import com.orientechnologies.orient.core.hook.ORecordHook;
import com.orientechnologies.orient.core.record.impl.ODocument;
/**
* {@link ORecordHook} to keep pages and mounts in sync
*/
public class PagesHook extends ODocumentHookAbstract {
public PagesHook(ODatabaseDocument database) {
super(database);
setIncludeClasses(PagesModule.OCLASS_PAGE);
}
@Override
public DISTRIBUTED_EXECUTION_MODE getDistributedExecutionMode() {
return DISTRIBUTED_EXECUTION_MODE.TARGET_NODE;
}
@Override
public void onRecordAfterCreate(ODocument iDocument) {
getPagesCompoundRequestMapper().add(iDocument);
}
@Override
public void onRecordAfterUpdate(ODocument iDocument) {
PagesCompoundRequestMapper mapper = getPagesCompoundRequestMapper();
mapper.remove(iDocument);
mapper.add(iDocument);
}
@Override
public void onRecordAfterDelete(ODocument iDocument) {
getPagesCompoundRequestMapper().remove(iDocument);
}
protected PagesCompoundRequestMapper getPagesCompoundRequestMapper() {
return OrienteerWebApplication.get().getServiceInstance(PagesModule.class).getPagesCompoundRequestMapper();
}
}