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

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

/* ===============================================================================
*
* Part of the InfoGlue Content 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.dom4j.Document;
import org.dom4j.Element;
import org.infoglue.cms.applications.common.actions.InfoGlueAbstractAction;
import org.infoglue.cms.controllers.kernel.impl.simple.RepositoryController;
import org.infoglue.cms.controllers.kernel.impl.simple.SiteNodeController;
import org.infoglue.cms.controllers.kernel.impl.simple.SiteNodeControllerProxy;
import org.infoglue.cms.entities.structure.SiteNodeVO;
import org.infoglue.cms.util.ConstraintExceptionBuffer;
import org.infoglue.cms.util.dom.DOMBuilder;

/**
* This action represents the CreateSiteNode Usecase.
*/

public class MoveMultipleSiteNodeAction extends InfoGlueAbstractAction
{

     //  Initial params
    private Integer originalSiteNodeId;
    private Integer repositoryId;
    private Integer siteNodeId;
    private Integer parentSiteNodeId;
    private List qualifyers = new ArrayList();
    private boolean errorsOccurred = false;
  protected List repositories = null;
  private Integer sortLanguageId;
   
    //Move params
    protected String qualifyerXML = null;
    private Integer newParentSiteNodeId;
   
    //Tree params
    private Integer changeTypeId;
    private Integer topSiteNodeId;

    private ConstraintExceptionBuffer ceb;
     private SiteNodeVO siteNodeVO;
    
    private Integer deliverLanguageId;

 
    public MoveMultipleSiteNodeAction()
  {
    this(new SiteNodeVO());
  }
 
  public MoveMultipleSiteNodeAction(SiteNodeVO siteNodeVO)
  {
    this.siteNodeVO = siteNodeVO;
    this.ceb = new ConstraintExceptionBuffer();
 

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

  public Integer getSiteNodeId()
  {
    return siteNodeVO.getSiteNodeId();
  }

  @SuppressWarnings("unchecked")
  public String doInput() throws Exception
  {
    this.repositories = RepositoryController.getController().getAuthorizedRepositoryVOList(this.getInfoGluePrincipal(), false);

    if(this.qualifyerXML != null && !this.qualifyerXML.equals(""))
    {
      this.qualifyers = parseSiteNodesFromXML(this.qualifyerXML);
    }
    else
    {
      SiteNodeVO siteNodeVO = SiteNodeController.getController().getSiteNodeVOWithId(getSiteNodeId());
      siteNodeVO.getExtraProperties().put("displayName", getLocalizedNameForSiteNode(siteNodeVO, sortLanguageId));
      this.qualifyers.add(siteNodeVO);
    }

    return "input";
  }

    public String doExecute() throws Exception
    {
        if(this.newParentSiteNodeId == null)
        {
        this.repositories = RepositoryController.getController().getAuthorizedRepositoryVOList(this.getInfoGluePrincipal(), false);
            return "chooseDestination";
        }
       
        ceb.throwIfNotEmpty();
     
        try
    {
            if(this.qualifyerXML != null && this.qualifyerXML.length() != 0)
        {
            Document document = new DOMBuilder().getDocument(this.qualifyerXML);
        List siteNodes = parseSiteNodesFromXML(this.qualifyerXML);
        Iterator i = siteNodes.iterator();
        while(i.hasNext())
        {
            SiteNodeVO siteNodeVO = (SiteNodeVO)i.next();
            try
          {                     
                SiteNodeControllerProxy.getSiteNodeControllerProxy().acMoveSiteNode(this.getInfoGluePrincipal(), siteNodeVO, this.newParentSiteNodeId, this.deliverLanguageId);
          }
          catch(Exception e)
          {
              this.errorsOccurred = true;
          }
          }
        }
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
   
    this.topSiteNodeId = SiteNodeController.getController().getRootSiteNodeVO(this.repositoryId).getId();
    this.siteNodeVO = getSiteNodeVO(this.newParentSiteNodeId);
   
        return "success";
    }

  @SuppressWarnings("unchecked")
  private List<SiteNodeVO> parseSiteNodesFromXML(String qualifyerXML)
  {
    List<SiteNodeVO> siteNodes = new ArrayList<SiteNodeVO>();

    try
    {
      Document document = new DOMBuilder().getDocument(qualifyerXML);
      String entity = document.getRootElement().attributeValue("entity");
      Map<String, SiteNodeVO> addedSiteNodes = new HashMap<String, SiteNodeVO>();
     
      List<Element> children = document.getRootElement().elements();
      Iterator<Element> i = children.iterator();
      while(i.hasNext())
      {
        Element child = i.next();
        String id = child.getStringValue();
       
        if(!addedSiteNodes.containsKey(id))
        {
          SiteNodeVO siteNodeVO = SiteNodeController.getController().getSiteNodeVOWithId(new Integer(id));
          siteNodeVO.getExtraProperties().put("displayName", getLocalizedNameForSiteNode(siteNodeVO, sortLanguageId));
          siteNodes.add(siteNodeVO);
          addedSiteNodes.put(id, siteNodeVO);
        }
      }
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }

    return siteNodes;
  }

    public Integer getChangeTypeId()
    {
        return changeTypeId;
    }
   
    public void setChangeTypeId(Integer changeTypeId)
    {
        this.changeTypeId = changeTypeId;
    }
   
    public Integer getNewParentSiteNodeId()
    {
        return newParentSiteNodeId;
    }
   
    public void setNewParentSiteNodeId(Integer newParentSiteNodeId)
    {
        this.newParentSiteNodeId = newParentSiteNodeId;
    }
   
    public Integer getOriginalSiteNodeId()
    {
        return originalSiteNodeId;
    }
   
    public void setOriginalSiteNodeId(Integer originalSiteNodeId)
    {
        this.originalSiteNodeId = originalSiteNodeId;
    }
   
    public Integer getParentSiteNodeId()
    {
        return parentSiteNodeId;
    }
   
    public void setParentSiteNodeId(Integer parentSiteNodeId)
    {
        this.parentSiteNodeId = parentSiteNodeId;
    }
   
    public String getQualifyerXML()
    {
        return qualifyerXML;
    }
   
    public void setQualifyerXML(String qualifyerXML)
    {
        this.qualifyerXML = qualifyerXML;
    }
   
    public Integer getRepositoryId()
    {
        return repositoryId;
    }
   
    public void setRepositoryId(Integer repositoryId)
    {
        this.repositoryId = repositoryId;
    }
   
    public Integer getTopSiteNodeId()
    {
        return topSiteNodeId;
    }
   
    public void setTopSiteNodeId(Integer topSiteNodeId)
    {
        this.topSiteNodeId = topSiteNodeId;
    }
   
    public boolean isErrorsOccurred()
    {
        return errorsOccurred;
    }
   
    public List getQualifyers()
    {
        return qualifyers;
    }
   
    public List getRepositories()
    {
        return repositories;
    }
   
    public SiteNodeVO getSiteNodeVO()
    {
        return siteNodeVO;
    }
   
  public Integer getDeliverLanguageId()
  {
    return deliverLanguageId;
  }
 
  public void setDeliverLanguageId(Integer deliverLanguageId)
  {
    this.deliverLanguageId = deliverLanguageId;
  }

  public Integer getSortLanguageId()
  {
    return sortLanguageId;
  }

  public void setSortLanguageId(Integer sortLanguageId)
  {
    this.sortLanguageId = sortLanguageId;
  }

}
TOP

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

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.