Package org.infoglue.cms.applications.structuretool.actions

Source Code of org.infoglue.cms.applications.structuretool.actions.UnpublishSiteNodeVersionAction

/* ===============================================================================
*
* Part of the InfoGlue SiteNode Management Platform (www.infoglue.org)
*
* ===============================================================================
*
*  Copyright (C)
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2, as published by the
* Free Software Foundation. See the file LICENSE.html for more information.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY, including 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, write to the Free Software Foundation, Inc. / 59 Temple
* Place, Suite 330 / Boston, MA 02111-1307 / USA.
*
* ===============================================================================
*/

package org.infoglue.cms.applications.structuretool.actions;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;
import org.infoglue.cms.applications.common.actions.InfoGlueAbstractAction;
import org.infoglue.cms.applications.databeans.LinkBean;
import org.infoglue.cms.applications.databeans.ProcessBean;
import org.infoglue.cms.controllers.kernel.impl.simple.AccessRightController;
import org.infoglue.cms.controllers.kernel.impl.simple.ContentController;
import org.infoglue.cms.controllers.kernel.impl.simple.ContentStateController;
import org.infoglue.cms.controllers.kernel.impl.simple.ContentVersionController;
import org.infoglue.cms.controllers.kernel.impl.simple.EventController;
import org.infoglue.cms.controllers.kernel.impl.simple.PublicationController;
import org.infoglue.cms.controllers.kernel.impl.simple.SiteNodeController;
import org.infoglue.cms.controllers.kernel.impl.simple.SiteNodeStateController;
import org.infoglue.cms.controllers.kernel.impl.simple.SiteNodeVersionController;
import org.infoglue.cms.controllers.kernel.impl.simple.SiteNodeVersionControllerProxy;
import org.infoglue.cms.entities.content.ContentVO;
import org.infoglue.cms.entities.content.ContentVersion;
import org.infoglue.cms.entities.content.ContentVersionVO;
import org.infoglue.cms.entities.publishing.PublicationVO;
import org.infoglue.cms.entities.structure.SiteNodeVO;
import org.infoglue.cms.entities.structure.SiteNodeVersion;
import org.infoglue.cms.entities.structure.SiteNodeVersionVO;
import org.infoglue.cms.entities.workflow.EventVO;
import org.infoglue.cms.exception.AccessConstraintException;
import org.infoglue.cms.util.AccessConstraintExceptionBuffer;

/**
*
* @author Mattias Bogeblad
*
* Present a list of siteNodeVersion under a given siteNode, recursing down in the hierarcy
*
*/

public class UnpublishSiteNodeVersionAction extends InfoGlueAbstractAction
{
    private final static Logger logger = Logger.getLogger(UnpublishSiteNodeVersionAction.class.getName());

  private List<SiteNodeVersionVO> siteNodeVersionVOList = new ArrayList<SiteNodeVersionVO>();
  private List siteNodeVOList = new ArrayList();
  private Integer siteNodeId;
  private Integer siteNodeVersionId;
  private Integer repositoryId;

  private List siteNodeVersionIdList = new ArrayList();
  private Integer stateId;
  private Integer languageId;
  private String versionComment;
  private String attemptDirectPublishing = "false";
    private String originalAddress;
  private String returnAddress;
     private String userSessionKey;
     private String recipientFilter = null;
  private Boolean unpublishAll = true;
 

