FileDocCategorySizeDatePackage
DevResourceManager.javaAPI DocphoneME MR2 API (J2ME)6861Wed May 02 18:00:46 BST 2007com.sun.j2me.global

DevResourceManager

public class DevResourceManager extends AppResourceManager
This class represents a resource manager for accessing device resources. In the case of emulator it reuses the application resource manager implementation and extends the application resource file format with new data types which are needed by the emulator.

Fields Summary
private static final String
classname
Class name
public static final byte
TYPE_NUMBER_FORMAT_SYMBOLS
constant for NumberFormatSymbols type.
public static final byte
TYPE_DATETIME_FORMAT_SYMBOLS
constant for DateFormatSymbols type.
Constructors Summary
public DevResourceManager(String baseName, String[] locales, ResourceBundleReader[] readers, ResourceCache resourceCache)
Creates a new instance of DevResourceManager. The new instance can be used to get device resources of the given locale. The resource files will be accessed through the given resource bundle reader.

param
baseName baseName should be always "common.res". Because this constructor is called by the {@link DevResourceManagerFactory} it is always ok.
param
locales array of supported locales
param
readers array of opened readers for supported locales
param
resourceCache cache instance used across resource managers.



                                                                                               
      
                                
                               
                                
        super(baseName, locales, readers, resourceCache);
    
public DevResourceManager(String base, String[] locales, ResourceBundleReader[] readers)
Creates a new instance of DevResourceManager. The new instance can be used to get device resources of the given locale. The resource files will be accessed through the given resource bundle reader.

param
base the base name
param
locales array of supported locales
param
readers array of opened readers for supported locales

        this(base, locales, readers, null);
    
Methods Summary
protected java.lang.ObjectcloneResource(java.lang.Object resource)
The method clones resource.

return
copy of resource
param
resource the resource to clone

        Object clon = super.cloneResource(resource);

        if (resource instanceof NumberFormatSymbols ||
            resource instanceof DateFormatSymbols) {
            if (Logging.REPORT_LEVEL <= Logging.INFORMATION) {
                Logging.report(Logging.INFORMATION, LogChannels.LC_JSR238,
                               classname + ": clone resource");
            }
            SerializableResource sr = (SerializableResource)resource;
            clon = sr.clone();
        }
        return clon;
    
protected java.lang.ObjectconvertToResourceType(int resourceID, byte type, int length, ResourceBundleReader reader)
Check if it is known resource type by this manager. Convert it to the expected object. It recognizes {@link #TYPE_STRING}, {@link #TYPE_BINARY}, {@link #TYPE_NUMBER_FORMAT_SYMBOLS}, {@link #TYPE_DATETIME_FORMAT_SYMBOLS}.

param
resourceID resource identifier
param
type the resource type
param
length the resource length
param
reader resource bundle reader
return
resource as object
throws
IOException thrown when resource cannot be read or cannot be converted


        DevResourceBundleReader devReader = (DevResourceBundleReader) reader;
        if (Logging.REPORT_LEVEL <= Logging.INFORMATION) {
            Logging.report(Logging.INFORMATION, LogChannels.LC_JSR238,
                           classname + ": converting resource id = \"" +
                           resourceID + "\" to object type :\"" + type +
                           "\" with reader : " + reader);
        }

        if (type == TYPE_NUMBER_FORMAT_SYMBOLS) {
            NumberFormatSymbols nfs = new NumberFormatSymbols();
            devReader.deserializeResource(nfs, resourceID);
            if (Logging.REPORT_LEVEL <= Logging.INFORMATION) {
                Logging.report(Logging.INFORMATION, LogChannels.LC_JSR238,
                               classname + ": " +
                               "Resource type is NUMBER_FORMAT_SYMBOLS");
            }
            return nfs;
        } else if (type == TYPE_DATETIME_FORMAT_SYMBOLS) {
            DateFormatSymbols dfs = new DateFormatSymbols();
            devReader.deserializeResource(dfs, resourceID);
            if (Logging.REPORT_LEVEL <= Logging.INFORMATION) {
                Logging.report(Logging.INFORMATION, LogChannels.LC_JSR238,
                               classname + ": " +
                               "Resource type is DATETIME_FORMAT_SYMBOLS");
            }
            return dfs;
        } else {
            byte[] data = null;
            if (length != 0) {
                data = reader.getRawResourceData(resourceID);
            } else {
                data = new byte[0];
            }
            if (type == TYPE_STRING) {
                Object o = getUTF8(data);
                return o;
            } else if (type == TYPE_BINARY) {
                return data;
            }
        }
        return null;