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

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

/* ===============================================================================
*
* 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.HashMap;
import java.util.Map;

import org.infoglue.cms.applications.common.VisualFormatter;
import org.infoglue.cms.controllers.kernel.impl.simple.SiteNodeController;
import org.infoglue.cms.controllers.kernel.impl.simple.SiteNodeVersionController;
import org.infoglue.cms.controllers.usecases.structuretool.UpdateSiteNodeUCC;
import org.infoglue.cms.controllers.usecases.structuretool.UpdateSiteNodeUCCFactory;
import org.infoglue.cms.entities.structure.SiteNodeVO;
import org.infoglue.cms.entities.structure.SiteNodeVersionVO;
import org.infoglue.cms.util.ChangeNotificationController;
import org.infoglue.cms.util.ConstraintExceptionBuffer;
import org.infoglue.cms.util.NotificationMessage;
import org.infoglue.cms.util.RemoteCacheUpdater;
import org.infoglue.deliver.util.CacheController;
import org.infoglue.deliver.util.Timer;

import com.opensymphony.module.propertyset.PropertySet;
import com.opensymphony.module.propertyset.PropertySetManager;

/**
  * This is the action-class for UpdateSiteNode
  *
  * @author Mattias Bogeblad
  */
public class UpdateSiteNodeAction extends ViewSiteNodeAction //WebworkAbstractAction
{
  private SiteNodeVO siteNodeVO;
  private Integer siteNodeId;
  private Integer repositoryId;
  private Integer siteNodeTypeDefinitionId;
    private String name;
    private Boolean isBranch;
   
  private Integer isProtected;
  private Boolean isHidden;
  private Integer disablePageCache;
  private Integer disableEditOnSight;
  private Integer disableLanguages;
  private Integer disableForceIdentityCheck;
  private Integer forceProtocolChange;
  private String contentType;
  private String pageCacheKey;
  private String pageCacheTimeout;

    private String actionUrl;
    private String targetTitle;
    private boolean updated = false;
    private String userSessionKey = null;
     private String inline = "false";
     private String advanced = "false";
     private String showPageLanguages = "false";

  private ConstraintExceptionBuffer ceb;
 
  public UpdateSiteNodeAction()
  {
    this(new SiteNodeVO());
  }
 
  public UpdateSiteNodeAction(SiteNodeVO siteNodeVO)
  {
    this.siteNodeVO = siteNodeVO;
    this.ceb     = new ConstraintExceptionBuffer()
  }
 
  public String doExecute() throws Exception
    {
    //try
    //{
      this.updated = true;
     
      super.initialize(getSiteNodeId());
      SiteNodeVO oldSiteNodeVO = SiteNodeController.getController().getSiteNodeVOWithId(getSiteNodeId());
     
      synchronized (oldSiteNodeVO)
      {
        if((this.advanced != null && this.advanced.equals("true")) || (this.showPageLanguages != null && this.showPageLanguages.equals("true")))
        {
          this.siteNodeVO = oldSiteNodeVO;
        }
        else
        {
          this.siteNodeVO.setCreatorName(this.getInfoGluePrincipal().getName());
          this.siteNodeVO.setMetaInfoContentId(oldSiteNodeVO.getMetaInfoContentId());
          ceb = this.siteNodeVO.validate();
       
       
        ceb.throwIfNotEmpty();
 
        SiteNodeVersionVO siteNodeVersionVO = null;
        if(this.advanced != null && this.advanced.equals("true"))
        {
          siteNodeVersionVO = new SiteNodeVersionVO();
          siteNodeVersionVO.setContentType(this.getContentType());
          siteNodeVersionVO.setPageCacheKey(this.getPageCacheKey());
          siteNodeVersionVO.setPageCacheTimeout(this.getPageCacheTimeout());
          siteNodeVersionVO.setDisableEditOnSight(this.getDisableEditOnSight());
          //siteNodeVersionVO.setDisableLanguages(this.disableLanguages);
          siteNodeVersionVO.setDisablePageCache(this.getDisablePageCache());
          siteNodeVersionVO.setDisableForceIdentityCheck(this.disableForceIdentityCheck);
          siteNodeVersionVO.setForceProtocolChange(this.forceProtocolChange);
          siteNodeVersionVO.setIsProtected(this.getIsProtected());
          siteNodeVersionVO.setIsHidden(this.getIsHidden());
          siteNodeVersionVO.setVersionModifier(this.getInfoGluePrincipal().getName());
        }
        else if(this.showPageLanguages != null && this.showPageLanguages.equals("true"))
        {
          SiteNodeVersionVO currentSiteNodeVersionVO = SiteNodeVersionController.getController().getLatestActiveSiteNodeVersionVO(getSiteNodeId());
         
          siteNodeVersionVO = new SiteNodeVersionVO();
          siteNodeVersionVO.setContentType(currentSiteNodeVersionVO.getContentType());
          siteNodeVersionVO.setPageCacheKey(currentSiteNodeVersionVO.getPageCacheKey());
          siteNodeVersionVO.setPageCacheTimeout(currentSiteNodeVersionVO.getPageCacheTimeout());
          siteNodeVersionVO.setDisableEditOnSight(currentSiteNodeVersionVO.getDisableEditOnSight());
          siteNodeVersionVO.setDisableLanguages(this.disableLanguages);
          siteNodeVersionVO.setDisablePageCache(currentSiteNodeVersionVO.getDisablePageCache());
          siteNodeVersionVO.setDisableForceIdentityCheck(currentSiteNodeVersionVO.getDisableForceIdentityCheck());
          siteNodeVersionVO.setForceProtocolChange(currentSiteNodeVersionVO.getForceProtocolChange());
          siteNodeVersionVO.setIsProtected(currentSiteNodeVersionVO.getIsProtected());
          siteNodeVersionVO.setIsHidden(currentSiteNodeVersionVO.getIsHidden());
          siteNodeVersionVO.setVersionModifier(this.getInfoGluePrincipal().getName());
        }
       
        UpdateSiteNodeUCC updateSiteNodeUCC = UpdateSiteNodeUCCFactory.newUpdateSiteNodeUCC();
        updateSiteNodeUCC.updateSiteNode(this.getInfoGluePrincipal(), this.siteNodeVO, this.siteNodeTypeDefinitionId, siteNodeVersionVO);   
 
        if(this.showPageLanguages != null && this.showPageLanguages.equals("true"))
        {
            Map args = new HashMap();
            args.put("globalKey", "infoglue");
            PropertySet ps = PropertySetManager.getInstance("jdbc", args);
   
            String oldDisabledLanguages = "" + ps.getString("siteNode_" + getSiteNodeId() + "_disabledLanguages");
            String oldEnabledLanguages = "" + ps.getString("siteNode_" + getSiteNodeId() + "_enabledLanguages");
            boolean changed = false;
           
            String[] values = getRequest().getParameterValues("disabledLanguageId");
            String valueString = "";
            if(values != null)
            {
              for(int i=0; i<values.length; i++)
              {
                  if(i > 0)
                      valueString = valueString + ",";
                  valueString = valueString + values[i]
              }
            }
            ps.setString("siteNode_" + getSiteNodeId() + "_disabledLanguages", valueString);
            if(!valueString.equals(oldDisabledLanguages))
              changed = true;
           
            values = getRequest().getParameterValues("enabledLanguageId");
            valueString = "";
            if(values != null)
            {
              for(int i=0; i<values.length; i++)
              {
                  if(i > 0)
                      valueString = valueString + ",";
                  valueString = valueString + values[i]
              }
            }
            ps.setString("siteNode_" + getSiteNodeId() + "_enabledLanguages", valueString);
            if(!valueString.equals(oldEnabledLanguages))
              changed = true;
 
            if(changed)
            {
            NotificationMessage notificationMessage = new NotificationMessage("UpdateSiteNodeAction", "ServerNodeProperties", this.getInfoGluePrincipal().getName(), NotificationMessage.SYSTEM, "0", "ServerNodeProperties");
            ChangeNotificationController.getInstance().addNotificationMessage(notificationMessage);
            //RemoteCacheUpdater.getSystemNotificationMessages().add(notificationMessage);
            }
           
              CacheController.clearCache("childSiteNodesCache");
              CacheController.clearCache("propertySetCache");
              CacheController.clearCache("siteNodeLanguageCache");
              CacheController.clearCache("pageCacheLatestSiteNodeVersions");
              CacheController.clearCache("latestSiteNodeVersionCache");
        }
         
      }
        //}
    //catch(Exception e)
    //{
    //  e.printStackTrace();
    //}
     
    return "success";
  }

  public String doV3() throws Exception
    {
    doExecute();

    return "successV3";
  }

  public String doSaveAndExit() throws Exception
    {
    doExecute();
           
    return "saveAndExit";
  }

  public String doSaveAndExitV3() throws Exception
    {
    doExecute();
           
    return "saveAndExitV3";
  }

  public String doSaveAndExitV3Inline() throws Exception
    {
    doExecute();

    this.userSessionKey = "" + System.currentTimeMillis();
        setActionExtraData(userSessionKey, "unrefreshedNodeId", "" + this.siteNodeVO.getSiteNodeId());
    this.actionUrl = "ViewSiteNode.action?siteNodeId=" + this.siteNodeVO.getSiteNodeId(); // + "newSiteNodeId=" + this.siteNodeId;
    this.targetTitle = "AAAAAAAAA";
   
    return "saveAndExitV3Inline";
  }

    public String doUpdateSiteNodeTypeDefinition() throws Exception
    {
      SiteNodeController.getController().updateSiteNodeTypeDefinition(getSiteNodeId(), this.siteNodeTypeDefinitionId);
     
      return "successChooseSiteNodeTypeDefinition";
    }
   
  public void setSiteNodeId(Integer siteNodeId)
  {
    this.siteNodeVO.setSiteNodeId(siteNodeId)
  }

    public java.lang.Integer getSiteNodeId()
    {
        return this.siteNodeVO.getSiteNodeId();
    }

    public java.lang.String getName()
    {
        return this.siteNodeVO.getName();
    }
  public Boolean getIsBranch()
  {
     return this.siteNodeVO.getIsBranch();
  }   
       
    public void setName(java.lang.String name)
    {
        this.siteNodeVO.setName(name);
    }
   
     public void setPublishDateTime(String publishDateTime)
    {
       this.siteNodeVO.setPublishDateTime(new VisualFormatter().parseDate(publishDateTime, "yyyy-MM-dd HH:mm"));
    }

    public void setExpireDateTime(String expireDateTime)
    {
         this.siteNodeVO.setExpireDateTime(new VisualFormatter().parseDate(expireDateTime, "yyyy-MM-dd HH:mm"));
  }

    public void setIsBranch(Boolean isBranch)
    {
         this.siteNodeVO.setIsBranch(isBranch);
    }

  public void setSiteNodeTypeDefinitionId(Integer siteNodeTypeDefinitionId)
  {
    this.siteNodeTypeDefinitionId = siteNodeTypeDefinitionId; 
  }

    public java.lang.Integer getSiteNodeTypeDefinitionId()
    {
        return this.siteNodeTypeDefinitionId;
    }
   
    public void setRepositoryId(Integer repositoryId)
  {
    this.repositoryId = repositoryId;
  }

  public Integer getRepositoryId()
  {
    return this.repositoryId;
  }

  public String getContentType()
  {
    return this.contentType;
  }

  public void setContentType(String contentType)
  {
    this.contentType = contentType;
  }

  public Integer getDisableEditOnSight()
  {
    return this.disableEditOnSight;
  }

  public void setDisableEditOnSight(Integer disableEditOnSight)
  {
    this.disableEditOnSight = disableEditOnSight;
  }

  public Integer getDisableForceIdentityCheck()
  {
    return this.disableForceIdentityCheck;
  }

  public void setDisableForceIdentityCheck(Integer disableForceIdentityCheck)
  {
    this.disableForceIdentityCheck = disableForceIdentityCheck;
  }

  public Integer getForceProtocolChange()
  {
    return this.forceProtocolChange;
  }

  public void setForceProtocolChange(Integer forceProtocolChange)
  {
    this.forceProtocolChange = forceProtocolChange;
  }

  public Integer getDisableLanguages()
  {
    return this.disableLanguages;
  }

  public void setDisableLanguages(Integer disableLanguages)
  {
    this.disableLanguages = disableLanguages;
  }

  public Integer getDisablePageCache()
  {
    return this.disablePageCache;
  }

  public void setDisablePageCache(Integer disablePageCache)
  {
    this.disablePageCache = disablePageCache;
  }

  public Integer getIsProtected()
  {
    return this.isProtected;
  }

  public void setIsProtected(Integer isProtected)
  {
    this.isProtected = isProtected;
  }

  public Boolean getIsHidden()
  {
    return this.isHidden;
  }

  public void setIsHidden(Boolean isHidden)
  {
    this.isHidden = isHidden;
  }

    public String getPageCacheKey()
    {
        return pageCacheKey;
    }
   
    public void setPageCacheKey(String pageCacheKey)
    {
        this.pageCacheKey = pageCacheKey;
    }

    public String getPageCacheTimeout()
    {
        return pageCacheTimeout;
    }
   
    public void setPageCacheTimeout(String pageCacheTimeout)
    {
        this.pageCacheTimeout = pageCacheTimeout;
    }
   
  public String getActionUrl()
  {
    return actionUrl;
  }

  public String getTargetTitle()
  {
    return targetTitle;
  }

  public boolean getUpdated()
  {
    return updated;
  }

  public String getUserSessionKey()
  {
    return userSessionKey;
  }
 
  public String getInline()
  {
    return inline;
  }

  public void setInline(String inline)
  {
    this.inline = inline;
  }

  public String getAdvanced()
  {
    return advanced;
  }

  public void setAdvanced(String advanced)
  {
    this.advanced = advanced;
  }
 
  public String getShowPageLanguages()
  {
    return showPageLanguages;
  }

  public void setShowPageLanguages(String showPageLanguages)
  {
    this.showPageLanguages = showPageLanguages;
  }
}
TOP

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

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.