  public String doInput() throws Exception
  {
    if(this.siteNodeId != null)
    {
        SiteNodeVO siteNodeVO = SiteNodeController.getController().getSiteNodeVOWithId(this.siteNodeId);
        this.repositoryId = siteNodeVO.getRepositoryId();
       
      if(this.siteNodeVersionId == null)
      {
          SiteNodeVersionVO siteNodeVersionVO = SiteNodeVersionControllerProxy.getSiteNodeVersionControllerProxy().getACLatestActiveSiteNodeVersionVO(this.getInfoGluePrincipal(), siteNodeId);
          if(siteNodeVersionVO != null)
              this.siteNodeVersionId = siteNodeVersionVO.getId();
      }

      AccessConstraintExceptionBuffer ceb = new AccessConstraintExceptionBuffer();
   
      Integer protectedSiteNodeVersionId = SiteNodeVersionControllerProxy.getSiteNodeVersionControllerProxy().getProtectedSiteNodeVersionId(siteNodeVersionId);
      if(protectedSiteNodeVersionId != null && !AccessRightController.getController().getIsPrincipalAuthorized(this.getInfoGluePrincipal(), "SiteNodeVersion.SubmitToPublish", protectedSiteNodeVersionId.toString()))
        ceb.add(new AccessConstraintException("SiteNodeVersion.siteNodeId", "1005"));
     
      ceb.throwIfNotEmpty();

      //siteNodeVersionVOList = SiteNodeVersionController.getController().getSiteNodeVersionVOWithParentRecursive(siteNodeId, SiteNodeVersionVO.PUBLISHED_STATE);
      siteNodeVersionVOList = SiteNodeVersionController.getController().getPublishedSiteNodeVersionVOWithParentRecursive(siteNodeId);

    }

      return "input";
  }
 
  public String doInputChooseSiteNodes() throws Exception
  {
    ProcessBean processBean = ProcessBean.createProcessBean(UnpublishSiteNodeVersionAction.class.getName(), "" + siteNodeId + "_" + getInfoGluePrincipal().getName());
    processBean.setStatus(ProcessBean.RUNNING);
   
    try
    {
    if(this.siteNodeId != null)
    {
        SiteNodeVO siteNodeVO = SiteNodeController.getController().getSiteNodeVOWithId(this.siteNodeId);
        this.repositoryId = siteNodeVO.getRepositoryId();

      if(this.siteNodeVersionId == null)
      {
          SiteNodeVersionVO siteNodeVersionVO = SiteNodeVersionControllerProxy.getSiteNodeVersionControllerProxy().getACLatestActiveSiteNodeVersionVO(this.getInfoGluePrincipal(), siteNodeId);
          if(siteNodeVersionVO != null)
              this.siteNodeVersionId = siteNodeVersionVO.getId();
      }

      AccessConstraintExceptionBuffer ceb = new AccessConstraintExceptionBuffer();
     
      Integer protectedSiteNodeVersionId = SiteNodeVersionControllerProxy.getSiteNodeVersionControllerProxy().getProtectedSiteNodeVersionId(siteNodeVersionId);
      if(protectedSiteNodeVersionId != null && !AccessRightController.getController().getIsPrincipalAuthorized(this.getInfoGluePrincipal(), "SiteNodeVersion.SubmitToPublish", protectedSiteNodeVersionId.toString()))
        ceb.add(new AccessConstraintException("SiteNodeVersion.siteNodeId", "1005"));
     
      ceb.throwIfNotEmpty();

      siteNodeVOList = SiteNodeController.getController().getSiteNodeVOWithParentRecursive(siteNodeId, processBean);
    }
    }
    finally
    {
      processBean.setStatus(ProcessBean.FINISHED);
      processBean.removeProcess();
    }

      return "inputChooseSiteNodes";
  }

  public String doInputChooseSiteNodesV3() throws Exception
  {
    doInputChooseSiteNodes();

        userSessionKey = "" + System.currentTimeMillis();
       
        addActionLink(userSessionKey, new LinkBean("currentPageUrl", getLocalizedString(getLocale(), "tool.common.publishing.publishingInlineOperationBackToCurrentPageLinkText"), getLocalizedString(getLocale(), "tool.common.publishing.publishingInlineOperationBackToCurrentPageTitleText"), getLocalizedString(getLocale(), "tool.common.publishing.publishingInlineOperationBackToCurrentPageTitleText"), this.originalAddress, false, ""));
       
        setActionExtraData(userSessionKey, "repositoryId", "" + this.repositoryId);
        setActionExtraData(userSessionKey, "siteNodeId", "" + this.siteNodeId);
        //setActionExtraData(userSessionKey, "siteNodeName", "" + siteNodeVersionVO);
        setActionExtraData(userSessionKey, "unrefreshedSiteNodeId", "" + this.siteNodeId);
        setActionExtraData(userSessionKey, "unrefreshedNodeId", "" + this.siteNodeId);
        setActionExtraData(userSessionKey, "changeTypeId", "1");

        setActionExtraData(userSessionKey, "disableCloseLink", "true");

      return "inputChooseSiteNodesV3";
  }

  /**
   * This method gets called when calling this action.
   * If the stateId is 2 which equals that the user tries to prepublish the page. If so we
   * ask the user for a comment as this is to be regarded as a new version.
   */
    
    public String doExecute() throws Exception
    {  
    setSiteNodeVersionIdList( getRequest().getParameterValues("sel") );
   
    Map<Integer,SiteNodeVO> siteNodeMap = SiteNodeController.getController().getSiteNodeVOMapWithNoStateCheck(getSiteNodeVersionIdList());
    Map<Integer,ContentVO> contentMap = new HashMap<Integer,ContentVO>();

    Iterator it = getSiteNodeVersionIdList().iterator();
   
    List events = new ArrayList();
    while(it.hasNext())
    {
      Integer siteNodeVersionId = (Integer)it.next();
      SiteNodeVersionVO siteNodeVersionVO = SiteNodeVersionController.getController().getFullSiteNodeVersionVOWithId(siteNodeVersionId);

      SiteNodeVersionVO latestSiteNodeVersionVO = SiteNodeVersionController.getController().getLatestActiveSiteNodeVersionVO(siteNodeVersionVO.getSiteNodeId());
      SiteNodeVO siteNodeVO = siteNodeMap.get(siteNodeVersionVO.getId());
      if(siteNodeVO == null)
        siteNodeVO = SiteNodeController.getController().getSiteNodeVOWithId(siteNodeVersionVO.getSiteNodeId());
     
      if(attemptDirectPublishing.equals("true"))
      {
        if(siteNodeVersionVO.getId().equals(latestSiteNodeVersionVO.getId()))
        {
          logger.info("Creating a new working version as there was no active working version left...");
          SiteNodeStateController.getController().changeState(siteNodeVersionVO.getId(), siteNodeVO, SiteNodeVersionVO.WORKING_STATE, "new working version", false, this.getInfoGluePrincipal(), events);
        }
      }
     
      EventVO eventVO = new EventVO();
      eventVO.setDescription(this.versionComment);
      eventVO.setEntityClass(SiteNodeVersion.class.getName());
      eventVO.setEntityId(siteNodeVersionId);
      eventVO.setName(siteNodeVersionVO.getSiteNodeName());
      eventVO.setTypeId(EventVO.UNPUBLISH_LATEST);
      eventVO = EventController.create(eventVO, this.repositoryId, this.getInfoGluePrincipal());
      events.add(eventVO);
     
      List contentVersionVOList = SiteNodeVersionController.getController().getMetaInfoContentVersionVOList(siteNodeVersionVO, siteNodeVO, this.getInfoGluePrincipal());
      Iterator contentVersionVOListIterator = contentVersionVOList.iterator();
      while(contentVersionVOListIterator.hasNext())
      {
          ContentVersionVO currentContentVersionVO = (ContentVersionVO)contentVersionVOListIterator.next();
         
        ContentVersionVO latestContentVersionVO = ContentVersionController.getContentVersionController().getLatestActiveContentVersionVO(currentContentVersionVO.getContentId(), currentContentVersionVO.getLanguageId());
        ContentVO contentVO = ContentController.getContentController().getContentVOWithId(currentContentVersionVO.getContentId());
        if(attemptDirectPublishing.equals("true"))
        {
          if(currentContentVersionVO.getId().equals(latestContentVersionVO.getId()))
          {
            logger.info("Creating a new working version as there was no active working version left...:" + currentContentVersionVO.getLanguageName());
            ContentStateController.changeState(currentContentVersionVO.getId(), ContentVersionVO.WORKING_STATE, "new working version", false, null, this.getInfoGluePrincipal(), currentContentVersionVO.getContentId(), events);
          }
        }
       
        EventVO versionEventVO = new EventVO();
        versionEventVO.setDescription(this.versionComment);
        versionEventVO.setEntityClass(ContentVersion.class.getName());
        versionEventVO.setEntityId(currentContentVersionVO.getId());
        versionEventVO.setName(contentVO.getName());
        versionEventVO.setTypeId(EventVO.UNPUBLISH_LATEST);
        versionEventVO = EventController.create(versionEventVO, this.repositoryId, this.getInfoGluePrincipal());
        events.add(versionEventVO);         
      }
    }
   
    if(!attemptDirectPublishing.equalsIgnoreCase("true"))
    {
      if(recipientFilter != null && !recipientFilter.equals("") && events != null && events.size() > 0)
        PublicationController.mailPublishNotification(events, repositoryId, getInfoGluePrincipal(), recipientFilter, true);
    }

    if(attemptDirectPublishing.equalsIgnoreCase("true"))
    {
        PublicationVO publicationVO = new PublicationVO();
        publicationVO.setName("Direct publication by " + this.getInfoGluePrincipal().getName());
        publicationVO.setDescription(getVersionComment());
        //publicationVO.setPublisher(this.getInfoGluePrincipal().getName());
        publicationVO.setRepositoryId(repositoryId);
        publicationVO = PublicationController.getController().createAndPublish(publicationVO, events, siteNodeMap, contentMap, false, this.getInfoGluePrincipal());
    }
   
         return "success";
    }

  /**
   * This method will try to unpublish all liver versions of this sitenode.
   */
    
    public String doUnpublishAll() throws Exception
    {  
      ProcessBean processBean = ProcessBean.createProcessBean(UnpublishSiteNodeVersionAction.class.getName(), "" + getInfoGluePrincipal().getName());
    processBean.setStatus(ProcessBean.RUNNING);

    try
    {
      String[] siteNodeIds = getRequest().getParameterValues("sel");
 
      List<EventVO> events = new ArrayList<EventVO>();
 
      List<Integer> siteNodeVersionIdList = new ArrayList<Integer>();
      for(int i=0; i < siteNodeIds.length; i++)
        siteNodeVersionIdList.add(new Integer(siteNodeIds[i]));
 
      Map<Integer,SiteNodeVO> siteNodeMap = SiteNodeController.getController().getSiteNodeVOMapWithNoStateCheck(siteNodeVersionIdList);
      Map<Integer,ContentVO> contentMap = new HashMap<Integer,ContentVO>();
 
      processBean.updateProcess("Found " + siteNodeMap.size() + " pages");

      //System.out.println("Read all siteNodes:" + siteNodeMap);
 
      /*
      for(Entry<Integer,SiteNodeVO> entry : siteNodeMap.entrySet())
      {
        Integer siteNodeVersionId = entry.getKey();
        logger.info("Publishing:" + siteNodeVersionId);
        SiteNodeVersionVO siteNodeVersion = SiteNodeStateController.getController().changeState(siteNodeVersionId, entry.getValue(), SiteNodeVersionVO.PUBLISH_STATE, getVersionComment(), this.overrideVersionModifyer, this.recipientFilter, this.getInfoGluePrincipal(), events);
      }
      */
 
      processBean.updateProcess("Processing " + siteNodeIds.length + " pages");
     
          for(int i=0; i < siteNodeIds.length; i++)
      {
            if (i % 10 == 0)
              processBean.updateLastDescription("Unpublished " + i + " pages");

              String siteNodeIdString = siteNodeIds[i];
            List siteNodeVersionVOList = SiteNodeVersionController.getController().getPublishedActiveSiteNodeVersionVOList(new Integer(siteNodeIdString));
           
        Iterator it = siteNodeVersionVOList.iterator();
       
        while(it.hasNext())
        {
          SiteNodeVersionVO siteNodeVersionVO = (SiteNodeVersionVO)it.next();
         
          SiteNodeVersionVO latestSiteNodeVersionVO = SiteNodeVersionController.getController().getLatestActiveSiteNodeVersionVO(siteNodeVersionVO.getSiteNodeId());
          //SiteNodeVO siteNodeVO = siteNodeMap.get(siteNodeVersionVO.getId());
          //if(siteNodeVO == null)
          SiteNodeVO siteNodeVO = SiteNodeController.getController().getSiteNodeVOWithId(siteNodeVersionVO.getSiteNodeId());
         
          if(attemptDirectPublishing.equals("true"))
          {
            if(siteNodeVersionVO.getId().equals(latestSiteNodeVersionVO.getId()))
            {
              logger.info("Creating a new working version as there was no active working version left...");
              SiteNodeVersionVO newSiteNodeVersionVO = SiteNodeStateController.getController().changeState(siteNodeVersionVO.getId(), siteNodeVO, SiteNodeVersionVO.WORKING_STATE, "new working version", false, this.getInfoGluePrincipal(), events);
              siteNodeMap.put(newSiteNodeVersionVO.getId(), siteNodeVO);
            }
          }
         
          EventVO eventVO = new EventVO();
          eventVO.setDescription(this.versionComment);
          eventVO.setEntityClass(SiteNodeVersion.class.getName());
          eventVO.setEntityId(siteNodeVersionVO.getId());
          eventVO.setName(siteNodeVO.getName());
          eventVO.setTypeId(EventVO.UNPUBLISH_LATEST);
          eventVO = EventController.create(eventVO, this.repositoryId, this.getInfoGluePrincipal());
          events.add(eventVO);
         
          List contentVersionVOList = SiteNodeVersionController.getController().getMetaInfoContentVersionVOList(siteNodeVersionVO, siteNodeVO, this.getInfoGluePrincipal());
          Iterator contentVersionVOListIterator = contentVersionVOList.iterator();
          while(contentVersionVOListIterator.hasNext())
          {
              ContentVersionVO currentContentVersionVO = (ContentVersionVO)contentVersionVOListIterator.next();
             
            ContentVersionVO latestContentVersionVO = ContentVersionController.getContentVersionController().getLatestActiveContentVersionVO(currentContentVersionVO.getContentId(), currentContentVersionVO.getLanguageId());
            ContentVO contentVO = ContentController.getContentController().getContentVOWithId(currentContentVersionVO.getContentId());
            contentMap.put(currentContentVersionVO.getId(), contentVO);
            if(attemptDirectPublishing.equals("true"))
            {
              if(currentContentVersionVO.getId().equals(latestContentVersionVO.getId()))
              {
                logger.info("Creating a new working version as there was no active working version left...:" + currentContentVersionVO.getLanguageName());
                ContentStateController.changeState(currentContentVersionVO.getId(), contentVO, ContentVersionVO.WORKING_STATE, "new working version", false, null, this.getInfoGluePrincipal(), currentContentVersionVO.getContentId(), events);
              }
             
              EventVO versionEventVO = new EventVO();
              versionEventVO.setDescription(this.versionComment);
              versionEventVO.setEntityClass(ContentVersion.class.getName());
              versionEventVO.setEntityId(currentContentVersionVO.getId());
              versionEventVO.setName(contentVO.getName());
              versionEventVO.setTypeId(EventVO.UNPUBLISH_LATEST);
              versionEventVO = EventController.create(versionEventVO, this.repositoryId, this.getInfoGluePrincipal());
              events.add(versionEventVO);         
            }
          }
        }
      }
     
      if(!attemptDirectPublishing.equalsIgnoreCase("true"))
      {
        if(recipientFilter != null && !recipientFilter.equals("") && events != null && events.size() > 0)
          PublicationController.mailPublishNotification(events, repositoryId, getInfoGluePrincipal(), recipientFilter, true);
      }

      if(attemptDirectPublishing.equalsIgnoreCase("true"))
      {
          PublicationVO publicationVO = new PublicationVO();
          publicationVO.setName("Direct publication by " + this.getInfoGluePrincipal().getName());
          publicationVO.setDescription(getVersionComment());
          //publicationVO.setPublisher(this.getInfoGluePrincipal().getName());
          publicationVO.setRepositoryId(repositoryId);
          publicationVO = PublicationController.getController().createAndPublish(publicationVO, events, siteNodeMap, contentMap, false, this.getInfoGluePrincipal());
      }
    }
    finally
    {
      processBean.setStatus(ProcessBean.FINISHED);
      processBean.removeProcess();
    }
   
    if(this.returnAddress != null && !this.returnAddress.equals(""))
        {
          String arguments   = "userSessionKey=" + userSessionKey + "&attemptDirectPublishing=" + attemptDirectPublishing + "&isAutomaticRedirect=false";
          String messageUrl   = returnAddress + (returnAddress.indexOf("?") > -1 ? "&" : "?") + arguments;
         
          this.getResponse().sendRedirect(messageUrl);
          return NONE;
        }
        else
        {
          return "success";
        }
    }


