Package org.infoglue.cms.applications.managementtool.actions

Source Code of org.infoglue.cms.applications.managementtool.actions.ViewSystemUserPropertiesAction

/* ===============================================================================
*
* 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.managementtool.actions;

import java.util.List;

import org.apache.commons.codec.binary.Base64;
import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.Node;
import org.infoglue.cms.applications.common.VisualFormatter;
import org.infoglue.cms.controllers.kernel.impl.simple.ContentTypeDefinitionController;
import org.infoglue.cms.controllers.kernel.impl.simple.LanguageController;
import org.infoglue.cms.controllers.kernel.impl.simple.UserControllerProxy;
import org.infoglue.cms.controllers.kernel.impl.simple.UserPropertiesController;
import org.infoglue.cms.entities.management.ContentTypeDefinitionVO;
import org.infoglue.cms.entities.management.GroupProperties;
import org.infoglue.cms.entities.management.LanguageVO;
import org.infoglue.cms.entities.management.UserPropertiesVO;
import org.infoglue.cms.security.InfoGluePrincipal;
import org.infoglue.cms.util.dom.DOMBuilder;

public class ViewSystemUserPropertiesAction extends ViewEntityPropertiesAction
{
    private final static Logger logger = Logger.getLogger(ViewSystemUserPropertiesAction.class.getName());
  private VisualFormatter formatter = new VisualFormatter();

  private static final long serialVersionUID = 1L;
 
  private String userName;
  private UserPropertiesVO userPropertiesVO;
  private List userPropertiesVOList;
  private List availableLanguages;
  private List contentTypeDefinitionVOList;
  private List attributes;
  private ContentTypeDefinitionVO contentTypeDefinitionVO;
  private Integer contentTypeDefinitionId;
  private Integer languageId;
  private Integer currentEditorId;
  private String attributeName = "";
  private String textAreaId = "";
 
 
  /**
   * Initializes all properties needed for the usecase.
   * @param systemUserId
   * @throws Exception
   */

  protected void initialize(String userName) throws Exception
  {
    this.availableLanguages = LanguageController.getController().getLanguageVOList();
   
    if(this.languageId == null && this.availableLanguages.size() > 0)
      this.languageId = ((LanguageVO)this.availableLanguages.get(0)).getLanguageId();
   
    logger.info("Language:" + this.languageId);
   
    List contentTypeDefinitionVOList = UserPropertiesController.getController().getContentTypeDefinitionVOList(userName);
    if(contentTypeDefinitionVOList != null && contentTypeDefinitionVOList.size() > 0)
      this.contentTypeDefinitionVO = (ContentTypeDefinitionVO)contentTypeDefinitionVOList.get(0);
   
    logger.info("contentTypeDefinitionVO:" + contentTypeDefinitionVO.getName());
   
    InfoGluePrincipal infoGluePrincipal = UserControllerProxy.getController().getUser(userName);
    userPropertiesVOList = UserPropertiesController.getController().getUserPropertiesVOList(userName, this.languageId);
    if(userPropertiesVOList != null && userPropertiesVOList.size() > 0)
    {
      this.userPropertiesVO = (UserPropertiesVO)userPropertiesVOList.get(0);
      this.contentTypeDefinitionId = this.userPropertiesVO.getLanguageId();
    }
    else
    {
      this.contentTypeDefinitionId = this.contentTypeDefinitionVO.getContentTypeDefinitionId();
    }

    this.attributes = ContentTypeDefinitionController.getController().getContentTypeAttributes(this.contentTypeDefinitionVO, true)
 
    logger.info("attributes:" + this.attributes.size());   
    logger.info("availableLanguages:" + this.availableLanguages.size());   
  }

  public String doExecute() throws Exception
  {
    this.initialize(getUserName());  

    this.setCurrentAction("ViewSystemUserProperties.action");
        this.setUpdateAction("UpdateSystemUserProperties");
        this.setUpdateAndExitAction("UpdateSystemUserProperties!saveAndExitV3");
        this.setCancelAction("ViewSystemUser.action");
        this.setToolbarKey("tool.managementtool.viewUserProperties.header");
        this.setTitleKey("tool.managementtool.viewUserProperties.header");
       
        if(this.userPropertiesVO != null)
            this.setArguments("entityId=" + this.userPropertiesVO.getId());
        else
          this.setArguments("");

        this.setEntityName(GroupProperties.class.getName());

    return "success";
  }

  public String doV3() throws Exception
  {
    this.initialize(getUserName());  

    this.setCurrentAction("ViewSystemUserProperties!v3.action");
        this.setUpdateAction("UpdateSystemUserProperties!v3");
        this.setUpdateAndExitAction("UpdateSystemUserProperties!saveAndExitV3");
        this.setCancelAction("ViewSystemUser!v3.action");
        this.setToolbarKey("tool.managementtool.viewUserProperties.header");
        this.setTitleKey("tool.managementtool.viewUserProperties.header");
       
        if(this.userPropertiesVO != null)
            this.setArguments("entityId=" + this.userPropertiesVO.getId());
        else
          this.setArguments("");

        this.setEntityName(GroupProperties.class.getName());

    return "successV3";
  }

  /**
   * This method fetches a value from the xml that is the contentVersions Value. If the
   * contentVersioVO is null the contentVersion has not been created yet and no values are present.
   */
  
  public String getAttributeValue(String key)
  {
    logger.info("Getting: " + key);
    String value = "";
    try
    {
      String xml = this.getXML();
      if(xml != null)
      { 
        logger.info("key:" + key);
        logger.info("XML:" + this.getXML());
       
        DOMBuilder domBuilder = new DOMBuilder();
       
        Document document = domBuilder.getDocument(this.getXML());
        logger.info("rootElement:" + document.getRootElement().asXML());
       
        Node node = document.getRootElement().selectSingleNode("attributes/" + key);
        if(node != null)
        {
          value = node.getStringValue();
          logger.info("Getting value: " + value);
          if(value != null)
            value = new VisualFormatter().escapeHTML(value);
        }
      }
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }

    return value;
  }
 
  public List getAvailableLanguages()
  {
    return this.availableLanguages;
  }
 
  public Integer getContentTypeDefinitionId()
  {
    return this.contentTypeDefinitionId;
  }
 
  public UserPropertiesVO getUserPropertiesVO()
  {
    return userPropertiesVO;
  }

  public String getXML()
  {
    return (this.userPropertiesVO == null) ? null : this.userPropertiesVO.getValue();
  }

  public Integer getLanguageId()
  {
    return languageId;
  }

  public void setLanguageId(Integer languageId)
  {
    this.languageId = languageId;
  }

  public Integer getCurrentEditorId()
  {
    return currentEditorId;
  }

  public void setCurrentEditorId(Integer integer)
  {
    currentEditorId = integer;
  }

  public String getAttributeName()
  {
    return this.attributeName;
  }

  public void setAttributeName(String attributeName)
  {
    this.attributeName = attributeName;
  }

  public String getTextAreaId()
  {
    return this.textAreaId;
  }

  public void setTextAreaId(String textAreaId)
  {
    this.textAreaId = textAreaId;
  }
 
  /**
   * This method returns the attributes in the content type definition for generation.
   */
 
  public List getContentTypeAttributes()
  {      
    return this.attributes;
  }
 
  public String getUserName()
  {
    return this.userName;
  }

  public void setUserName(String userName) throws Exception
  {
    logger.info("userName:" + userName);
    if(!UserControllerProxy.getController().userExists(userName))
    {
      logger.info("userName did not exist - we try to decode it:" + userName);
      byte[] bytes = Base64.decodeBase64(userName);
      String decodedName = new String(bytes, "utf-8");
      logger.info("decodedName:" + decodedName);
      if(UserControllerProxy.getController().userExists(decodedName))
      {
        logger.info("decodedName existed:" + decodedName);
        userName = decodedName;
      }
    }


    this.userName = userName;
  }

    public void setOwnerEntityId(String ownerEntityId) throws Exception
    {
      logger.info("ownerEntityId:" + ownerEntityId);
    if(!UserControllerProxy.getController().userExists(ownerEntityId))
    {
      logger.info("groupName did not exist - we try to decode it:" + ownerEntityId);
      byte[] bytes = Base64.decodeBase64(ownerEntityId);
      String decodedName = new String(bytes, "utf-8");
      logger.info("decodedName:" + decodedName);
      if(UserControllerProxy.getController().userExists(decodedName))
      {
        logger.info("decodedName existed:" + decodedName);
        ownerEntityId = decodedName;
      }
    }
        super.setOwnerEntityId(ownerEntityId);
        this.userName = ownerEntityId;
    }
   
    public String getReturnAddress() throws Exception
    {
        return this.getCurrentAction() + "?userName=" + formatter.encodeBase64(this.userName) + "&languageId=" + this.getLanguageId();
    }

    public String getCancelAddress() throws Exception
    {
        return this.getCancelAction() + "?userName=" + formatter.encodeBase64(this.userName);
    }

}
TOP

Related Classes of org.infoglue.cms.applications.managementtool.actions.ViewSystemUserPropertiesAction

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.