public void Install(IPaths paths, CloudStorageAccount storageAccount, int port, ICloudDriveManager cloudDriveManager)
		{
			Trace.TraceInformation("Installing Neo4j server.");

			DownloadJava(paths, storageAccount);
            UnzipJava(paths);

			DownloadNeo4j(paths, storageAccount);
			UnzipNeo4j(paths);

            try
            {
                // try to mount cloud drive
                MountDatabase(paths, cloudDriveManager);
                SetServerDbPathConfig(paths, port);
            }
            catch (Exception ex)
            {
                Trace.TraceError("Drive Mounting Error: " + ex.Message);
            }
            
			SetServerPortAndUrlConfig(paths, port);
			SetJavaPath(paths);
			CopyConfigurationFilesToLogsDirectory(paths);

			ClearLogDirectory(paths);

			Trace.TraceInformation("Neo4j server installed.");
		}
		internal void MountDatabase(IPaths paths, ICloudDriveManager cloudDriveManager)
		{
			Trace.TraceInformation("Mounting the Neoj4 database blob drive.");

            paths.MountDrivePath = cloudDriveManager.MountDrive(ConfigSettings.StorageConnectionString, paths.Neo4jDBDriveBlobRelativePath, paths.LocalNeo4jDababaseResourceName, paths.Neo4jDBDriveSize);

			Trace.TraceInformation("Done mounting the Neoj4 database blob drive.");
		}
 public Neo4JManager(
     FileManipulation fileManipulation,
     Paths paths,
     ICloudDriveManager cloudDriveManager,
     IConfiguration configuration)
 {
     this.paths = paths;
     this.cloudDriveManager = cloudDriveManager;
     this.configuration = configuration;
     this.fileManipulation = fileManipulation;
 }