From: <die...@us...> - 2010-05-12 10:38:00
|
Revision: 2407 http://openutils.svn.sourceforge.net/openutils/?rev=2407&view=rev Author: diego_schivo Date: 2010-05-12 10:37:54 +0000 (Wed, 12 May 2010) Log Message: ----------- MEDIA-92 fix basePath Modified Paths: -------------- trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/configuration/MediaUsedInManager.java Modified: trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/configuration/MediaUsedInManager.java =================================================================== --- trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/configuration/MediaUsedInManager.java 2010-05-12 10:21:41 UTC (rev 2406) +++ trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/configuration/MediaUsedInManager.java 2010-05-12 10:37:54 UTC (rev 2407) @@ -133,6 +133,7 @@ QueryManager qm = MgnlContext.getQueryManager(uiw.getWorkspaceName()); Query q = qm.createQuery("select * from nt:base where jcr:path like '" + uiw.getBasePath() + + (StringUtils.endsWith(uiw.getBasePath(), "/") ? StringUtils.EMPTY : "/") + "%' and contains(" + uiw.getPropertyName() + ", '" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fg...@us...> - 2011-11-19 21:44:42
|
Revision: 3699 http://openutils.svn.sourceforge.net/openutils/?rev=3699&view=rev Author: fgiust Date: 2011-11-19 21:44:36 +0000 (Sat, 19 Nov 2011) Log Message: ----------- MEDIA-257 Escape media uuid in MediaUsedInManager Modified Paths: -------------- trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/configuration/MediaUsedInManager.java Modified: trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/configuration/MediaUsedInManager.java =================================================================== --- trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/configuration/MediaUsedInManager.java 2011-11-19 21:06:38 UTC (rev 3698) +++ trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/configuration/MediaUsedInManager.java 2011-11-19 21:44:36 UTC (rev 3699) @@ -23,13 +23,9 @@ import info.magnolia.cms.beans.config.ObservedManager; import info.magnolia.cms.core.Content; import info.magnolia.cms.core.ItemType; -import info.magnolia.cms.core.search.Query; -import info.magnolia.cms.core.search.QueryManager; -import info.magnolia.cms.core.search.QueryResult; import info.magnolia.cms.util.FactoryUtil; import info.magnolia.content2bean.Content2BeanException; import info.magnolia.content2bean.Content2BeanUtil; -import info.magnolia.context.MgnlContext; import java.util.ArrayList; import java.util.Collection; @@ -43,6 +39,12 @@ import javax.jcr.RepositoryException; import javax.jcr.query.InvalidQueryException; +import net.sourceforge.openutils.mgnlcriteria.jcr.query.AdvancedResult; +import net.sourceforge.openutils.mgnlcriteria.jcr.query.Criteria; +import net.sourceforge.openutils.mgnlcriteria.jcr.query.JCRCriteriaFactory; +import net.sourceforge.openutils.mgnlcriteria.jcr.query.criterion.Order; +import net.sourceforge.openutils.mgnlcriteria.jcr.query.criterion.Restrictions; + import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -60,7 +62,7 @@ return (MediaUsedInManager) FactoryUtil.getSingleton(MediaUsedInManager.class); } - private Logger log = LoggerFactory.getLogger(MediaUsedInManager.class); + private static Logger log = LoggerFactory.getLogger(MediaUsedInManager.class); private Map<String, UsedInWorkspace> usedInWorkspaceMap = new HashMap<String, UsedInWorkspace>(); @@ -149,31 +151,41 @@ List<Content> nodes = new ArrayList<Content>(); Set<String> handles = new HashSet<String>(); - QueryManager qm = MgnlContext.getQueryManager(uiw.getWorkspaceName()); - Query q = qm.createQuery( - "select * from nt:base where jcr:path like '" - + uiw.getBasePath() - + (StringUtils.endsWith(uiw.getBasePath(), "/") ? StringUtils.EMPTY : "/") - + "%' and contains(" - + uiw.getPropertyName() - + ", '" - + mediaUUID - + "')", - Query.SQL); - QueryResult qr = q.execute(); - Collection<Content> qrNodes = qr.getContent(uiw.getNodeType()); - if (qrNodes != null) + String basepath = "/jcr:root" + StringUtils.defaultString(uiw.getBasePath()); + + if (!StringUtils.endsWith(basepath, "/")) { - for (Content c : qrNodes) + basepath = basepath + "/"; + } + basepath = basepath + "/*"; + + Criteria criteria = JCRCriteriaFactory + .createCriteria() + .setWorkspace(uiw.getWorkspaceName()) + .setBasePath(basepath) + .add(Restrictions.contains(uiw.getPropertyName(), mediaUUID)) + .add(Restrictions.not(Restrictions.eq("@jcr:primaryType", "nt:frozenNode"))) + .addOrder(Order.desc("@jcr:score")); + + AdvancedResult result = criteria.execute(); + + log.debug("{} > {}", criteria.toXpathExpression(), result.getTotalSize()); + + for (Content item : result.getItems()) + { + // log.debug("{} {}", item.getJCRNode().getPrimaryNodeType().getName(), item.getHandle()); + + while (!item.getNodeTypeName().equals(uiw.getNodeType()) && item.getLevel() > 1) { - if (!handles.contains(c.getHandle())) - { - nodes.add(c); - handles.add(c.getHandle()); - } - + item = item.getParent(); } + if (item.getNodeTypeName().equals(uiw.getNodeType()) && !handles.contains(item.getHandle())) + { + nodes.add(item); + handles.add(item.getHandle()); + } } + return nodes; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |