at.spardat.xma.boot.cache.FCResource Maven / Gradle / Ivy
/*******************************************************************************
* Copyright (c) 2003, 2007 s IT Solutions AT Spardat GmbH .
* 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:
* s IT Solutions AT Spardat GmbH - initial API and implementation
*******************************************************************************/
/*
* Created on : 04.2003
* Created by : s3595
*/
package at.spardat.xma.boot.cache;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.SimpleTimeZone;
import at.spardat.xma.boot.Statics;
import at.spardat.xma.boot.logger.LogLevel;
import at.spardat.xma.boot.logger.Logger;
import at.spardat.xma.boot.util.PropertyFile;
import at.spardat.xma.boot.util.Util;
/**
*
* class: FCResource ( File Cached Resource )
*
* Describes an entry in the file-cache.
*
* @author s3595 Chris Sch?fer (CGS)
* @version $Id: FCResource.java 2084 2007-11-27 14:53:31Z s3460 $
*/
public class FCResource implements IFileCacheResource {
/** the remote resource location */
protected URL location_;
/** info-file about the cached file */
protected PropertyFile properties_;
/** resource file */
protected File file_;
/** byte array for buffered mode */
protected byte[] buffer_;
/** extended readable file output */
protected boolean debug;
/** used to format timesamps for debug correctly (converted long milliseconds since 1.1.1970 00:00:00 GMT) */
private DateFormat formater;
VersionNumber versionNumber;
/**
*
Create a FCResource for the resources specified as a remote URL.
*
* it is protected, because a resource must not be created by others
* than the FileCache
*
* If the file does not exist, it will not be created.
*
* @param location the remote resource location
* @param file the resource file
* @param bmode buffer mode
* @throws IOException containing the filename
* @throws IllegalArgumentException the file must exist already
*/
protected FCResource(URL location, File file, boolean bmode, boolean debug) throws IOException {
File infoFile = null;
// if(location == null || file == null ) {
// throw new IllegalArgumentException( Statics.strInvalidARG );
// }
if( !file.exists() ) {
throw new FileNotFoundException( "file: " + file.getAbsolutePath()); //$NON-NLS-1$
}
formater = new SimpleDateFormat( "EEE, dd MMM yyyy hh:mm:ss zzz", Locale.getDefault() ); //$NON-NLS-1$
formater.setTimeZone(new SimpleTimeZone(0, "GMT")); //$NON-NLS-1$
this.debug = debug;
this.location_ = location;
this.file_ = file;
this.buffer_ = null;
infoFile = new File( file.getPath() + Statics.FILEINFO_EXT);
this.properties_ = new PropertyFile(infoFile, debug);
if(bmode) {
loadBuffer();
}
}// FCResource
/**
* load data from resource file into memory buffer
*
* @return void
* @throws IOException containing the filename
*/
protected void loadBuffer() throws IOException {
int length = (int)file_.length();
buffer_ = new byte[length];
InputStream is = null;
int read = 0;
try {
is = new FileInputStream( file_ );
for(int all=0; all