  /**
   * This method will try to unpublish latest live versions of this sitenode.
   */
    
    public String doUnpublishLatest() throws Exception
    {  
      ProcessBean processBean = ProcessBean.createProcessBean(UnpublishSiteNodeVersionAction.class.getName(), "" + getInfoGluePrincipal().getName());
    processBean.setStatus(ProcessBean.RUNNING);

    try
    {
      String[] siteNodeIds = getRequest().getParameterValues("sel");
 
      List<EventVO> events = new ArrayList<EventVO>();
 
      List<Integer> siteNodeVersionIdList = new ArrayList<Integer>();
      for(int i=0; i < siteNodeIds.length; i++)
        siteNodeVersionIdList.add(new Integer(siteNodeIds[i]));
 
      Map<Integer,SiteNodeVO> siteNodeMap = SiteNodeController.getController().getSiteNodeVOMapWithNoStateCheck(siteNodeVersionIdList);
      Map<Integer,ContentVO> contentMap = new HashMap<Integer,ContentVO>();
 
      processBean.updateProcess("Found " + siteNodeMap.size() + " pages")
      processBean.updateProcess("Processing " + siteNodeIds.length + " pages");
     
          for(int i=0; i < siteNodeIds.length; i++)
      {
            if (i % 10 == 0)
              processBean.updateLastDescription("Unpublished " + i + " pages");

              String siteNodeIdString = siteNodeIds[i];
              SiteNodeVersionVO siteNodeVersionVO = SiteNodeVersionController.getController().getLatestPublishedSiteNodeVersionVO(new Integer(siteNodeIdString));

              SiteNodeVersionVO latestSiteNodeVersionVO = SiteNodeVersionController.getController().getLatestActiveSiteNodeVersionVO(siteNodeVersionVO.getSiteNodeId());
        //SiteNodeVO siteNodeVO = siteNodeMap.get(siteNodeVersionVO.getId());
        //if(siteNodeVO == null)
        SiteNodeVO siteNodeVO = SiteNodeController.getController().getSiteNodeVOWithId(siteNodeVersionVO.getSiteNodeId());
       
        if(attemptDirectPublishing.equals("true"))
        {
          if(siteNodeVersionVO.getId().equals(latestSiteNodeVersionVO.getId()))
          {
            logger.info("Creating a new working version as there was no active working version left...");
            SiteNodeVersionVO newSiteNodeVersionVO = SiteNodeStateController.getController().changeState(siteNodeVersionVO.getId(), siteNodeVO, SiteNodeVersionVO.WORKING_STATE, "new working version", false, this.getInfoGluePrincipal(), events);
            siteNodeMap.put(newSiteNodeVersionVO.getId(), siteNodeVO);
          }
        }
       
        EventVO eventVO = new EventVO();
        eventVO.setDescription(this.versionComment);
        eventVO.setEntityClass(SiteNodeVersion.class.getName());
        eventVO.setEntityId(siteNodeVersionVO.getId());
        eventVO.setName(siteNodeVO.getName());
        eventVO.setTypeId(EventVO.UNPUBLISH_LATEST);
        eventVO = EventController.create(eventVO, this.repositoryId, this.getInfoGluePrincipal());
        events.add(eventVO);
       
        List contentVersionVOList = SiteNodeVersionController.getController().getMetaInfoContentVersionVOList(siteNodeVersionVO, siteNodeVO, this.getInfoGluePrincipal());
        Iterator contentVersionVOListIterator = contentVersionVOList.iterator();
        while(contentVersionVOListIterator.hasNext())
        {
            ContentVersionVO currentContentVersionVO = (ContentVersionVO)contentVersionVOListIterator.next();
           
          ContentVersionVO latestContentVersionVO = ContentVersionController.getContentVersionController().getLatestActiveContentVersionVO(currentContentVersionVO.getContentId(), currentContentVersionVO.getLanguageId());
          ContentVO contentVO = ContentController.getContentController().getContentVOWithId(currentContentVersionVO.getContentId());
          contentMap.put(currentContentVersionVO.getId(), contentVO);
          if(attemptDirectPublishing.equals("true"))
          {
            if(currentContentVersionVO.getId().equals(latestContentVersionVO.getId()))
            {
              logger.info("Creating a new working version as there was no active working version left...:" + currentContentVersionVO.getLanguageName());
              ContentStateController.changeState(currentContentVersionVO.getId(), contentVO, ContentVersionVO.WORKING_STATE, "new working version", false, null, this.getInfoGluePrincipal(), currentContentVersionVO.getContentId(), events);
            }
           
            EventVO versionEventVO = new EventVO();
            versionEventVO.setDescription(this.versionComment);
            versionEventVO.setEntityClass(ContentVersion.class.getName());
            versionEventVO.setEntityId(currentContentVersionVO.getId());
            versionEventVO.setName(contentVO.getName());
            versionEventVO.setTypeId(EventVO.UNPUBLISH_LATEST);
            versionEventVO = EventController.create(versionEventVO, this.repositoryId, this.getInfoGluePrincipal());
            events.add(versionEventVO);         
          }
        }
      }

     
      if(!attemptDirectPublishing.equalsIgnoreCase("true"))
      {
        if(recipientFilter != null && !recipientFilter.equals("") && events != null && events.size() > 0)
          PublicationController.mailPublishNotification(events, repositoryId, getInfoGluePrincipal(), recipientFilter, true);
      }

      if(attemptDirectPublishing.equalsIgnoreCase("true"))
      {
          PublicationVO publicationVO = new PublicationVO();
          publicationVO.setName("Direct publication by " + this.getInfoGluePrincipal().getName());
          publicationVO.setDescription(getVersionComment());
          //publicationVO.setPublisher(this.getInfoGluePrincipal().getName());
          publicationVO.setRepositoryId(repositoryId);
          publicationVO = PublicationController.getController().createAndPublish(publicationVO, events, siteNodeMap, contentMap, false, this.getInfoGluePrincipal());
      }
    }
    finally
    {
      processBean.setStatus(ProcessBean.FINISHED);
      processBean.removeProcess();
    }
   
    if(this.returnAddress != null && !this.returnAddress.equals(""))
        {
          String arguments   = "userSessionKey=" + userSessionKey + "&attemptDirectPublishing=" + attemptDirectPublishing + "&isAutomaticRedirect=false";
          String messageUrl   = returnAddress + (returnAddress.indexOf("?") > -1 ? "&" : "?") + arguments;
         
          this.getResponse().sendRedirect(messageUrl);
          return NONE;
        }
        else
        {
          return "success";
        }
    }

