Ir al contenido principal

Búsqueda de Artículos por Etiqueta en Liferay

Pues no me había encontrado con nada interesante para escribir, por lo que había dejado a un lado el blog ya por un tiempo, en fin... ahora me encontré queriendo hacer una búsqueda por tag de contenido en liferay debido a una aplicación que estoy realizando, y me topé con que no hay mucha información al respecto por lo que hago este post para que le sirva a alguien y para acordarme cómo hacerlo después... :)
@RequestMapping(params = "action=contenido")
public String contenido(RenderRequest request, @RequestParam("cursoId") Long id, Model model) throws SystemException {
log.debug("Edita contenido");
curso = cursoDao.obtiene(id);
model.addAttribute("curso", curso);
// Obtiene los datos del usuario de session
ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
try {
// Obtiene el grupo en el que se encuentra trabajando el usuario firmado
long scopeGroupId = themeDisplay.getScopeGroupId();
// Obtiene los id's de los contenidos que se encuentren en el grupo y esten etiquetados con curso.getCodigo()
long[] entryIds = TagsEntryLocalServiceUtil.getEntryIds(scopeGroupId, StringUtil.split(curso.getCodigo()));
// Lista de id's que deseo exluir de la búsqueda
long[] notEntryIds = new long[0];
// Lista de tipos de contenido, en este caso busca de todos los tipos
long[] classNameIds = new long[0];
// Total de contenidos con esos filtros
int total = TagsAssetLocalServiceUtil.getAssetsCount(scopeGroupId, entryIds, notEntryIds, false, false);
log.debug("TOTAL: "+total);
// Por fin, la lista de contenidos con los filtros
List<TagsAsset> assets = TagsAssetLocalServiceUtil.getAssets(scopeGroupId, classNameIds, entryIds, notEntryIds, false, false, 0, total);
// Iteración sobre los contenidos encontrados con esas etiquetas
for(TagsAsset asset : assets) {
log.debug("Asset: "+ asset.getTitle() + " : "+ asset.getDescription() + " : "+ asset.getMimeType() + " : " + asset.getClassName());
}
} catch (Exception e) {
log.error(e);
throw new RuntimeException("Error al obtener los tags",e);
}
return "curso/contenido";
}
view raw gistfile1.java hosted with ❤ by GitHub
Donde curso es una variable de entorno que cuando le pides su código, te regresa un string... Si quisieras hacer la búsqueda por varias etiquetas solo le pasas "TAG1,TAG2,TAG3" al StringUtil y te va a hacer el arreglo que necesitas para hacer la búsqueda por los tags, la primera opción que está puesta en false significa que si buscas por varios tags lo hagas con un AND si es true o con un OR si es false, esto es, que si le pones true, lo que busques debe tener todos los tags asignados, con false, solo hace falta que tenga uno. Si necesitas solo articulos, busca el id de la clase com.liferay.portlet.journal.model.JournalArticle. En fin, se esto se puede hacer extenso, y realmente no necesito tanta info para acordarme de lo que hice...

Comentarios

Entradas más populares de este blog

OpenSolaris, Clúster de Glassfish y Sun Java Web Server Loadbalancer

Pues estuve necesitando un clúster de Glassfish V2U2 para lo cual encontré rápidamente mucha información en Internet, el que más me gustó fue un blog de Ryan Wilson , pero también necesitaba poner el balanceador de cargas ( loadbalancer ) asi que para eso utilicé la documentación de Glassfish . Aquí el resúmen: Instalar OpenSolaris 200805 y despues realizar lo que les sugieren en los Release Notes , en donde te dicen que actualices su herramienta para instalar paquetes. NOTA: Antes de hacer esto, asegurarse de tener todas las máquinas que van a participar dentro del cluster mapeadas con un DNS, de no ser esto posible sus archivos de hosts deben de tener la información suya y de cada una de las máquinas que van a participar. (Gracias a equipo Telcel) Despues de esto seguir las instrucciones de Ryan . Con esto vas a tener el cluster de glassfish funcionando. Solo que en la configuración del segundo servidor puedes hacer lo siguiente para evitar los pasos 4 al 6 (lo siguiente todo en una...

Reporte Excel con JasperReports

Pues no funcionó el reporte con Jasper, pude hacer que evitara paginar con estas opciones ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); JRXlsExporter exporterXLS = new JRXlsExporter(); exporterXLS.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint); // exporterXLS.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE); exporterXLS.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE); exporterXLS.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE); exporterXLS.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_COLUMNS, Boolean.TRUE); exporterXLS.setParameter(JRXlsExporterParameter.IS_COLLAPSE_ROW_SPAN, Boolean.TRUE); exporterXLS.setParameter(JRXlsExporterParameter.IGNORE_PAGE_MARGINS, Boolean.TRUE); exporterXLS.s...

Problema con Grails

Pues después de disfrutar un maravilloso sábado en compañía de mi familia, me puse a resolver un problema que se sucitó ayer en la clase mientras les explicaba acerca de Grails, me pidieran que si podía hacer una tarea muy común en el desarrollo de páginas web, esto es, desaparecer cierta funcionalidad y aparecerla cuando se activara algo, pero por alguna razón no pude ayer... Yo sé que andaba enfermo, desvelado y todo, pero bueno, el fin es que no le dí... ahorita revisándolo noté que estaba rompiendo una regla básica de html, estaba tratando de romper una tabla con un div, cosa que no se puede, la solución a este problema es ya sea hacer una columna y hacer un colspan con ella para mostrar lo que queremos (pero tendremos problemas con el diseño) o hacer dos div's, uno por columna, con esto mantendremos el diseño pero tendremos un poco más de código que mantener, que al final de cuentas sería lo que yo haría... en fin, esta es la solución... espero les sirva...