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

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

/* ===============================================================================
*
* 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.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.infoglue.cms.applications.common.VisualFormatter;
import org.infoglue.cms.applications.common.actions.InfoGlueAbstractAction;
import org.infoglue.cms.controllers.kernel.impl.simple.CategoryController;
import org.infoglue.cms.controllers.kernel.impl.simple.ContentController;
import org.infoglue.cms.controllers.kernel.impl.simple.ContentTypeDefinitionController;
import org.infoglue.cms.controllers.kernel.impl.simple.DigitalAssetController;
import org.infoglue.cms.controllers.kernel.impl.simple.LanguageController;
import org.infoglue.cms.controllers.kernel.impl.simple.PropertiesCategoryController;
import org.infoglue.cms.controllers.kernel.impl.simple.SiteNodeController;
import org.infoglue.cms.entities.content.ContentVO;
import org.infoglue.cms.entities.management.CategoryVO;
import org.infoglue.cms.entities.management.ContentTypeDefinitionVO;
import org.infoglue.cms.entities.management.LanguageVO;
import org.infoglue.cms.entities.structure.QualifyerVO;
import org.infoglue.cms.entities.structure.SiteNodeVO;
import org.infoglue.cms.exception.Bug;
import org.infoglue.cms.exception.SystemException;
import org.infoglue.cms.util.CmsPropertyHandler;
import org.infoglue.cms.util.dom.DOMBuilder;
import org.infoglue.deliver.util.Timer;

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

    private static CategoryController categoryController = CategoryController.getController();
  private static PropertiesCategoryController propertiesCategoryController = PropertiesCategoryController.getController();
 
  private String currentAction    = "";
  private String updateAction     = "";
  private String updateAndExitAction   = "";
  private String cancelAction     = "";

  private String toolbarKey     = "";
  private String titleKey     = "";
  private String arguments     = "";
 
  private String entityName     = null;
  private Integer entityId     = null;
 
  private String ownerEntityName   = null;
  private String ownerEntityId   = null;
 
  private List availableLanguages;
  private List contentTypeDefinitionVOList;
  private List contentTypeAttributes;
  private Integer contentTypeDefinitionId;
  private Integer languageId;
  private String attributeName = "";
  private String textAreaId = "";

  private ContentTypeDefinitionVO contentTypeDefinitionVO;
 
  public abstract String getXML();
 
    public abstract String getCancelAddress() throws Exception;

    public abstract String getReturnAddress() throws Exception;

    public void initialize() throws SystemException, Bug
    {
      this.setAvailableLanguages(LanguageController.getController().getLanguageVOList());
   
    if(this.getLanguageId() == null && this.getAvailableLanguages().size() > 0)
      this.setLanguageId(((LanguageVO)this.getAvailableLanguages().get(0)).getLanguageId());
   
    logger.info("Language:" + this.languageId);
    }
   
 
  /**
   * This method fetches a value from the xml that is the contentVersions Value. If the
   * xml is null the property has not been created yet and no values are present.
   */
  
  public String getAttributeValue(String key)
  {
    String value = "";
    try
    {
      String xml = this.getXML();
      if(xml != null)
      { 
        DOMBuilder domBuilder = new DOMBuilder();
       
        Document document = domBuilder.getDocument(xml);
       
        Node node = document.getRootElement().selectSingleNode("attributes/" + key);
        if(node != null)
        {
          value = node.getStringValue();
          if(value != null)
            value = new VisualFormatter().escapeHTML(value);
        }
      }
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }

    return value;
  }

  /**
   * This method fetches a value from the xml that is the property Value. If the
   * xml is null the contentVersion has not been created yet and no values are present.
   */
  
  public String getUnescapedAttributeValue(String key)
  {
    String value = "";
    try
    {
        String xml = this.getXML();
       
      int startTagIndex = xml.indexOf("<" + key + ">");
      int endTagIndex   = xml.indexOf("]]></" + key + ">");

      if(startTagIndex > 0 && startTagIndex < xml.length() && endTagIndex > startTagIndex && endTagIndex <  xml.length())
      {
        value = xml.substring(startTagIndex + key.length() + 11, endTagIndex);
      }         
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }

    return value;
  }

  /**
   * This method fetches the blob from the database and saves it on the disk.
   * Then it returnes a url for it
   */
 
  public String getDigitalAssetUrl(Integer digitalAssetId) throws Exception
  {
    String imageHref = null;
    try
    {
           imageHref = DigitalAssetController.getDigitalAssetUrl(digitalAssetId);
    }
    catch(Exception e)
    {
      logger.warn("We could not get the url of the digitalAsset: " + e.getMessage(), e);
      imageHref = e.getMessage();
    }
   
    return imageHref;
  }
 
 
  /**
   * This method fetches the blob from the database and saves it on the disk.
   * Then it returnes a url for it
   */
 
  public String getDigitalAssetThumbnailUrl(Integer digitalAssetId) throws Exception
  {
    String imageHref = null;
    try
    {
           imageHref = DigitalAssetController.getDigitalAssetThumbnailUrl(digitalAssetId);
    }
    catch(Exception e)
    {
      logger.warn("We could not get the url of the thumbnail: " + e.getMessage(), e);
      imageHref = e.getMessage();
    }
   
    return imageHref;
  }

  /**
   * Gets the path to a content/sitenode.
   * @param entity
   * @param entityId
   * @return
   */

  public String getQualifyerPath(String entity, String entityId)
  { 
    StringBuffer sb = new StringBuffer("");
    try
   
      if(entity.equalsIgnoreCase("Content"))
      {
        ContentVO contentVO = ContentController.getContentController().getContentVOWithId(new Integer(entityId));
        sb.insert(0, contentVO.getName() + "/");
        while(contentVO.getParentContentId() != null)
        {
          contentVO = ContentController.getContentController().getContentVOWithId(contentVO.getParentContentId());
          sb.insert(0, contentVO.getName() + "/");
        }
      }
      else if(entity.equalsIgnoreCase("SiteNode"))
      {
        SiteNodeVO siteNodeVO = SiteNodeController.getController().getSiteNodeVOWithId(new Integer(entityId));
        sb.insert(0, siteNodeVO.getName() + "/");
        while(siteNodeVO.getParentSiteNodeId() != null)
        {
          siteNodeVO = SiteNodeController.getController().getSiteNodeVOWithId(siteNodeVO.getParentSiteNodeId());
          sb.insert(0, siteNodeVO.getName() + "/");
        }
      }
      sb.deleteCharAt(sb.length() -1);
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }
    return sb.toString();
  }
 
  /**
   * Returns the content relation qualifyers
   * @param qualifyerXML
   * @return
   */

  public List getContentRelationQualifyers(String qualifyerXML)
  {
    logger.info("Content qualifyerXML:" + qualifyerXML);
      return parseQualifyersFromXML(qualifyerXML, "contentId");
  }

  /**
   * Returns the sitenode relation qualifyers
   * @param qualifyerXML
   * @return
   */

  public List getSiteNodeRelationQualifyers(String qualifyerXML)
  {
    logger.info("Content qualifyerXML:" + qualifyerXML);
      return parseQualifyersFromXML(qualifyerXML, "siteNodeId");
  }

  /**
   * Parses qualifyers from an XML
   * @param qualifyerXML
   * @return
   */

  private List parseQualifyersFromXML(String qualifyerXML, String currentEntityIdentifyer)
  {
    List qualifyers = new ArrayList();
     
    if(qualifyerXML == null || qualifyerXML.length() == 0)
      return qualifyers;
   
    try
    {
      Document document = new DOMBuilder().getDocument(qualifyerXML);
     
      String entity = document.getRootElement().attributeValue("entity");
     
      List children = document.getRootElement().elements();
      Iterator i = children.iterator();
      while(i.hasNext())
      {
        Element child = (Element)i.next();
        String id = child.getStringValue();
       
        QualifyerVO qualifyerVO = new QualifyerVO();
        qualifyerVO.setName(currentEntityIdentifyer);
        qualifyerVO.setValue(id);   
        qualifyerVO.setPath(this.getQualifyerPath(entity, id));
        //qualifyerVO.setSortOrder(new Integer(i));
        qualifyers.add(qualifyerVO);      
      }             
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }
   
    return qualifyers;
  }

 
  /**
   * Return the listing of Category attributes for this type of Content
   */

  public List getDefinedCategoryKeys()
  {
    try
    {
      if(getContentTypeDefinitionVO() != null)
        return ContentTypeDefinitionController.getController().getDefinedCategoryKeys(getContentTypeDefinitionVO(), true);
    }
    catch(Exception e)
    {
      logger.warn("We could not fetch the list of defined category keys: " + e.getMessage(), e);
    }

    return Collections.EMPTY_LIST;
  }

  /**
   * Returns the Category tree for the given Category id.
   * @param categoryId The base Category
   * @return A list of all Children (and their children, etc)
   */
 
  public List<CategoryVO> getAvailableCategories(Integer categoryId)
  {
    List<CategoryVO> availableCategories = Collections.EMPTY_LIST;
    Timer t = new Timer();
    try
   
        String protectCategories = CmsPropertyHandler.getProtectCategories();
        if(protectCategories != null && protectCategories.equalsIgnoreCase("true"))
        {
          availableCategories = getCategoryController().getAuthorizedActiveChildren(categoryId, this.getInfoGluePrincipal());
        t.printElapsedTime("getAuthorizedActiveChildren");
}
      else
      {
        availableCategories = getCategoryController().getActiveChildrenCategoryVOList(categoryId);
        t.printElapsedTime("findAllActiveChildren");
      }
    }
    catch(Exception e)
    {
      logger.warn("We could not fetch the list of categories: " + e.getMessage(), e);
    }
   
    return availableCategories;
  }

 
    public CategoryController getCategoryController()
    {
        return categoryController;
    }
   
    public PropertiesCategoryController getPropertiesCategoryController()
    {
        return propertiesCategoryController;
    }

    public String getArguments()
    {
        return arguments;
    }
   
    public String getTitleKey()
    {
        return titleKey;
    }
   
    public String getToolbarKey()
    {
        return toolbarKey;
    }

    public String getCurrentAction()
    {
        return currentAction;
    }
   
    public void setCurrentAction(String currentAction)
    {
        this.currentAction = currentAction;
    }
   
    public String getEntityName()
    {
        return entityName;
    }
   
    public void setEntityName(String entityName)
    {
        this.entityName = entityName;
    }
   
    public String getUpdateAction()
    {
        return updateAction;
    }
   
    public void setUpdateAction(String updateAction)
    {
        this.updateAction = updateAction;
    }

    public String getUpdateAndExitAction()
    {
        return updateAndExitAction;
    }
   
    public void setUpdateAndExitAction(String updateAndExitAction)
    {
        this.updateAndExitAction = updateAndExitAction;
    }

    public void setArguments(String arguments)
    {
        this.arguments = arguments;
    }
   
    public void setTitleKey(String titleKey)
    {
        this.titleKey = titleKey;
    }
   
    public void setToolbarKey(String toolbarKey)
    {
        this.toolbarKey = toolbarKey;
    }
   
    public Integer getEntityId()
    {
        return entityId;
    }
   
    public void setEntityId(Integer entityId)
    {
        this.entityId = entityId;
    }
   
    public String getOwnerEntityId()
    {
        return ownerEntityId;
    }
   
    public void setOwnerEntityId(String ownerEntityId) throws Exception
    {
        this.ownerEntityId = ownerEntityId;
    }
   
    public String getOwnerEntityName()
    {
        return ownerEntityName;
    }
   
    public void setOwnerEntityName(String ownerEntityName)
    {
        this.ownerEntityName = ownerEntityName;
    }
   
    public List getAvailableLanguages()
    {
        return availableLanguages;
    }
   
    public void setAvailableLanguages(List availableLanguages)
    {
        this.availableLanguages = availableLanguages;
    }
   
    public Integer getContentTypeDefinitionId()
    {
        return contentTypeDefinitionId;
    }
   
    public void setContentTypeDefinitionId(Integer contentTypeDefinitionId)
    {
        this.contentTypeDefinitionId = contentTypeDefinitionId;
    }
   
    public ContentTypeDefinitionVO getContentTypeDefinitionVO()
    {
        return contentTypeDefinitionVO;
    }
   
    public void setContentTypeDefinitionVO(ContentTypeDefinitionVO contentTypeDefinitionVO)
    {
        this.contentTypeDefinitionVO = contentTypeDefinitionVO;
    }
   
    public List getContentTypeDefinitionVOList()
    {
        return contentTypeDefinitionVOList;
    }
   
    public void setContentTypeDefinitionVOList(List contentTypeDefinitionVOList)
    {
        this.contentTypeDefinitionVOList = contentTypeDefinitionVOList;
    }
   
    public Integer getLanguageId()
    {
        return languageId;
    }
   
    public void setLanguageId(Integer languageId)
    {
        this.languageId = languageId;
    }
   
    public String getTextAreaId()
    {
        return textAreaId;
    }
   
    public void setTextAreaId(String textAreaId)
    {
        this.textAreaId = textAreaId;
    }
   
    public String getAttributeName()
    {
        return attributeName;
    }
   
    public void setAttributeName(String attributeName)
    {
        this.attributeName = attributeName;
    }
   
    public List getContentTypeAttributes()
    {
        return contentTypeAttributes;
    }
   
    public void setAttributes(List contentTypeAttributes)
    {
        this.contentTypeAttributes = contentTypeAttributes;
    }
   
   
    public String getCancelAction()
    {
        return cancelAction;
    }
   
    public void setCancelAction(String cancelAction)
    {
        this.cancelAction = cancelAction;
    }
}
TOP

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

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.