package com.revolsys.spring.resource;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
import com.revolsys.io.FileNames;
import com.revolsys.util.Exceptions;
public class GzipResource extends AbstractResource {
private final Resource resource;
public GzipResource(final Resource resource) {
super();
this.resource = resource;
}
@Override
public String getBaseName() {
String filename = getFilename();
if (filename.endsWith(".gz")) {
filename = filename.substring(0, filename.length() - 3);
}
return FileNames.getBaseName(filename);
}
@Override
public String getDescription() {
return this.resource.getDescription();
}
@Override
public File getFile() {
return this.resource.getFile();
}
@Override
public String getFilename() {
return this.resource.getFilename();
}
@Override
public InputStream getInputStream() {
final InputStream in = this.resource.getInputStream();
try {
return new GZIPInputStream(in);
} catch (final IOException e) {
throw Exceptions.wrap(e);
}
}
@Override
public Resource getParent() {
return this.resource.getParent();
}
public Resource getResource() {
return this.resource;
}
@Override
public URI getURI() throws IOException {
return this.resource.getURI();
}
@Override
public boolean isFile() {
return this.resource.isFile();
}
@Override
public OutputStream newOutputStream() {
final OutputStream out = this.resource.newOutputStream();
try {
return new GZIPOutputStream(out);
} catch (final IOException e) {
throw Exceptions.wrap(e);
}
}
@Override
public String toString() {
return this.resource.toString();
}
}