  public List getSiteNodeVersions()
  {
    return this.siteNodeVersionVOList;   
  }

  public List getSiteNodes()
  {
    return this.siteNodeVOList;   
  }

  public Integer getSiteNodeId()
  {
    return siteNodeId;
  }

  public void setSiteNodeId(Integer siteNodeId)
  {
    this.siteNodeId = siteNodeId;
  }

    public Integer getRepositoryId()
    {
        return repositoryId;
    }
   
    public java.lang.Integer getLanguageId()
    {
        return this.languageId;
    }
       
    public void setLanguageId(Integer languageId)
    {
      this.languageId = languageId;
    }
                 
  public void setStateId(Integer stateId)
  {
    this.stateId = stateId;
  }

  public void setVersionComment(String versionComment)
  {
    this.versionComment = versionComment;
  }
 
  public String getVersionComment()
  {
    return this.versionComment;
  }
 
  public Integer getStateId()
  {
    return this.stateId;
  }
   
  public SiteNodeVersionVO getLatestSiteNodeVersion(SiteNodeVO siteNode) throws Exception
  {
    return SiteNodeVersionController.getController().getLatestPublishedSiteNodeVersionVO(siteNode.getId());
  }
 
  /**
   * @return
   */
  public List getSiteNodeVersionIdList()
  {
    return siteNodeVersionIdList;
  }

