Package net.sf.freecol.common.io
Class FreeColDataFile
- java.lang.Object
-
- net.sf.freecol.common.io.FreeColDataFile
-
- Direct Known Subclasses:
FreeColModFile,FreeColSavegameFile
public class FreeColDataFile extends java.lang.ObjectSupport for reading a FreeCol data file. The data file is either a ZIP-file or a directory containing certain files.
-
-
Field Summary
Fields Modifier and Type Field Description private java.io.FilefileThe file this object represents.private java.lang.StringjarDirectoryA prefix string for the jar-entries (only iffileis a ZIP-file).private static java.util.logging.Loggerloggerprivate static java.lang.StringresourceSchemeA fake URI scheme for resources delegating to other resources.protected static java.lang.StringZIP_FILE_EXTENSION
-
Constructor Summary
Constructors Constructor Description FreeColDataFile(java.io.File file)Opens the given file for reading.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidextendWithAdditionalSizesAndVariations(ResourceFactory resourceFactory, ImageResource imageResource, java.lang.String value)private java.util.List<java.nio.file.Path>findFilesWithVariationOrAlternativeSize(java.nio.file.Path filePath, boolean findVariation)private java.util.List<java.net.URI>findFilesWithVariationOrAlternativeSizeAsUri(java.nio.file.Path filePath, boolean findVariation)private static java.lang.StringfindJarDirectory(java.io.File file)Finds the directory within the zip-file in case the data file has been renamed.private java.util.Map<java.net.URI,java.util.List<java.net.URI>>findVariationsWithAlternateSizes(java.lang.String name)static javax.swing.filechooser.FileFiltergetFileFilter(java.lang.String extension)Get a file filter for a given extension.java.io.BufferedInputStreamgetInputStream(java.lang.String filename)Gets an input stream for the specified resource.java.lang.StringgetPath()Get the path to the underlying file.ResourceMappinggetResourceMapping()Creates aResourceMappingfrom the available resource files.protected java.net.URIgetURI(java.lang.String name)Get a URI to access a resource through.private voidhandleNormalResource(ResourceFactory resourceFactory, ResourceMapping rc, java.lang.String key, java.lang.String value)private java.util.List<java.lang.String>handleResources(java.util.Properties properties, ResourceMapping rc)Handles loading of all resources defined inproperties.private voidhandleVirtualResources(java.util.List<java.lang.String> virtualResources, LogBuilder lb, java.util.Properties properties, ResourceMapping rc)private java.util.PropertiesreadResourcesProperties(LogBuilder lb)Reads "resources.properties".private java.lang.StringstripEnding(java.lang.String key, java.lang.String ending)
-
-
-
Field Detail
-
logger
private static final java.util.logging.Logger logger
-
ZIP_FILE_EXTENSION
protected static final java.lang.String ZIP_FILE_EXTENSION
- See Also:
- Constant Field Values
-
resourceScheme
private static final java.lang.String resourceScheme
A fake URI scheme for resources delegating to other resources.- See Also:
- Constant Field Values
-
file
private final java.io.File file
The file this object represents.
-
jarDirectory
private final java.lang.String jarDirectory
A prefix string for the jar-entries (only iffileis a ZIP-file).
-
-
Method Detail
-
findJarDirectory
private static java.lang.String findJarDirectory(java.io.File file)
Finds the directory within the zip-file in case the data file has been renamed.- Parameters:
file- The zip-file.- Returns:
- The name of the base directory in the zip-file or null on error.
-
getURI
protected java.net.URI getURI(java.lang.String name)
Get a URI to access a resource through.- Parameters:
name- A name with special prefixes to convert to the URI.- Returns:
- A
URI, or null if none found.
-
getInputStream
public java.io.BufferedInputStream getInputStream(java.lang.String filename) throws java.io.IOExceptionGets an input stream for the specified resource.- Parameters:
filename- The filename of a resource within this collection of data. If this object represents a directory then the provided filename should be relative towards the path of the directory. In case of a compressed archive it should be the path within the archive.- Returns:
- An
InputStreamto read the resource with. - Throws:
java.io.IOException- if an error occurs
-
getResourceMapping
public ResourceMapping getResourceMapping()
Creates aResourceMappingfrom the available resource files.- Returns:
- A
ResourceMappingornullthere is no resource mapping file.
-
handleResources
private java.util.List<java.lang.String> handleResources(java.util.Properties properties, ResourceMapping rc)Handles loading of all resources defined inproperties. This method also handles alternate variations and sizes.- Parameters:
properties- The resources to be loaded.rc- The output object where resolved resources should be placed.- Returns:
- A list of keys that are virtual resources, that is a link to another resource. Virtual resources are used by mods when the author wants to reuse graphics that are defined in other FreeCol data files.
-
handleNormalResource
private void handleNormalResource(ResourceFactory resourceFactory, ResourceMapping rc, java.lang.String key, java.lang.String value)
-
handleVirtualResources
private void handleVirtualResources(java.util.List<java.lang.String> virtualResources, LogBuilder lb, java.util.Properties properties, ResourceMapping rc)
-
readResourcesProperties
private java.util.Properties readResourcesProperties(LogBuilder lb)
Reads "resources.properties". We support localized versions of this file, so that localized images can be provided.- Parameters:
lb- Just used for logging.- Returns:
- The read properties, or
nullif an error occured while reading the file(s).
-
stripEnding
private java.lang.String stripEnding(java.lang.String key, java.lang.String ending)
-
extendWithAdditionalSizesAndVariations
private void extendWithAdditionalSizesAndVariations(ResourceFactory resourceFactory, ImageResource imageResource, java.lang.String value)
-
findVariationsWithAlternateSizes
private java.util.Map<java.net.URI,java.util.List<java.net.URI>> findVariationsWithAlternateSizes(java.lang.String name)
-
findFilesWithVariationOrAlternativeSizeAsUri
private java.util.List<java.net.URI> findFilesWithVariationOrAlternativeSizeAsUri(java.nio.file.Path filePath, boolean findVariation) throws java.io.IOException- Throws:
java.io.IOException
-
findFilesWithVariationOrAlternativeSize
private java.util.List<java.nio.file.Path> findFilesWithVariationOrAlternativeSize(java.nio.file.Path filePath, boolean findVariation) throws java.io.IOException- Throws:
java.io.IOException
-
getPath
public java.lang.String getPath()
Get the path to the underlying file. Useful for error messages.- Returns:
- The path to the file.
-
getFileFilter
public static javax.swing.filechooser.FileFilter getFileFilter(java.lang.String extension)
Get a file filter for a given extension.- Parameters:
extension- The file extension to filter on.- Returns:
- File filters for the extension.
-
-