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... :)
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...
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@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"; | |
} |
Comentarios