  /**
   * @param list
   */
  private void setSiteNodeVersionIdList(String[] list)
  {
    if(list != null)
    {
        for(int i=0; i < list.length; i++)
      {
        siteNodeVersionIdList.add(new Integer(list[i]));
      }   
    }
  }

  public void setAttemptDirectPublishing(String attemptDirectPublishing)
    {
        this.attemptDirectPublishing = attemptDirectPublishing;
    }
   
    public void setRepositoryId(Integer repositoryId)
    {
        this.repositoryId = repositoryId;
    }
   
    public Integer getSiteNodeVersionId()
    {
        return siteNodeVersionId;
    }
   
    public void setSiteNodeVersionId(Integer siteNodeVersionId)
    {
        this.siteNodeVersionId = siteNodeVersionId;
    }
   
  public String getOriginalAddress()
  {
    return originalAddress;
  }

  public void setOriginalAddress(String originalAddress)
  {
    this.originalAddress = originalAddress;
  }

  public String getReturnAddress()
  {
    return returnAddress;
  }

  public void setReturnAddress(String returnAddress)
  {
    this.returnAddress = returnAddress;
  }

  public String getUserSessionKey()
  {
    return userSessionKey;
  }

  public void setUserSessionKey(String userSessionKey)
  {
    this.userSessionKey = userSessionKey;
  }

