Package com.dotmarketing.quartz.job

Source Code of com.dotmarketing.quartz.job.UpdateContentsOnDeleteHost

package com.dotmarketing.quartz.job;

import java.util.List;
import java.util.Map;

import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

import com.dotmarketing.beans.Host;
import com.dotmarketing.business.APILocator;
import com.dotmarketing.business.UserAPI;
import com.dotmarketing.cache.FieldsCache;
import com.dotmarketing.common.db.DotConnect;
import com.dotmarketing.db.DbConnectionFactory;
import com.dotmarketing.portlets.contentlet.business.ContentletAPI;
import com.dotmarketing.portlets.contentlet.business.HostAPI;
import com.dotmarketing.portlets.contentlet.model.Contentlet;
import com.dotmarketing.portlets.folders.business.FolderAPI;
import com.dotmarketing.portlets.folders.business.FolderFactory;
import com.dotmarketing.portlets.structure.model.Field;
import com.dotmarketing.quartz.DotStatefulJob;
import com.dotmarketing.util.Logger;
import com.liferay.portal.model.User;

public class UpdateContentsOnDeleteHost extends DotStatefulJob {
  private UserAPI userAPI;
  private ContentletAPI contentAPI;
  private HostAPI hostAPI;

  public UpdateContentsOnDeleteHost() {
    userAPI = APILocator.getUserAPI();
    contentAPI = APILocator.getContentletAPI();
    hostAPI = APILocator.getHostAPI();
  }
  @Override
  public void run(JobExecutionContext jobContext) throws JobExecutionException {
    JobDataMap dataMap = jobContext.getJobDetail().getJobDataMap();
    Host host = (Host) dataMap.get("host");

        try {
            DotConnect dc = new DotConnect();
            dc.setSQL("SELECT contentlet.inode "
                    + "FROM contentlet join inode on (inode.inode=contentlet.inode) "
                    + " join identifier on (identifier.id = contentlet.identifier) "
                    + " join contentlet_version_info cl on (cl.working_inode=contentlet.inode) "
                    + "WHERE identifier.host_inode='" + host.getIdentifier());
      List<Map<String, String>> inodes = dc.getResults();
      boolean hostIsRequided;
      User systemUser = userAPI.getSystemUser();
      Host defaultHost = hostAPI.findDefaultHost(systemUser, false);
      Host systemHost = hostAPI.findSystemHost(systemUser, false);
      Contentlet contentlet;
      List<Field> fields;
      Field field = null;
      for(Map<String, String> inode: inodes) {
        contentlet = contentAPI.checkout(inode.get("inode"), systemUser, false);
        fields = FieldsCache.getFieldsByStructureInode(contentlet.getStructureInode());
        hostIsRequided = false;
        for (int i = 0; i < fields.size(); ++i) {
          field = fields.get(i);
          if (field.getFieldType().equals(Field.FieldType.HOST_OR_FOLDER.toString())) {
            if (field.isRequired())
              hostIsRequided = true;
            break;
          }
        }

        if (hostIsRequided) {
          contentlet.setHost(defaultHost.getIdentifier());
          contentlet.setStringProperty(field.getVelocityVarName(), defaultHost.getIdentifier());
        } else {
          contentlet.setHost(systemHost.getIdentifier());
          contentlet.setStringProperty(field.getVelocityVarName(), systemHost.getIdentifier());
        }

        contentlet.setFolder(FolderAPI.SYSTEM_FOLDER);

        contentAPI.checkin(contentlet, systemUser, false);
      }
    } catch (Exception e) {
      Logger.error(UpdateContentsOnDeleteHost.class, e.getMessage(), e);
      throw new JobExecutionException(e.getMessage(), e);
    }
  }
}
TOP

Related Classes of com.dotmarketing.quartz.job.UpdateContentsOnDeleteHost

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.