PermlinkActionComponent.java
/***************************************************************************
* Copyright (C) 2003-2009 eXo Platform SAS.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see<http://www.gnu.org/licenses/>.
*
**************************************************************************/
package org.exoplatform.ecm.webui.component.explorer.rightclick.manager;
import java.util.Arrays;
import java.util.List;
import javax.jcr.Node;
import org.exoplatform.ecm.webui.component.explorer.UIJCRExplorer;
import org.exoplatform.ecm.webui.component.explorer.control.filter.IsDocumentFilter;
import org.exoplatform.ecm.webui.component.explorer.control.filter.IsNotInTrashFilter;
import org.exoplatform.portal.application.PortalRequestContext;
import org.exoplatform.portal.webui.util.Util;
import org.exoplatform.web.url.navigation.NavigationResource;
import org.exoplatform.web.url.navigation.NodeURL;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.core.lifecycle.UIContainerLifecycle;
import org.exoplatform.webui.ext.filter.UIExtensionFilter;
import org.exoplatform.webui.ext.filter.UIExtensionFilters;
import org.exoplatform.webui.ext.manager.UIAbstractManager;
import org.exoplatform.webui.ext.manager.UIAbstractManagerComponent;
/**
* Created by The eXo Platform SARL Author : Hoang Van Hung hunghvit@gmail.com
* Aug 6, 2009
*/
@ComponentConfig(
lifecycle = UIContainerLifecycle.class
)
public class PermlinkActionComponent extends UIAbstractManagerComponent {
private static final List<UIExtensionFilter> FILTERS = Arrays.asList(new UIExtensionFilter[] {
new IsNotInTrashFilter(), new IsDocumentFilter() });
@UIExtensionFilters
public List<UIExtensionFilter> getFilters() {
return FILTERS;
}
public String getPermlink(UIJCRExplorer uiExplorer, Node node) throws Exception {
if (uiExplorer == null) {
uiExplorer = getAncestorOfType(UIJCRExplorer.class);
}
if (node == null) {
node = uiExplorer.getCurrentNode();
}
PortalRequestContext pcontext = Util.getPortalRequestContext();
String portletId = pcontext.getNodePath();
String drivename = uiExplorer.getDriveData().getName();
String nodePath = node.getPath().replaceAll("/+", "/");
String path = new StringBuilder().append(drivename)
.append(nodePath)
.toString();
NodeURL nodeURL = Util.getPortalRequestContext().createURL(NodeURL.TYPE);
NavigationResource resource = new NavigationResource(pcontext.getSiteType(), pcontext.getSiteName(), portletId);
nodeURL.setResource(resource);
nodeURL.setQueryParameterValue("path", path);
return nodeURL.toString();
}
public String getPermlink(UIJCRExplorer uiExplorer) throws Exception {
return getPermlink(uiExplorer, null);
}
public String getPermlink(Node node) throws Exception {
return getPermlink(null, node);
}
public String getPermlink() throws Exception {
return getPermlink(null, null);
}
@Override
public Class<? extends UIAbstractManager> getUIAbstractManagerClass() {
return null;
}
}