  public ProcessBean getProcessBean()
  {
    return ProcessBean.getProcessBean(UnpublishSiteNodeVersionAction.class.getName(), "" + getInfoGluePrincipal().getName());
  }

  public String getStatusAsJSON()
  {
    StringBuffer sb = new StringBuffer();
    sb.append("<html><body>");
   
    try
    {
      ProcessBean processBean = getProcessBean();
      if(processBean != null && processBean.getStatus() != ProcessBean.FINISHED)
      {
        sb.append("<h2>" + getLocalizedString(getLocale(), "tool.structuretool.publicationProcess.publicationProcessInfo") + "</h2>");

        sb.append("<ol>");
        for(String event : processBean.getProcessEvents())
          sb.append("<li>" + event + "</li>");
        sb.append("</ol>");
        sb.append("<div style='text-align: center'><img src='images/loading.gif' /></div>");
      }
      else
      {
        sb.append("<script type='text/javascript'>hideProcessStatus();</script>");
      }
    }
    catch (Throwable t)
    {
      logger.error("Error when generating repository export status report as JSON.", t);
      sb.append(t.getMessage());
    }
    sb.append("</body></html>");
       
    return sb.toString();
  }
 
  public String doShowProcessesAsJSON() throws Exception
  {
    return "successShowProcessesAsJSON";
  }

  public String getRecipientFilter()
  {
    return recipientFilter;
  }

  public void setRecipientFilter(String recipientFilter)
  {
    this.recipientFilter = recipientFilter;
  }

  /**
   * @return the unpublishAll
   */
  public Boolean getUnpublishAll() {
    return unpublishAll;
  }

  /**
   * @param unpublishAll the unpublishAll to set
   */
  public void setUnpublishAll(Boolean unpublishAll) {
    this.unpublishAll = unpublishAll;
  }
}
TOP

Related Classes of org.infoglue.cms.applications.structuretool.actions.UnpublishSiteNodeVersionAction

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.