Package com.agiletec.plugins.jpcontentworkflow.apsadmin.content

Source Code of com.agiletec.plugins.jpcontentworkflow.apsadmin.content.ContentFinderAction

/*
*
* Copyright 2013 Entando S.r.l. (http://www.entando.com) All rights reserved.
*
* This file is part of Entando software.
* Entando is a free software;
* You can redistribute it and/or modify it
* under the terms of the GNU General Public License (GPL) as published by the Free Software Foundation; version 2.
*
* See the file License for the specific language governing permissions  
* and limitations under the License
*
*
*
* Copyright 2013 Entando S.r.l. (http://www.entando.com) All rights reserved.
*
*/
package com.agiletec.plugins.jpcontentworkflow.apsadmin.content;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import com.agiletec.aps.system.ApsSystemUtils;
import com.agiletec.aps.system.common.entity.model.EntitySearchFilter;
import com.agiletec.aps.system.services.category.Category;
import com.agiletec.aps.system.services.role.Permission;
import com.agiletec.aps.system.services.user.UserDetails;
import com.agiletec.aps.util.SelectItem;
import com.agiletec.plugins.jacms.aps.system.services.content.IContentManager;
import com.agiletec.plugins.jacms.aps.system.services.content.model.Content;
import com.agiletec.plugins.jacms.aps.system.services.content.model.SmallContentType;
import com.agiletec.plugins.jpcontentworkflow.aps.system.services.content.IContentSearcherManager;
import com.agiletec.plugins.jpcontentworkflow.aps.system.services.workflow.model.WorkflowSearchFilter;
import com.agiletec.plugins.jpcontentworkflow.apsadmin.content.helper.IContentWorkFlowActionHelper;

/**
* @author E.Santoboni
*/
public class ContentFinderAction extends com.agiletec.plugins.jacms.apsadmin.content.ContentFinderAction {
 
  @Override
  public List<String> getContents() {
    List<String> result = null;
    try {
      if (this.hasCurrentUserPermission(Permission.SUPERUSER)) {
        return super.getContents();
      }
      UserDetails user = this.getCurrentUser();
      List<WorkflowSearchFilter> workflowFilters = ((IContentWorkFlowActionHelper) this.getContentActionHelper()).getWorkflowSearchFilters(user);
      if (workflowFilters.size() > 0) {
        List<String> allowedGroups = this.getContentGroupCodes();
        EntitySearchFilter[] filters = this.createFilters();
        String[] categories = null;
        Category category = this.getCategoryManager().getCategory(this.getCategoryCode());
        if (null != category && !category.isRoot()) {
          categories = new String[]{this.getCategoryCode().trim()};
        }
        result = this.getContentSearcherManager().loadContentsId(workflowFilters, categories, filters, allowedGroups);
      } else {
        result = new ArrayList<String>();
      }
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "getContents");
      throw new RuntimeException("Error searching contents", t);
    }
    return result;
  }
 
  @Override
  public String insertOnLine() {
    try {
      if (null == this.getContentIds()) {
        return SUCCESS;
      }
      Iterator<String> iter = this.getContentIds().iterator();
      List<Content> publishedContents = new ArrayList<Content>();
      IContentManager contentManager = (IContentManager) this.getContentManager();
      while (iter.hasNext()) {
        String contentId = (String) iter.next();
        Content contentToPublish = contentManager.loadContent(contentId, false);
        String[] msgArg = new String[1];
        if (null == contentToPublish) {
          msgArg[0] = contentId;
          this.addActionError(this.getText("error.content.contentToPublishNull", msgArg));
          continue;
        }
        msgArg[0] = contentToPublish.getDescr();
        if (!Content.STATUS_READY.equals(contentToPublish.getStatus())) {
          String nextStep = this.getNextStep(contentToPublish);
          if (null != nextStep && !Content.STATUS_READY.equals(nextStep)) {
            String[] args = {contentToPublish.getId(), contentToPublish.getDescr(), contentToPublish.getStatus()};
            this.addActionError(this.getText("error.content.publish.statusNotAllowed", args));
            continue;
          }
        }
        if (!this.isUserAllowed(contentToPublish)) {
          this.addActionError(this.getText("error.content.userNotAllowedToPublishContent", msgArg));
          continue;
        }
        this.getContentActionHelper().scanEntity(contentToPublish, this);
        if (this.getFieldErrors().size()>0) {
          this.addActionError(this.getText("error.content.publishingContentWithErrors", msgArg));
          continue;
        }
        contentManager.insertOnLineContent(contentToPublish);
        ApsSystemUtils.getLogger().info("Content '" + contentToPublish.getId()
            + "' published by user '" + this.getCurrentUser().getUsername() + "'");
        publishedContents.add(contentToPublish);
      }
      //RIVISITARE LOGICA DI COSTRUZIONE LABEL
      this.addConfirmMessage("message.content.publishedContents", publishedContents);
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "insertOnLine");
      throw new RuntimeException("Error inserting online content", t);
    }
    return SUCCESS;
  }
 
  protected String getNextStep(Content content) {
    return ((IContentWorkFlowActionHelper) this.getContentActionHelper()).getNextStep(content.getStatus(), content.getTypeCode());
  }
 
  // Portare a protected in Action padre di jacms
  protected void addConfirmMessage(String key, List<Content> deletedContents) {
    if (deletedContents.size() > 0) {
      String confirm = this.getText(key);
      for (int i=0; i<deletedContents.size(); i++) {
        Content content = deletedContents.get(i);
        if (i>0) {
          confirm += " - ";
        }
        confirm += " '" + content.getDescr() + "'";
      }
      this.addActionMessage(confirm);
    }
  }
 
  @Override
  public List<SmallContentType> getContentTypes() {
    return ((IContentWorkFlowActionHelper) this.getContentActionHelper()).getAllowedContentTypes(this.getCurrentUser());
  }
 
  @Override
  public List<SelectItem> getAvalaibleStatus() {
    if (null != this.getContentType() && this.getContentType().trim().length() > 0) {
      return ((IContentWorkFlowActionHelper) this.getContentActionHelper()).getAvalaibleStatus(this.getCurrentUser(), this.getContentType());
    }
    List<SelectItem> items = new ArrayList<SelectItem>();
    items.add(new SelectItem(Content.STATUS_DRAFT, "name.contentStatus." + Content.STATUS_DRAFT));
    if (super.hasCurrentUserPermission(Permission.SUPERVISOR)) {
      items.add(new SelectItem(Content.STATUS_READY, "name.contentStatus." + Content.STATUS_READY));
    }
    return items;
  }

  protected IContentSearcherManager getContentSearcherManager() {
    return _contentSearcherManager;
  }
  public void setContentSearcherManager(IContentSearcherManager contentSearcherManager) {
    this._contentSearcherManager = contentSearcherManager;
  }
 
  private IContentSearcherManager _contentSearcherManager;
 
}
TOP

Related Classes of com.agiletec.plugins.jpcontentworkflow.apsadmin.content.ContentFinderAction

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.