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

org.apache.ctakes.dockhand.build.BaseInstaller Maven / Gradle / Ivy

The newest version!
package org.apache.ctakes.dockhand.build;


import org.apache.ctakes.gui.wizard.util.DialogUtil;
import org.apache.ctakes.gui.wizard.util.RunnerUtil;

import java.io.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.concurrent.Callable;

import static org.apache.ctakes.gui.wizard.util.SystemUtil.NO_FILE;

/**
 * @author SPF , chip-nlp
 * @version %I%
 * @since 11/10/2019
 */
final public class BaseInstaller implements Callable {

   static private final String PIPER_NAME = "DockhandPipeline.piper";

   private final String _installType;
   private final String _piperCommands;
   private final Collection _copyFileSpecs;
   private File _installDir;

   public BaseInstaller( final String installType,
                         final String sourceDirUrl,
                         final String goalPomFile,
                         final Collection piperCommands,
                         final Collection extraFiles ) {
      _installType = installType;
      _piperCommands = String.join( "\n", piperCommands );
      _copyFileSpecs = new ArrayList<>( extraFiles );
      _copyFileSpecs.add( new CopyFileSpec( sourceDirUrl + "pom/" + goalPomFile, "pom.xml" ) );
      _copyFileSpecs.add( new CopyFileSpec( "/log4j2.xml" ) );
      _copyFileSpecs.add( new CopyFileSpec( "/LICENSE" ) );
      _copyFileSpecs.add( new CopyFileSpec( "/NOTICE" ) );
   }


   public boolean install() {
      final File installDir = InstallHelper.getInstance().chooseInstallDir();
      if ( installDir.equals( NO_FILE ) ) {
         DialogUtil.showInstallCanceled( _installType );
         return false;
      }
      _installDir = installDir;

      RunnerUtil.runWithProgress( "Installing " + _installType + " ...", this );
      return true;
   }

   public File call() {
      final String installPath = _installDir.getAbsolutePath();
      writePiperFile( installPath, _piperCommands );
      _copyFileSpecs.forEach( f -> f.copyToDisk( installPath ) );
      return _installDir;
   }

   static private void writePiperFile( final String installPath, final String piperCommands ) {
      new File( installPath ).mkdirs();
      final String piperPath = installPath + "/" + PIPER_NAME;
      try ( Writer writer = new BufferedWriter( new FileWriter( piperPath ) ) ) {
         writer.write( piperCommands + "\n" );
      } catch ( IOException ioE ) {
         DialogUtil.showError( ioE.getMessage() );
      }
   }


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy