Skip to content

Commit

Permalink
Add support for BZip2 (adapted from SCIFIO)
Browse files Browse the repository at this point in the history
  • Loading branch information
gab1one committed Jul 7, 2017
1 parent 1458233 commit d58b357
Show file tree
Hide file tree
Showing 6 changed files with 1,412 additions and 0 deletions.
64 changes: 64 additions & 0 deletions src/main/java/org/scijava/io/location/bzip2/BZip2Handle.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
/*
* #%L
* SciJava Common shared library for SciJava software.
* %%
* Copyright (C) 2009 - 2017 Board of Regents of the University of
* Wisconsin-Madison, Broad Institute of MIT and Harvard, and Max Planck
* Institute of Molecular Cell Biology and Genetics.
* %%
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
* #L%
*/

package org.scijava.io.location.bzip2;

import java.io.IOException;

import org.scijava.io.DataHandle;
import org.scijava.io.location.AbstractCompressedHandle;
import org.scijava.plugin.Plugin;

/**
* {@link DataHandle} for a {@link BZip2Location}.
*
* @author Gabriel Einsdorf
*/
@Plugin(type = DataHandle.class)
public class BZip2Handle extends AbstractCompressedHandle<BZip2Location> {

@Override
protected void initInputStream() throws IOException {

int skipped = 0;
// ensure 2 bytes are skipped
while (skipped < 2) {
skipped += raw().skip(2l - skipped);
}
inputStream = new CBZip2InputStream(raw(), log());
}

@Override
public Class<BZip2Location> getType() {
return BZip2Location.class;
}

}
25 changes: 25 additions & 0 deletions src/main/java/org/scijava/io/location/bzip2/BZip2Location.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@

package org.scijava.io.location.bzip2;

import org.scijava.io.DataHandle;
import org.scijava.io.Location;
import org.scijava.io.location.AbstractHigherOrderLocation;

/**
* {@link Location} backed by a {@link DataHandle} that is BZip2 compressed.
*
* @author Gabriel Einsdorf
* @see BZip2Handle
*/
public class BZip2Location extends AbstractHigherOrderLocation {

/**
* Creates a {@link BZip2Location} wrapping the given location
*
* @param location the location to operate on
*/
public BZip2Location(final Location location) {
super(location);
}

}
Loading

0 comments on commit d58b357

Please sign in to comment.