Package com.dotmarketing.portlets.structure.model

Source Code of com.dotmarketing.portlets.structure.model.Structure

package com.dotmarketing.portlets.structure.model;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;

import com.dotcms.repackage.org.apache.commons.lang.builder.ToStringBuilder;

import com.dotcms.sync.Exportable;
import com.dotcms.sync.Importable;
import com.dotcms.sync.exception.DotDependencyException;
import com.dotmarketing.beans.Inode;
import com.dotmarketing.business.APILocator;
import com.dotmarketing.business.PermissionAPI;
import com.dotmarketing.business.PermissionSummary;
import com.dotmarketing.business.Permissionable;
import com.dotmarketing.business.Treeable;
import com.dotmarketing.cache.FieldsCache;
import com.dotmarketing.exception.DotDataException;
import com.dotmarketing.exception.DotHibernateException;
import com.dotmarketing.exception.DotRuntimeException;
import com.dotmarketing.exception.DotSecurityException;
import com.dotmarketing.portlets.structure.factories.FieldFactory;
import com.dotmarketing.portlets.structure.factories.StructureFactory;
import com.dotmarketing.util.Logger;
import com.dotmarketing.util.UtilMethods;


public class Structure extends Inode implements Permissionable, Exportable, Importable,Treeable  {

  public static final int STRUCTURE_TYPE_CONTENT     = 1;
  public static final int STRUCTURE_TYPE_WIDGET     = 2;
  public static final int STRUCTURE_TYPE_FORM     = 3;
  public static final int STRUCTURE_TYPE_FILEASSET   = 4;

  private static final long serialVersionUID = 1L;
  private String name;
  private String description;
  private boolean defaultStructure;
  private String reviewInterval;
  private String reviewerRole;
  private String pagedetail;
  private int structureType = STRUCTURE_TYPE_CONTENT;
  private boolean fixed;
  private boolean system;
  private String velocityVarName;
  private String urlMapPattern;
  private String host="SYSTEM_HOST";
  private String folder="SYSTEM_FOLDER";
  private String publishDateVar;
  private String expireDateVar;
  private Date modDate;

  public List<Exportable> getDependencies() {
    // TODO Auto-generated method stub
    List<Exportable> ret =new ArrayList<Exportable>();
    for(Field f : getFields()){
      ret.addAll(f.getDependencies());
    }
    ret.add(this);
    return ret;
  }


  public boolean isDependenciesMet() throws DotDependencyException {
    // TODO Auto-generated method stub
    return false;
  }







  public String getDetailPage() {
    return pagedetail;
  }

  public void setDetailPage(String pagedetail) {
    this.pagedetail = pagedetail;
  }

  public String getPagedetail() {
    return pagedetail;
  }

  public void setPagedetail(String pagedetail) {
    this.pagedetail = pagedetail;
  }

  public Structure () {
    super.setType("structure");
    modDate = new Date();
  }

  public boolean isDefaultStructure() {
    return defaultStructure;
  }
  public void setDefaultStructure(boolean defaultStructure) {
    this.defaultStructure = defaultStructure;
  }
  public String getDescription() {
    return description;
  }
  public void setDescription(String description) {
    this.description = description;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }

  public void delete() throws DotHibernateException, DotDataException
  {
    boolean recursive = true;
    delete(recursive);
  }

  public void delete(boolean recursive) throws DotHibernateException, DotDataException
  {
    if(recursive)
    {
      List<Field> list = FieldFactory.getFieldsByStructure(inode);
      for(int i = 0;i < list.size();i++)
      {
        Field field = (Field) list.get(i);
        field.delete();
      }
    }
    StructureFactory.deleteStructure(this);
  }
  /**
   * @deprecated  As of version dotCMS 1.2, this will be have private access, replaced by
   *              {FieldsCache.getFields(inode)}
   */
  public List<Field> getFields()
  {
    return FieldFactory.getFieldsByStructure(inode);
  }
  public List<Field> getFieldsBySortOrder()
  {
    return FieldFactory.getFieldsByStructureSortedBySortOrder(inode);
  }



  public String getReviewerRole() {
    return reviewerRole;
  }

  public void setReviewerRole(String reviewerRole) {
    this.reviewerRole = reviewerRole;
  }

  public String getReviewInterval() {
    return reviewInterval;
  }

  public void setReviewInterval(String reviewInterval) {
    this.reviewInterval = reviewInterval;
  }

  /**
   * Retrieves a structure field based on the field label name
   * This is a not recommended way to obtain a field since the
   * field label name can be changed by the user
   * @param fieldName
   * @return
   * @deprecated This is a not recommended way to obtain a field since the
   * field label name can be changed by the user
   */
  public Field getField(String fieldName)
  {
    List<Field> fields = FieldsCache.getFieldsByStructureInode(inode);
    for(Field field : fields)
    {
      if(field.getFieldName().equals(fieldName))
      {
        return field;
      }
    }
    return new Field();
  }


  /**
   * Retrieves a field by the velocity variable name,
   * This should be the preferred method to obtain a field
   * since the velocity variable name of the field never changes
   * after it gets created.
   * @param velocityVarName
   * @return The field or null if the field doesn't exist
   */
  public Field getFieldVar(String velocityVarName)
  {
    List<Field> fields = FieldsCache.getFieldsByStructureInode(inode);
    for(Field field : fields)
    {
      if(field.getVelocityVarName().equals(velocityVarName))
      {
        return field;
      }
    }
    return null;
  }

  public boolean isContent() {
    if(structureType == STRUCTURE_TYPE_CONTENT)
      return true;
    return false;
  }

  public boolean isWidget() {
    if(structureType == STRUCTURE_TYPE_WIDGET)
      return true;
    return false;
  }

  public boolean isForm() {
    if(structureType == STRUCTURE_TYPE_FORM)
      return true;
    return false;
  }
  public boolean isFileAsset() {
    return(structureType == STRUCTURE_TYPE_FILEASSET);

  }
  public boolean isSystem() {
    return system;
  }

  public void setSystem(boolean system) {
    this.system = system;
  }

  public boolean isFixed() {
    return fixed;
  }

  public void setFixed(boolean fixed) {
    this.fixed = fixed;
  }

  public int getStructureType() {
    return structureType;
  }

  public void setStructureType(int structureType) {
    this.structureType = structureType;
  }

  public Map<String, Object> getMap(){
    return UtilMethods.toMap(this);
  }

  /**
   * List of permissions it accepts
   */
  public List<PermissionSummary> acceptedPermissions() {
    List<PermissionSummary> accepted = new ArrayList<PermissionSummary>();
    accepted.add(new PermissionSummary("view", "view-permission-description", PermissionAPI.PERMISSION_READ));
    accepted.add(new PermissionSummary("edit", "edit-permission-description", PermissionAPI.PERMISSION_WRITE));
    accepted.add(new PermissionSummary("publish", "publish-permission-description", PermissionAPI.PERMISSION_PUBLISH));
    accepted.add(new PermissionSummary("edit-permissions", "edit-permissions-permission-description", PermissionAPI.PERMISSION_EDIT_PERMISSIONS));
    return accepted;
  }

  public Permissionable getParentPermissionable() throws DotDataException {
    try {

      if(UtilMethods.isSet(getFolder()) && !getFolder().equals("SYSTEM_FOLDER")){

        return APILocator.getFolderAPI().find(getFolder(), APILocator.getUserAPI().getSystemUser(), false);

      }else if(UtilMethods.isSet(getHost()) && !getHost().equals("SYSTEM_HOST")){

        try {
          return APILocator.getHostAPI().find(getHost(), APILocator.getUserAPI().getSystemUser(), false);
        } catch (DotSecurityException e) {
          Logger.debug(Structure.class, e.getMessage(), e);
        }
      }
      return APILocator.getHostAPI().findSystemHost();
    } catch (Exception e) {
      throw new DotRuntimeException(e.getMessage(), e);
    }
  }


  @Override
  public boolean isParentPermissionable() {
    return true;
  }

  public void setVelocityVarName(String velocityVarName) {
    this.velocityVarName = velocityVarName;
  }

  public String getVelocityVarName() {
    return velocityVarName;
  }

  public void setUrlMapPattern(String urlMapPattern) {
    this.urlMapPattern = urlMapPattern;
  }

  public String getUrlMapPattern() {
    return urlMapPattern;
  }



  public String getFolder() {
    return folder;
  }

  public void setFolder(String folder) {
    this.folder = folder;
  }

  public String getHost() {
    return host;
  }

  public void setHost(String host) {
    this.host = host;
  }

  public String toString() {
        return ToStringBuilder.reflectionToString(this);
    }


    public String getPublishDateVar() {
        return publishDateVar;
    }


    public void setPublishDateVar(String publishDateVar) {
        this.publishDateVar = publishDateVar;
    }


    public String getExpireDateVar() {
        return expireDateVar;
    }


    public void setExpireDateVar(String expireDateVar) {
        this.expireDateVar = expireDateVar;
    }


  public Date getModDate() {
    return modDate;
  }


  public void setModDate(Date modDate) {
    this.modDate = modDate;
  }

}
TOP

Related Classes of com.dotmarketing.portlets.structure.model.Structure

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.