Ir al contenido

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í.

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.

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;
@PluginImplementation
public 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";
}
}