Crear su propio plugin de Search
Puede crear su propio plugin de Search.
Condiciones:
- La nueva clase NodeSearch debe implementar la interfaz “NodeSearch”.
- La nueva clase NodeSearch debe crearse en el paquete “com.openkm.plugin.search”.
- La nueva clase NodeSearch debe anotarse con “@PluginImplementation”.
- La nueva clase NodeSearch debe extender “BasePlugin”.
Interfaz NodeSearch:
package com.openkm.plugin.search;
import com.openkm.bean.NodeSearchConfig;import com.openkm.core.AccessDeniedException;import com.openkm.core.DatabaseException;import com.openkm.core.ParseException;import com.openkm.core.RepositoryException;import com.openkm.db.bean.QueryParams;import com.openkm.ws.rest.util.SimpleNodeBaseResultSet;import net.xeoh.plugins.base.Plugin;
import java.io.IOException;
/** * Node Search */public interface NodeSearch extends Plugin { SimpleNodeBaseResultSet findSimpleNodeBasePaginated(QueryParams params, int offset, int limit) throws AccessDeniedException, RepositoryException, IOException, ParseException, DatabaseException;
NodeSearchConfig getConfig() throws DatabaseException;
String getName();}La nueva clase debe crearse en el paquete com.openkm.plugin.search porque el sistema de plugins intentará cargarla desde ahí.
Descripción de los métodos
Sección titulada «Descripción de los métodos»| Método | Tipo | Descripción |
|---|---|---|
| findSimpleNodeBasePaginated(QueryParams params, int offset, int limit) | SimpleNodeBaseResultSet | Realiza una búsqueda basada en los parámetros de consulta. Los valores offset y limit establecen el rango de los resultados. |
| getConfig() | NodeSearchConfig | Se usa para establecer los campos de búsqueda visibles. Por defecto, todos los campos de búsqueda están ocultos. |
| getName() | String | El nombre del plugin. |
Ejemplo
Sección titulada «Ejemplo»Clase TestNodeSearch:
package com.openkm.plugin.search;
import com.openkm.bean.NodeSearchConfig;import com.openkm.core.AccessDeniedException;import com.openkm.core.DatabaseException;import com.openkm.core.ParseException;import com.openkm.core.RepositoryException;import com.openkm.db.bean.QueryParams;import com.openkm.module.db.DbSearchModule;import com.openkm.plugin.BasePlugin;import com.openkm.ws.rest.util.SimpleNodeBaseResultSet;import net.xeoh.plugins.base.annotations.PluginImplementation;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;
import java.io.IOException;
@PluginImplementationpublic class TestNodeSearch extends BasePlugin implements NodeSearch { private static final Logger log = LoggerFactory.getLogger(TestNodeSearch.class);
@Autowired private DbSearchModule dbSearchModule;
@Override public SimpleNodeBaseResultSet findSimpleNodeBasePaginated(QueryParams params, int offset, int limit) throws AccessDeniedException, RepositoryException, IOException, ParseException, DatabaseException { return dbSearchModule.findSimpleNodeBasePaginated(null, params, offset, limit); }
@Override public NodeSearchConfig getConfig() throws DatabaseException { NodeSearchConfig nsc = new NodeSearchConfig(); nsc.setTabBasicVisible(true); nsc.setSaveSearchVisible(true); nsc.setContextVisible(true); nsc.setContentVisible(true); nsc.setNameVisible(true); nsc.setDateVisible(true); return nsc; }
@Override public String getName() { return "Test search sample"; }}