Package com.dotmarketing.portlets.cmsmaintenance.ajax

Source Code of com.dotmarketing.portlets.cmsmaintenance.ajax.CMSMaintenanceAjax

package com.dotmarketing.portlets.cmsmaintenance.ajax;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.zip.ZipOutputStream;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;

import com.dotcms.repackage.net.sf.hibernate.HibernateException;

import com.dotcms.repackage.org.directwebremoting.WebContextFactory;
import org.quartz.JobExecutionContext;

import com.dotcms.content.elasticsearch.business.ContentletIndexAPI;
import com.dotcms.content.elasticsearch.business.ESIndexAPI;
import com.dotcms.content.elasticsearch.util.ESReindexationProcessStatus;
import com.dotmarketing.beans.Clickstream;
import com.dotmarketing.beans.ClickstreamRequest;
import com.dotmarketing.beans.Identifier;
import com.dotmarketing.beans.Inode;
import com.dotmarketing.beans.MultiTree;
import com.dotmarketing.beans.PermissionReference;
import com.dotmarketing.business.APILocator;
import com.dotmarketing.business.DotCacheException;
import com.dotmarketing.cache.StructureCache;
import com.dotmarketing.cms.factories.PublicCompanyFactory;
import com.dotmarketing.common.db.DotConnect;
import com.dotmarketing.common.reindex.ReindexThread;
import com.dotmarketing.db.HibernateUtil;
import com.dotmarketing.exception.DotDataException;
import com.dotmarketing.exception.DotRuntimeException;
import com.dotmarketing.exception.DotSecurityException;
import com.dotmarketing.fixtask.FixTasksExecutor;
import com.dotmarketing.plugin.model.Plugin;
import com.dotmarketing.plugin.model.PluginProperty;
import com.dotmarketing.portlets.calendar.model.CalendarReminder;
import com.dotmarketing.portlets.cmsmaintenance.factories.CMSMaintenanceFactory;
import com.dotmarketing.portlets.cmsmaintenance.util.AssetFileNameFilter;
import com.dotmarketing.portlets.cmsmaintenance.util.CleanAssetsThread;
import com.dotmarketing.portlets.cmsmaintenance.util.CleanAssetsThread.BasicProcessStatus;
import com.dotmarketing.portlets.containers.model.ContainerVersionInfo;
import com.dotmarketing.portlets.contentlet.business.ContentletAPI;
import com.dotmarketing.portlets.contentlet.model.Contentlet;
import com.dotmarketing.portlets.dashboard.model.DashboardSummary404;
import com.dotmarketing.portlets.dashboard.model.DashboardUserPreferences;
import com.dotmarketing.portlets.files.model.FileAssetVersionInfo;
import com.dotmarketing.portlets.htmlpages.model.HTMLPageVersionInfo;
import com.dotmarketing.portlets.links.model.LinkVersionInfo;
import com.dotmarketing.portlets.structure.model.Structure;
import com.dotmarketing.portlets.templates.model.TemplateVersionInfo;
import com.dotmarketing.portlets.workflows.util.WorkflowImportExportUtil;
import com.dotmarketing.tag.model.TagInode;
import com.dotmarketing.util.Config;
import com.dotmarketing.util.ConfigUtils;
import com.dotmarketing.util.HibernateCollectionConverter;
import com.dotmarketing.util.HibernateMapConverter;
import com.dotmarketing.util.Logger;
import com.dotmarketing.util.MaintenanceUtil;
import com.dotmarketing.util.UtilMethods;
import com.dotmarketing.util.ZipUtil;
import com.liferay.portal.PortalException;
import com.liferay.portal.SystemException;
import com.liferay.portal.ejb.ImageLocalManagerUtil;
import com.liferay.portal.ejb.PortletPreferencesLocalManagerUtil;
import com.liferay.portal.ejb.UserLocalManagerUtil;
import com.liferay.portal.language.LanguageException;
import com.liferay.portal.language.LanguageUtil;
import com.liferay.portal.model.Company;
import com.liferay.portal.model.User;
import com.liferay.util.FileUtil;
import com.dotcms.repackage.com.thoughtworks.xstream.XStream;
import com.dotcms.repackage.com.thoughtworks.xstream.io.xml.DomDriver;
import com.dotcms.repackage.com.thoughtworks.xstream.mapper.Mapper;

public class CMSMaintenanceAjax {

