/*******************************************************************************
* Copyright (c) 2012-2017 Codenvy, S.A.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Codenvy, S.A. - initial API and implementation
*******************************************************************************/
package org.eclipse.che.api.vfs;
import org.eclipse.che.api.core.ConflictException;
import org.eclipse.che.api.core.ForbiddenException;
import org.eclipse.che.api.core.ServerException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
/** Archiver for compressing and extracting content of folder. */
public abstract class Archiver {
protected final VirtualFile folder;
protected Archiver(VirtualFile folder) {
this.folder = folder;
}
/**
* Write compressed content of folder to specified output.
*
* @param compressOutput
* output for compressed content
*/
public abstract void compress(OutputStream compressOutput) throws IOException, ServerException;
/**
* Write compressed content of folder to specified output.
*
* @param compressOutput
* output for compressed content
* @param filter
* only files that match to this filter are written in {@code compressOutput}
*/
public abstract void compress(OutputStream compressOutput, VirtualFileFilter filter) throws IOException, ServerException;
/**
* Extract compressed content to {@code folder}.
*
* @param compressedInput
* compressed content that needed to be extracted
* @param overwrite
* overwrite existing files
* @param stripNumber
* strip number leading components from file names on extraction.
*/
public abstract void extract(InputStream compressedInput, boolean overwrite, int stripNumber)
throws IOException, ForbiddenException, ConflictException, ServerException;
}