import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.zip.Deflater;
import java.util.zip.ZipEntry;
import java.util.zip.ZipException;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;
public class MyLocationInfo
{
File tempFile = null;
private final File zipFile;
private String reportName = null;
public MyLocationInfo()
{
this.zipFile = new File ("C:\\zippedReport.zip");
}
public File getTempFile() throws IOException
{
if (tempFile == null)
convertReportToTempFile();
return tempFile;
}
public void convertReportToTempFile() throws IOException
{
ZipFile z = new ZipFile(zipFile, ZipFile.OPEN_READ);
try
{
reportName = calculateReportName();
ZipEntry entry = z.getEntry(reportName);
tempFile = File.createTempFile(reportName, ".rpt");
tempFile.deleteOnExit();
BufferedInputStream is = new BufferedInputStream(z.getInputStream(entry));
BufferedOutputStream dest = new BufferedOutputStream(new FileOutputStream(tempFile), 4096);
writeStream(is, dest);
dest.flush();
dest.close();
is.close();
}
finally
{
z.close();
}
}
public String calculateReportName() throws ZipException, IOException
{
ZipFile temp = new ZipFile (zipFile, ZipFile.OPEN_READ);
try
{
Enumeration <? extends ZipEntry> zipFileEntries = temp.entries();
while (zipFileEntries.hasMoreElements())
{
ZipEntry entry = zipFileEntries.nextElement();
String name = entry.getName();
if (!entry.isDirectory() && name.endsWith (".rpt"))
return name;
}
return null;
}
finally
{
temp.close();
}
}
public void copyTempFileToCustomLocation() throws IOException
{
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFile));
out.setLevel(Deflater.DEFAULT_COMPRESSION);
try
{
FileInputStream in = new FileInputStream(getTempFile());
try
{
out.putNextEntry(new ZipEntry(reportName));
try
{
writeStream(in, out);
}
finally
{
out.closeEntry();
}
}
finally
{
in.close();
}
}
finally
{
out.close();
}
}
private static final void writeStream(InputStream in, OutputStream out) throws IOException
{
byte[] buffer = new byte[4096];
int bytesRead = 0;
while (-1 != (bytesRead = in.read(buffer, 0, buffer.length)))
{
out.write(buffer, 0, bytesRead);
}
}
}
|
Business Objects, an SAP company http://www.businessobjects.com/ Support services http://www.businessobjects.com/services/support/ Product Documentation on the Web http://support.businessobjects.com/documentation/ |