    public Map getReindexationProgress() throws DotDataException {
      validateUser();
        return ESReindexationProcessStatus.getProcessIndexationMap();
    }



    public boolean deleteIndex(String indexName){
      validateUser();
      ESIndexAPI esapi= new ESIndexAPI();

      return  APILocator.getContentletIndexAPI().delete(indexName);
    }


    public boolean validateUser() {
      HttpServletRequest req = WebContextFactory.get().getHttpServletRequest();
        User user = null;
        try {
          user = com.liferay.portal.util.PortalUtil.getUser(req);
          if(user == null || !APILocator.getLayoutAPI().doesUserHaveAccessToPortlet("EXT_CMS_MAINTENANCE", user)){
            throw new DotSecurityException("User does not have access to the CMS Maintance Portlet");
          }
          return true;
        } catch (Exception e) {
            Logger.error(this, e.getMessage());
            throw new DotRuntimeException (e.getMessage());
        }
    }


    public Map stopReindexation() throws DotDataException {
      validateUser();
      ReindexThread.getInstance().stopFullReindexation();
        return ESReindexationProcessStatus.getProcessIndexationMap();
    }

    public String cleanReindexStructure(String inode) throws DotDataException {
      validateUser();
      Structure structure = StructureCache.getStructureByInode(inode);
      APILocator.getContentletIndexAPI().removeContentFromIndexByStructureInode(inode);
      APILocator.getContentletAPI().refresh(structure);

      Company d = PublicCompanyFactory.getDefaultCompany();
      try {
      return LanguageUtil.get(d.getCompanyId(),d.getLocale(), "message.cmsmaintenance.cache.indexrebuilt");
    } catch (LanguageException e) {
      return "message.cmsmaintenance.cache.indexrebuilt";
    }
    }

    public void optimizeIndices() {
      validateUser();
        ContentletIndexAPI api=APILocator.getContentletIndexAPI();
        List<String> indices=api.listDotCMSIndices();
        api.optimize(indices);
    }

    /**
   * The path where tmp files are stored. This gets wiped alot
   */
  private String backupTempFilePath = ConfigUtils.getBackupPath()+File.separator+"temp";

  private static String assetRealPath = null;
  private static String assetPath = "/assets";

    private  FixTasksExecutor fixtask=FixTasksExecutor.getInstance();

    public List <Map> fixAssetsInconsistencies() throws Exception
    {
      validateUser();
        JobExecutionContext arg0=null;
        fixtask.execute(arg0);
    List result=fixtask.getTasksresults();
     if(result.size()==0){
       result=null;
     }

        return result;

    }

    public List <Map> getFixAssetsProgress() throws Exception{
      List result=fixtask.getTasksresults();
     if(result.size()==0){
       result=null;}
        return result;
    }



  public String[] deleteContentletsFromIdList(String List, String userId) throws PortalException, SystemException, DotDataException,DotSecurityException {

    ContentletAPI conAPI = APILocator.getContentletAPI();
    String[] inodes = List.split(",");
    Integer contdeleted = 0;
    String contnotfound = "";
    String conthasreqrel = "";
    String conthasnoperm = "";

    User user = UserLocalManagerUtil.getUserById(userId);
    for (int i = 0; i < inodes.length; i++) {
      inodes[i] = inodes[i].trim();
    }

    List<Contentlet> contentlets = new ArrayList<Contentlet>();

    for (String inode : inodes) {
      if (!inode.trim().equals("")) {
        contentlets.addAll(conAPI.getSiblings(inode));
      }
    }

    for (Contentlet contentlet : contentlets) {
      conAPI.delete(contentlet, APILocator.getUserAPI().getSystemUser(), true, true);
      contdeleted++;
    }

    String[] results = { contdeleted.toString(), contnotfound, conthasreqrel,conthasnoperm };

    return results;
  }

  public String deletePushedAssets() throws PortalException, SystemException, DotDataException,DotSecurityException {

    String result = "success";

    try {

      APILocator.getPushedAssetsAPI().deleteAllPushedAssets();

    } catch(Exception e) {
      Logger.error(getClass(), e.getMessage(), e);
      result = "Could not delete the pushed assets. " + e.getMessage();
    }

    return result;
  }

    public int removeOldVersions(String date) throws ParseException, SQLException, DotDataException {
          Date assetsOlderThan = new SimpleDateFormat("MM/dd/yyyy").parse(date);
          return CMSMaintenanceFactory.deleteOldAssetVersions(assetsOlderThan);
    }

    public Map cleanAssets (boolean files, boolean binarys) throws DotDataException {

        //Create the thread to clean the assets
        CleanAssetsThread cleanAssetsThread = CleanAssetsThread.getInstance( true , files, binarys);
        BasicProcessStatus processStatus = cleanAssetsThread.getProcessStatus();
        cleanAssetsThread.start();

        //Return the initial process status
        return processStatus.buildStatusMap();
    }

    /**
     * Method to check the status of the clean assets process
     *
     * @return map with the current status information
     */
    public Map getCleanAssetsStatus () {

        //Getting the running clean assets thread
        CleanAssetsThread cleanAssetsThread = CleanAssetsThread.getInstance( false , false, false);
        BasicProcessStatus processStatus = cleanAssetsThread.getProcessStatus();

        //Return its current running status
        return processStatus.buildStatusMap();
    }

    public String doBackupExport(String action, boolean dataOnly) throws IOException, ServletException, DotDataException {
      validateUser();
      try {
        MaintenanceUtil.fixImagesTable();
      } catch (SQLException e) {
        Logger.error(this, e.getMessage());
      }

      String backupFilePath = ConfigUtils.getBackupPath();
      String backupTempFilePath = ConfigUtils.getBackupPath()+File.separator+"temp";

      File f = new File(backupFilePath);
      f.mkdirs();
      f = new File(backupTempFilePath);
      f.mkdirs();
      deleteTempFiles();
      String message = "";
      if(action.equals("createZip")) {
        if(!dataOnly){
          moveAssetsToBackupDir();
        }
        message = "Creating XML Files. ";
        createXMLFiles();
        String x = UtilMethods.dateToJDBC(new Date()).replace(':', '-').replace(' ', '_');
        File zipFile = new File(backupFilePath + "/backup_" + x + "_.zip");
        message +="Zipping up to file:" + zipFile.getAbsolutePath();
        BufferedOutputStream bout = new BufferedOutputStream(new FileOutputStream(zipFile));
        Logger.info(this, "Creating zipped backup file in "+ backupFilePath + " folder. Please wait");
        zipTempDirectoryToStream(bout);
        message +=". Done.";
        Logger.info(this, "Backup file was created in " +zipFile.getAbsolutePath());



      }
      /*else if(action.equals("downloadZip")) {

        message ="File Downloaded";
        String x = UtilMethods.dateToJDBC(new Date()).replace(':', '-').replace(' ', '_');
        File zipFile = new File(backupFilePath + "/backup_" + x + "_.zip");

        ActionResponseImpl responseImpl = (ActionResponseImpl) response;
        HttpServletResponse httpResponse = responseImpl.getHttpServletResponse();
        httpResponse.setHeader("Content-type", "");
        httpResponse.setHeader("Content-Disposition", "attachment; filename=" + zipFile.getName());

        if(!dataOnly){
          moveAssetsToBackupDir();
        }

        createXMLFiles();

        zipTempDirectoryToStream(httpResponse.getOutputStream());

      }*/

      return message;

    }

    public void deleteTempFiles() {
      validateUser();
      Logger.info(this, "Deleting Temporary Files");
      File f = new File(backupTempFilePath);
      String[] _tempFiles = f.list();
      Logger.info(this, "Found "+_tempFiles.length+" Files");
      int count = 0;
      for (int i = 0; i < _tempFiles.length; i++) {
        f = new File(backupTempFilePath + "/" + _tempFiles[i]);
          if(f.isDirectory()){
            FileUtil.deltree(f);
          }
        count+=1;
        f.delete();
      }
      Logger.info(this, "Deleted " + count + " Files");
    }

    public void moveAssetsToBackupDir() throws FileNotFoundException, IOException{
      validateUser();
      String assetDir;
      File backupDir = new File(backupTempFilePath);
      backupDir.mkdirs();
      Logger.info(this, "Moving assets to back up directory: " + backupTempFilePath);
      if(!UtilMethods.isSet(assetRealPath)){
        assetDir = FileUtil.getRealPath(assetPath);
      }else{
        assetDir = assetRealPath;
      }
      FileUtil.copyDirectory(assetDir, backupTempFilePath + File.separator + "asset", new AssetFileNameFilter());

      //do not ship the license.
      String f = backupTempFilePath + File.separator + "asset" + File.separator + "license";
      FileUtil.deltree(f);

      String d = backupTempFilePath + File.separator + "asset" + File.separator + "dotGenerated";
      FileUtil.deltree(d);

    }

    /**
     * This method will pull a list of all tables /classed being managed by
     * hibernate and export them, one class per file to the backupTempFilePath
     * as valid XML. It uses XStream to write the xml out to the files.
     *
     * @throws ServletException
     * @throws IOException
     * @author Will
     * @throws DotDataException
     * @throws DotCacheException
     */
    @SuppressWarnings("unchecked")
    public void createXMLFiles() throws ServletException, IOException, DotDataException {
      validateUser();
  //    deleteTempFiles();

      Logger.info(this, "Starting createXMLFiles()");

      Set<Class> _tablesToDump = new HashSet<Class>();
      try {

        /* get a list of all our tables */
        Map map = HibernateUtil.getSession().getSessionFactory().getAllClassMetadata();
        Iterator it = map.entrySet().iterator();
        while (it.hasNext()) {
          Map.Entry pairs = (Map.Entry) it.next();
          Class x = (Class) pairs.getKey();
          if (!x.equals(Inode.class) && !x.equals(Clickstream.class) && !x.equals(ClickstreamRequest.class)
                  && !x.equals(Plugin.class) && !x.equals(PluginProperty.class))
            _tablesToDump.add(x);

        }
        XStream _xstream = null;
        HibernateUtil _dh = null;
        List _list = null;
        File _writing = null;
        BufferedOutputStream _bout = null;

        for (Class clazz : _tablesToDump) {
          //http://jira.dotmarketing.net/browse/DOTCMS-5031
                  if(PermissionReference.class.equals(clazz)){
                    continue;
                  }

                  if(com.dotmarketing.portlets.contentlet.business.Contentlet.class.equals(clazz)){
                    Logger.debug(this, "Processing contentlets. This will take a little bit longer...");
                  }

          _xstream = new XStream(new DomDriver());

          //http://jira.dotmarketing.net/browse/DOTCMS-6059
          if(clazz.equals(DashboardSummary404.class) || clazz.equals(DashboardUserPreferences.class)){
            _xstream.addDefaultImplementation(com.dotcms.repackage.net.sf.hibernate.collection.Set.class, java.util.Set.class);
            _xstream.addDefaultImplementation(com.dotcms.repackage.net.sf.hibernate.collection.List.class, java.util.List.class);
            _xstream.addDefaultImplementation(com.dotcms.repackage.net.sf.hibernate.collection.Map.class, java.util.Map.class);
            Mapper mapper = _xstream.getMapper();
            _xstream.registerConverter(new HibernateCollectionConverter(mapper));
            _xstream.registerConverter(new HibernateMapConverter(mapper));
          }

          /*
           * String _shortClassName =
           * clazz.getName().substring(clazz.getName().lastIndexOf("."),clazz.getName().length());
           * xstream.alias(_shortClassName, clazz);
           */
          int i= 0;
          int step = 1000;
          int total =0;
          java.text.NumberFormat formatter = new java.text.DecimalFormat("0000000000");
          /* we will only export 10,000,000 items of any given type */
          for(i=0;i < 10000000;i=i+step){

                      _dh = new HibernateUtil(clazz);
                      _dh.setFirstResult(i);
                      _dh.setMaxResults(step);

                      //This line was previously like;
                      //_dh.setQuery("from " + clazz.getName() + " order by 1,2");
                      //This caused a problem when the database is Oracle because Oracle causes problems when the results are ordered
                      //by an NCLOB field. In the case of containers table, the second field, CODE, is an NCLOB field. Because of this,
                      //ordering is done only on the first field for the tables, which is INODE
                      if(com.dotmarketing.beans.Tree.class.equals(clazz)){
                        _dh.setQuery("from " + clazz.getName() + " order by parent, child, relation_type");
                      }
                      else if(MultiTree.class.equals(clazz)){
                        _dh.setQuery("from " + clazz.getName() + " order by parent1, parent2, child, relation_type");
                      }
                      else if(TagInode.class.equals(clazz)){
                        _dh.setQuery("from " + clazz.getName() + " order by inode, tag_id");
                      }
                      else if(FileAssetVersionInfo.class.equals(clazz)){
                        _dh.setSQLQuery("SELECT {fileasset_version_info.*} from fileasset_version_info fileasset_version_info, identifier where identifier.id = fileasset_version_info.identifier order by fileasset_version_info.identifier ");
                      }
                      else if(TemplateVersionInfo.class.equals(clazz)){
                        _dh.setSQLQuery("SELECT {template_version_info.*} from template_version_info template_version_info, identifier where identifier.id = template_version_info.identifier order by template_version_info.identifier ");
                      }
                      else if(ContainerVersionInfo.class.equals(clazz)){
                        _dh.setSQLQuery("SELECT {container_version_info.*} from container_version_info container_version_info, identifier where identifier.id = container_version_info.identifier order by container_version_info.identifier ");
                      }
                      else if(HTMLPageVersionInfo.class.equals(clazz)){
                        _dh.setSQLQuery("SELECT {htmlpage_version_info.*} from htmlpage_version_info htmlpage_version_info, identifier where identifier.id = htmlpage_version_info.identifier order by htmlpage_version_info.identifier ");
                      }
                      else if(LinkVersionInfo.class.equals(clazz)){
                        _dh.setSQLQuery("SELECT {link_version_info.*} from link_version_info link_version_info, identifier where identifier.id = link_version_info.identifier order by link_version_info.identifier ");
                      }
                      else if(CalendarReminder.class.equals(clazz)){
                        _dh.setQuery("from " + clazz.getName() + " order by user_id, event_id, send_date");
                      } else if(Identifier.class.equals(clazz)){
                        _dh.setQuery("from " + clazz.getName() + " order by parent_path");
                      } else {
                          _dh.setQuery("from " + clazz.getName() + " order by 1");

                      }

                      _list = _dh.list();
                      if(_list.size() ==0){
                          try {
                          _bout.close();
                          }
                          catch( java.lang.NullPointerException npe){}
                          _list = null;
                          _dh = null;
                          _bout = null;

                          break;
                      }

                      if(_list != null && _list.size() > 0 && _list.get(0) instanceof Comparable){
                        java.util.Collections.sort(_list);
                      }

              _writing = new File(backupTempFilePath + "/" + clazz.getName() + "_" + formatter.format(i) + ".xml");
              _bout = new BufferedOutputStream(new FileOutputStream(_writing));

              total = total + _list.size();

              try {
                          Thread.sleep(10);
                      } catch (InterruptedException e) {
                        Logger.warn(this, "An error ocurred trying to create XML files");
                          Logger.error(this,e.getMessage(),e);
                      }

              _xstream.toXML(_list, _bout);

              _bout.close();
              _list = null;
              _dh = null;
              _bout = null;

          }
          Logger.info(this, "writing : " + total + " records for " + clazz.getName());
        }

        /* Run Liferay's Tables */
        /* Companies */
        _list = PublicCompanyFactory.getCompanies();
        List<Company> companies = new ArrayList<Company>(_list);
        _xstream = new XStream(new DomDriver());
        _writing = new File(backupTempFilePath + "/" + Company.class.getName() + ".xml");
        _bout = new BufferedOutputStream(new FileOutputStream(_writing));
        _xstream.toXML(_list, _bout);
        _bout.close();
        _list = null;
        _bout = null;

        /* Users */
        _list = APILocator.getUserAPI().findAllUsers();
        _list.add(APILocator.getUserAPI().getDefaultUser());
        _xstream = new XStream(new DomDriver());
        _writing = new File(backupTempFilePath + "/" + User.class.getName() + ".xml");
        _bout = new BufferedOutputStream(new FileOutputStream(_writing));
        _xstream.toXML(_list, _bout);
        _bout.close();
        _list = null;
        _bout = null;

        /* Roles */
  //      _list = RoleManagerUtil.findAll();
  //      _xstream = new XStream(new DomDriver());
  //      _writing = new File(backupTempFilePath + "/" + Role.class.getName() + ".xml");
  //      _bout = new BufferedOutputStream(new FileOutputStream(_writing));
  //      _xstream.toXML(_list, _bout);
  //      _bout.close();
  //      _list = null;
  //      _bout = null;

        /* Groups */
  //      _list = new ArrayList<Group>();
  //      for (Company company : companies) {
  //        _list.addAll(CompanyLocalManagerUtil.getGroups(CompanyUtils.getDefaultCompany().getCompanyId()));
  //      }
  //      List<Group> groups = new ArrayList<Group>(_list);
  //      _xstream = new XStream(new DomDriver());
  //      _writing = new File(backupTempFilePath + "/" + Group.class.getName() + ".xml");
  //      _bout = new BufferedOutputStream(new FileOutputStream(_writing));
  //      _xstream.toXML(_list, _bout);
  //      _bout.close();
  //      _list = null;
  //      _bout = null;

        /* Layouts */
  //      _list = LayoutManagerUtil.findAll();
  //      _xstream = new XStream(new DomDriver());
  //      _writing = new File(backupTempFilePath + "/" + Layout.class.getName() + ".xml");
  //      _bout = new BufferedOutputStream(new FileOutputStream(_writing));
  //      _xstream.toXML(_list, _bout);
  //      _bout.close();
  //      _list = null;
  //      _bout = null;

        /* users_roles */
        DotConnect dc = new DotConnect();
  //      dc.setSQL("select * from users_roles");
  //      _list = dc.getResults();
  //      _xstream = new XStream(new DomDriver());
  //      _writing = new File(backupTempFilePath + "/Users_Roles.xml");
  //      _bout = new BufferedOutputStream(new FileOutputStream(_writing));
  //      _xstream.toXML(_list, _bout);
  //      _bout.close();
  //      _list = null;
  //      _bout = null;
  //
  //      /* users_groups */
  //      dc.setSQL("select * from users_groups");
  //      _list = dc.getResults();
  //      _xstream = new XStream(new DomDriver());
  //      _writing = new File(backupTempFilePath + "/Users_Groups.xml");
  //      _bout = new BufferedOutputStream(new FileOutputStream(_writing));
  //      _xstream.toXML(_list, _bout);
  //      _bout.close();
  //      _list = null;
  //      _bout = null;
  //
  //      /* users_groups */
  //      dc.setSQL("select * from groups_roles");
  //      _list = dc.getResults();
  //      _xstream = new XStream(new DomDriver());
  //      _writing = new File(backupTempFilePath + "/Groups_Roles.xml");
  //      _bout = new BufferedOutputStream(new FileOutputStream(_writing));
  //      _xstream.toXML(_list, _bout);
  //      _bout.close();
  //      _list = null;
  //      _bout = null;

        /* counter */
        dc.setSQL("select * from counter");
        _list = dc.getResults();
        _xstream = new XStream(new DomDriver());
        _writing = new File(backupTempFilePath + "/Counter.xml");
        _bout = new BufferedOutputStream(new FileOutputStream(_writing));
        _xstream.toXML(_list, _bout);
        _bout.close();
        _list = null;
        _bout = null;

        /* counter */
        dc.setSQL("select * from address");
        _list = dc.getResults();
        _xstream = new XStream(new DomDriver());
        _writing = new File(backupTempFilePath + "/Address.xml");
        _bout = new BufferedOutputStream(new FileOutputStream(_writing));
        _xstream.toXML(_list, _bout);
        _bout.close();
        _list = null;
        _bout = null;

        /* pollschoice */
        dc.setSQL("select * from pollschoice");
        _list = dc.getResults();
        _xstream = new XStream(new DomDriver());
        _writing = new File(backupTempFilePath + "/Pollschoice.xml");
        _bout = new BufferedOutputStream(new FileOutputStream(_writing));
        _xstream.toXML(_list, _bout);
        _bout.close();
        _list = null;
        _bout = null;

        /* pollsdisplay */
        dc.setSQL("select * from pollsdisplay");
        _list = dc.getResults();
        _xstream = new XStream(new DomDriver());
        _writing = new File(backupTempFilePath + "/Pollsdisplay.xml");
        _bout = new BufferedOutputStream(new FileOutputStream(_writing));
        _xstream.toXML(_list, _bout);
        _bout.close();
        _list = null;
        _bout = null;

        /* pollsquestion */
        dc.setSQL("select * from pollsquestion");
        _list = dc.getResults();
        _xstream = new XStream(new DomDriver());
        _writing = new File(backupTempFilePath + "/Pollsquestion.xml");
        _bout = new BufferedOutputStream(new FileOutputStream(_writing));
        _xstream.toXML(_list, _bout);
        _bout.close();
        _list = null;
        _bout = null;

        /* pollsvote */
        dc.setSQL("select * from pollsvote");
        _list = dc.getResults();
        _xstream = new XStream(new DomDriver());
        _writing = new File(backupTempFilePath + "/Pollsvote.xml");
        _bout = new BufferedOutputStream(new FileOutputStream(_writing));
        _xstream.toXML(_list, _bout);
        _bout.close();
        _list = null;
        _bout = null;

        /* image */
        _list = ImageLocalManagerUtil.getImages();

        /*
         * The changes in this part were made for Oracle databases. Oracle has problems when
         * getString() method is called on a LONG field on an Oracle database. Because of this,
         * the object is loaded from liferay and DotConnect is not used
         * http://jira.dotmarketing.net/browse/DOTCMS-1911
         */

        _xstream = new XStream(new DomDriver());
        _writing = new File(backupTempFilePath + "/Image.xml");
        _bout = new BufferedOutputStream(new FileOutputStream(_writing));
        _xstream.toXML(_list, _bout);
        _bout.close();
        _list = null;
        _bout = null;

        /* portlet */

        /*
         * The changes in this part were made for Oracle databases. Oracle has problems when
         * getString() method is called on a LONG field on an Oracle database. Because of this,
         * the object is loaded from liferay and DotConnect is not used
         * http://jira.dotmarketing.net/browse/DOTCMS-1911
         */
        dc.setSQL("select * from portlet");
        _list = dc.getResults();
        _xstream = new XStream(new DomDriver());
        _writing = new File(backupTempFilePath + "/Portlet.xml");
        _bout = new BufferedOutputStream(new FileOutputStream(_writing));
        _xstream.toXML(_list, _bout);
        _bout.close();
        _list = null;
        _bout = null;

        /* portlet_preferences */

        try{
          _list = PortletPreferencesLocalManagerUtil.getPreferences();
        }catch(Exception e){
          Logger.error(this,"Error in retrieveing all portlet preferences");
        }
        _xstream = new XStream(new DomDriver());
        _writing = new File(backupTempFilePath + "/Portletpreferences.xml");
        _bout = new BufferedOutputStream(new FileOutputStream(_writing));
        _xstream.toXML(_list, _bout);
        _bout.close();
        _list = null;
        _bout = null;



        //backup workflow
        File file = new File(backupTempFilePath + "/WorkflowSchemeImportExportObject.json");
        WorkflowImportExportUtil.getInstance().exportWorkflows(file);

      } catch (HibernateException e) {
        Logger.error(this,e.getMessage(),e);
      } catch (SystemException e) {
        Logger.error(this,e.getMessage(),e);
      }

    }

