All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jodconverter.office.OfficeProcessConfig Maven / Gradle / Ivy

/*
 * Copyright 2004 - 2012 Mirko Nasato and contributors
 *           2016 - 2018 Simon Braconnier and contributors
 *
 * This file is part of JODConverter - Java OpenDocument Converter.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.jodconverter.office;

import java.io.File;

import org.apache.commons.lang3.ArrayUtils;

import org.jodconverter.process.ProcessManager;

/**
 * This class holds the configuration of an {@link OfficeProcess}.
 *
 * @see OfficeProcess
 */
class OfficeProcessConfig {

  /**
   * The default behavior when we want to start an office process and a process with the same URL
   * already exists.
   */
  public static final boolean DEFAULT_KILL_EXISTING_PROCESS = true;

  private File officeHome;
  private File workingDir;
  private ProcessManager processManager;
  private String[] runAsArgs;
  private File templateProfileDir;
  private boolean killExistingProcess = DEFAULT_KILL_EXISTING_PROCESS;

  /** Creates configuration with default values. */
  public OfficeProcessConfig() {
    this(null, null, null);
  }

  /**
   * Creates configuration with the specified values.
   *
   * @param officeHome The home directory of the office installation.
   * @param workingDir The working directory to set to office.
   * @param processManager The process manager to use to deal with created processes.
   */
  public OfficeProcessConfig(
      final File officeHome, final File workingDir, final ProcessManager processManager) {

    this.officeHome = officeHome == null ? LocalOfficeUtils.getDefaultOfficeHome() : officeHome;
    this.workingDir =
        workingDir == null ? new File(System.getProperty("java.io.tmpdir")) : workingDir;
    this.processManager =
        processManager == null ? LocalOfficeUtils.findBestProcessManager() : processManager;
  }

  /**
   * Gets the office home directory (office installation).
   *
   * @return A file instance to the office home directory.
   */
  public File getOfficeHome() {
    return officeHome;
  }

  /**
   * Gets the {@link ProcessManager} implementation to be used when dealing with an office process
   * (retrieve PID, kill process).
   *
   * @return The provided process manager.
   */
  public ProcessManager getProcessManager() {
    return processManager;
  }

  /**
   * Gets the sudo arguments that will be used with unix commands.
   *
   * @return The sudo arguments.
   */
  public String[] getRunAsArgs() {
    return ArrayUtils.clone(runAsArgs);
  }

  /**
   * Gets the directory where temporary office profile directories will be created. An office
   * profile directory is created per office process launched.
   *
   * 

  Default: The system temporary directory as specified by the * java.io.tmpdir system property. * * @return The working directory. */ public File getWorkingDir() { return workingDir; } /** * Gets the directory to copy to the temporary office profile directories to be created. * * @return The template profile directory. */ public File getTemplateProfileDir() { return templateProfileDir; } /** * Gets whether an existing office process is killed when starting a new office process for the * same connection string. * *

  Default: true * * @return {@code true} to kill existing process, {@code false} otherwise. */ public boolean isKillExistingProcess() { return killExistingProcess; } /** * Sets the office home directory. * * @param officeHome The new home directory to set. */ public void setOfficeHome(final File officeHome) { this.officeHome = officeHome; } /** * Sets the {@code ProcessManager} implementation to use with this office process. * * @param processManager The process manager to use. */ public void setProcessManager(final ProcessManager processManager) { this.processManager = processManager; } /** * Sets the directory where temporary office profile directories will be created. An office * profile directory is created per office process launched. * * @param workingDir The new working directory. */ public void setWorkingDir(final File workingDir) { this.workingDir = workingDir; } /** * Sets the sudo arguments that will be used with unix commands. * * @param runAsArgs The sudo arguments for a unix os. */ public void setRunAsArgs(final String... runAsArgs) { this.runAsArgs = ArrayUtils.clone(runAsArgs); } /** * Sets the directory to copy to the temporary office profile directories to be created. * * @param templateProfileDir The new template profile directory. */ public void setTemplateProfileDir(final File templateProfileDir) { this.templateProfileDir = templateProfileDir; } /** * Sets whether an existing office process is killed when starting a new office process for the * same connection string. * * @param killExistingProcess {@code true} to kill existing process, {@code false} otherwise. */ public void setKillExistingProcess(final boolean killExistingProcess) { this.killExistingProcess = killExistingProcess; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy