Package org.jibeframework.contentmanager.controller

Source Code of org.jibeframework.contentmanager.controller.NodeController

package org.jibeframework.contentmanager.controller;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;

import org.alfresco.model.ContentModel;
import org.alfresco.service.ServiceRegistry;
import org.alfresco.service.cmr.lock.LockStatus;
import org.alfresco.service.cmr.repository.FileTypeImageSize;
import org.alfresco.service.cmr.repository.NodeRef;
import org.jibeframework.alfresco.node.CMContent;
import org.jibeframework.alfresco.node.CMFolder;
import org.jibeframework.alfresco.node.CMObject;
import org.jibeframework.alfresco.service.RepositoryService;
import org.jibeframework.alfresco.util.AlfrescoUtil;
import org.jibeframework.core.Context;
import org.jibeframework.core.annotation.Progress;
import org.jibeframework.core.annotation.Remote;
import org.jibeframework.core.app.method.ArgumentsResolver;
import org.jibeframework.core.app.method.RequestParamArgumentResolver;
import org.jibeframework.core.app.method.ArgumentsResolver.ArgumentCandidatesCache;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.context.ServletContextAware;

@Controller("repo.Node")
public class NodeController implements InitializingBean, ServletContextAware {

  @Autowired
  private ArgumentsResolver argumentsResolver;

  @Autowired
  private RepositoryService repositoryService;
  @Autowired
  private ServiceRegistry serviceRegistry;
  private ServletContext servletContext;

  @Progress("progress.repo.save")
  @Remote
  public void saveDocument(CMObject node) {
    // bindingService.bind(node, "repo.nodeProperties");

  }

  public final String getIcon(CMObject node) {
    boolean isFolder = node.isSubTypeOf(ContentModel.TYPE_FOLDER);
    HttpServletRequest request = Context.getCurrentContext().getServletRequest();
    if (!isFolder) {
      String fileTypeImage = AlfrescoUtil.getFileTypeImage(servletContext, node.getName(),
          FileTypeImageSize.Small);
      return request.getContextPath() + fileTypeImage;
    } else {
      return (request.getContextPath() + "/extjs/resources/images/default/tree/folder.gif");

    }
  }

  public boolean isContainer(CMObject node) {
    return node.isSubTypeOf(ContentModel.TYPE_FOLDER);
  }

  public String getRowType(CMObject node) {
    return node.isSubTypeOf(ContentModel.TYPE_FOLDER) ? "folder" : "document";
  }

  public boolean isMovable(CMObject node) {
    if (!node.isSubTypeOf(ContentModel.TYPE_FOLDER)) {
      if (node.hasAspect(ContentModel.ASPECT_LOCKABLE)) {
        LockStatus lockStatus = serviceRegistry.getLockService().getLockStatus(node.getNodeRef());
        if (lockStatus == LockStatus.LOCKED || lockStatus == LockStatus.LOCK_OWNER) {
          return false;
        }
      }
    }
    return node.hasPermission("Delete");
  }

  public void afterPropertiesSet() throws Exception {
    argumentsResolver.registerRequestParamResolver("folderId", new RequestParamArgumentResolver() {
      public void addToArgumentsCache(ArgumentCandidatesCache cache, Object paramValue) {
        if (paramValue != null) {
          CMFolder folder = repositoryService.fetch(CMFolder.class, new NodeRef((String) paramValue));
          cache.add(CMFolder.class, folder);
        }
      }
    });
    argumentsResolver.registerRequestParamResolver("contentId", new RequestParamArgumentResolver() {
      public void addToArgumentsCache(ArgumentCandidatesCache cache, Object paramValue) {
        if (paramValue != null) {
          CMContent content = repositoryService.fetch(CMContent.class, new NodeRef((String) paramValue));
          cache.add(CMContent.class, content);
        }
      }
    });
    argumentsResolver.registerRequestParamResolver("nodeId", new RequestParamArgumentResolver() {
      public void addToArgumentsCache(ArgumentCandidatesCache cache, Object paramValue) {
        if (paramValue != null) {
          CMObject node = repositoryService.fetch(CMObject.class, new NodeRef((String) paramValue));
          cache.add(CMObject.class, node);

        }
      }
    });
    argumentsResolver.registerRequestParamResolver("nodes", new RequestParamArgumentResolver() {
      @SuppressWarnings("unchecked")
      public void addToArgumentsCache(ArgumentCandidatesCache cache, Object paramValue) {
        if (paramValue != null) {
          List<CMObject> nodes = new ArrayList<CMObject>();
          for (String nr : (List<String>) paramValue) {
            nodes.add(repositoryService.fetch(CMObject.class, new NodeRef(nr)));
          }
          cache.add(List.class, new Class[] { CMObject.class }, nodes);

        }
      }
    });

  }

  public void setServletContext(ServletContext servletContext) {
    this.servletContext = servletContext;

  }

}
TOP

Related Classes of org.jibeframework.contentmanager.controller.NodeController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.