    /**
     * Will zip up all files in the tmp directory and send the result to the
     * given OutputStream
     *
     * @param out
     *            OutputStream to write the zip files to
     * @throws IOException
     * @author Will
     */
    public void zipTempDirectoryToStream(OutputStream out) throws IOException {
      byte b[] = new byte[512];
      ZipOutputStream zout = new ZipOutputStream(out);
      ZipUtil.zipDirectory(backupTempFilePath, zout);
  //    File f = new File(backupTempFilePath);
  //    String[] s = f.list();
  //    for (int i = 0; i < s.length; i++) {
  //      if(s[i].equals(".svn")){
  //        continue;
  //      }
  //      f = new File(backupTempFilePath + "/" + s[i]);
  //      InputStream in;
  //      if(f.isDirectory()){
  //        in = new BufferedInputStream(new ByteArrayInputStream(f.));
  //      }else{
  //        in = new BufferedInputStream(new FileInputStream(f));
  //      }
  //      ZipEntry e = new ZipEntry(s[i].replace(File.separatorChar, '/'));
  //      zout.putNextEntry(e);
  //      int len = 0;
  //      while ((len = in.read(b)) != -1) {
  //        zout.write(b, 0, len);
  //      }
  //      zout.closeEntry();
  //      in.close();
  //    }
      zout.close();
      out.close();
  }

      private User getUser(HttpServletRequest req) {

          // get the user
          User user = null;
          try {
              user = com.liferay.portal.util.PortalUtil.getUser(req);
          } catch (Exception e) {
              Logger.error(this, "Error trying to obtain the current liferay user from the request.", e);
              throw new DotRuntimeException ("Error trying to obtain the current liferay user from the request.");
          }
          return user;

      }
}
TOP

Related Classes of com.dotmarketing.portlets.cmsmaintenance.ajax.CMSMaintenanceAjax

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.