From: <die...@us...> - 2010-05-12 10:21:47
|
Revision: 2406 http://openutils.svn.sourceforge.net/openutils/?rev=2406&view=rev Author: diego_schivo Date: 2010-05-12 10:21:41 +0000 (Wed, 12 May 2010) Log Message: ----------- MEDIA-92 basePath e propertyName Modified Paths: -------------- 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/UsedInWorkspace.java trunk/openutils-mgnlmedia/src/main/resources/mgnl-bootstrap/media-nooverwrite/config.modules.media.mediausedin.website.xml 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:14:04 UTC (rev 2405) +++ trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/configuration/MediaUsedInManager.java 2010-05-12 10:21:41 UTC (rev 2406) @@ -66,15 +66,15 @@ try { UsedInWorkspace uiw = (UsedInWorkspace) Content2BeanUtil.toBean(uiwNode, UsedInWorkspace.class); - if (StringUtils.isEmpty(uiw.getRepositoryId())) + if (StringUtils.isEmpty(uiw.getWorkspaceName())) { - uiw.setRepositoryId(uiwNode.getName()); + uiw.setWorkspaceName(uiwNode.getName()); } if (StringUtils.isEmpty(uiw.getNodeType())) { uiw.setNodeType(ItemType.CONTENT.getSystemName()); } - usedInWorkspaceMap.put(uiw.getRepositoryId(), uiw); + usedInWorkspaceMap.put(uiw.getWorkspaceName(), uiw); } catch (Content2BeanException e) { @@ -92,22 +92,30 @@ public Map<String, List<String>> getUsedInPaths(String mediaUUID) throws InvalidQueryException, RepositoryException { Map<String, List<String>> map = new HashMap<String, List<String>>(usedInWorkspaceMap.size()); - for (String repositoryId : usedInWorkspaceMap.keySet()) + for (String workspaceName : usedInWorkspaceMap.keySet()) { - map.put(repositoryId, getUsedInWorkspacePaths(mediaUUID, repositoryId)); + map.put(workspaceName, getUsedInWorkspacePaths(mediaUUID, workspaceName)); } return map; } - public List<String> getUsedInWorkspacePaths(String mediaUUID, String repositoryId) throws InvalidQueryException, + public List<String> getUsedInWorkspacePaths(String mediaUUID, String workspaceName) throws InvalidQueryException, RepositoryException { - UsedInWorkspace usedIn = usedInWorkspaceMap.get(repositoryId); - if (usedIn == null) + UsedInWorkspace uiw = usedInWorkspaceMap.get(workspaceName); + if (uiw == null) { - return Collections.emptyList(); + if (ContentRepository.WEBSITE.equals(workspaceName) && usedInWorkspaceMap.isEmpty()) + { + // backward compatibility + uiw = UsedInWorkspace.DEFAULT_WEBSITE; + } + else + { + return Collections.emptyList(); + } } - List<Content> nodes = getUsedInWorkspaceNodes(mediaUUID, usedIn.getRepositoryId(), usedIn.getNodeType()); + List<Content> nodes = getUsedInWorkspaceNodes(mediaUUID, uiw); List<String> paths = new ArrayList<String>(nodes.size()); for (Content node : nodes) { @@ -116,16 +124,22 @@ return paths; } - private static List<Content> getUsedInWorkspaceNodes(String mediaUUID, String repositoryId, String nodeType) + private static List<Content> getUsedInWorkspaceNodes(String mediaUUID, UsedInWorkspace uiw) throws InvalidQueryException, RepositoryException { List<Content> nodes = new ArrayList<Content>(); Set<String> handles = new HashSet<String>(); - QueryManager qm = MgnlContext.getQueryManager(repositoryId); - Query q = qm.createQuery("select * from nt:base where contains(., '" + mediaUUID + "')", Query.SQL); + QueryManager qm = MgnlContext.getQueryManager(uiw.getWorkspaceName()); + Query q = qm.createQuery("select * from nt:base where jcr:path like '" + + uiw.getBasePath() + + "%' and contains(" + + uiw.getPropertyName() + + ", '" + + mediaUUID + + "')", Query.SQL); QueryResult qr = q.execute(); - Collection<Content> qrNodes = qr.getContent(nodeType); + Collection<Content> qrNodes = qr.getContent(uiw.getNodeType()); if (qrNodes != null) { for (Content c : qrNodes) Modified: trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/configuration/UsedInWorkspace.java =================================================================== --- trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/configuration/UsedInWorkspace.java 2010-05-12 10:14:04 UTC (rev 2405) +++ trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/configuration/UsedInWorkspace.java 2010-05-12 10:21:41 UTC (rev 2406) @@ -1,5 +1,9 @@ package net.sourceforge.openutils.mgnlmedia.media.configuration; +import info.magnolia.cms.beans.config.ContentRepository; +import info.magnolia.cms.core.ItemType; + + /** * @author dschivo * @version $Id$ @@ -7,29 +11,51 @@ public class UsedInWorkspace { - private String repositoryId; + public static final UsedInWorkspace DEFAULT_WEBSITE = new UsedInWorkspace(ContentRepository.WEBSITE); - private String nodeType; + private String workspaceName; + private String nodeType = ItemType.CONTENT.getSystemName(); + + private String basePath = "/"; + + private String propertyName = "."; + /** - * Returns the repositoryId. - * @return the repositoryId + * */ - public String getRepositoryId() + public UsedInWorkspace() { - return repositoryId; } /** - * Sets the repositoryId. - * @param repositoryId the repositoryId to set + * @param workspaceName + * @param nodeType */ - public void setRepositoryId(String repositoryId) + public UsedInWorkspace(String workspaceName) { - this.repositoryId = repositoryId; + this.workspaceName = workspaceName; } /** + * Returns the workspaceName. + * @return the workspaceName + */ + public String getWorkspaceName() + { + return workspaceName; + } + + /** + * Sets the workspaceName. + * @param workspaceName the workspaceName to set + */ + public void setWorkspaceName(String workspaceName) + { + this.workspaceName = workspaceName; + } + + /** * Returns the nodeType. * @return the nodeType */ @@ -47,4 +73,39 @@ this.nodeType = nodeType; } + /** + * Returns the basePath. + * @return the basePath + */ + public String getBasePath() + { + return basePath; + } + + /** + * Sets the basePath. + * @param basePath the basePath to set + */ + public void setBasePath(String basePath) + { + this.basePath = basePath; + } + + /** + * Returns the propertyName. + * @return the propertyName + */ + public String getPropertyName() + { + return propertyName; + } + + /** + * Sets the propertyName. + * @param propertyName the propertyName to set + */ + public void setPropertyName(String propertyName) + { + this.propertyName = propertyName; + } } Modified: trunk/openutils-mgnlmedia/src/main/resources/mgnl-bootstrap/media-nooverwrite/config.modules.media.mediausedin.website.xml =================================================================== --- trunk/openutils-mgnlmedia/src/main/resources/mgnl-bootstrap/media-nooverwrite/config.modules.media.mediausedin.website.xml 2010-05-12 10:14:04 UTC (rev 2405) +++ trunk/openutils-mgnlmedia/src/main/resources/mgnl-bootstrap/media-nooverwrite/config.modules.media.mediausedin.website.xml 2010-05-12 10:21:41 UTC (rev 2406) @@ -9,9 +9,18 @@ <sv:property sv:name="jcr:uuid" sv:type="String"> <sv:value>94462ffe-1a8b-4f93-955b-c6ec40c65c89</sv:value> </sv:property> + <sv:property sv:name="basePath" sv:type="String"> + <sv:value>/</sv:value> + </sv:property> <sv:property sv:name="nodeType" sv:type="String"> <sv:value>mgnl:content</sv:value> </sv:property> + <sv:property sv:name="propertyName" sv:type="String"> + <sv:value>.</sv:value> + </sv:property> + <sv:property sv:name="workspaceName" sv:type="String"> + <sv:value>website</sv:value> + </sv:property> <sv:node sv:name="MetaData"> <sv:property sv:name="jcr:primaryType" sv:type="Name"> <sv:value>mgnl:metaData</sv:value> @@ -23,7 +32,7 @@ <sv:value>2010-05-12T09:59:19.343+02:00</sv:value> </sv:property> <sv:property sv:name="mgnl:lastmodified" sv:type="Date"> - <sv:value>2010-05-12T09:59:44.343+02:00</sv:value> + <sv:value>2010-05-12T12:10:08.671+02:00</sv:value> </sv:property> </sv:node> </sv:node> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |