package lancs.mobilemedia.core.ui.datamodel; import javax.microedition.lcdui.Image; import javax.microedition.rms.RecordStoreException; import lancs.mobilemedia.core.util.MediaUtil; import lancs.mobilemedia.lib.exceptions.ImagePathNotValidException; import lancs.mobilemedia.lib.exceptions.InvalidArrayFormatException; import lancs.mobilemedia.lib.exceptions.InvalidImageDataException; import lancs.mobilemedia.lib.exceptions.InvalidImageFormatException; import lancs.mobilemedia.lib.exceptions.PersistenceMechanismException; import de.ovgu.cide.jakutil.*; public class ImageMediaAccessor extends MediaAccessor { private MediaUtil converter=new MediaUtil(); public ImageMediaAccessor( AlbumData mod){ super("mpa-","mpi-","My Photo Album"); } /** * Reset the album data for MobilePhoto. This will delete all existing photo * data from the record store and re-create the default album and photos. * @throws InvalidImageFormatException * @throws ImagePathNotValidException * @throws InvalidImageDataException * @throws PersistenceMechanismException */ public void resetRecordStore() throws InvalidImageDataException, PersistenceMechanismException { removeRecords(); addMediaData("Tucan Sam","/images/Tucan.png",default_album_name); addMediaData("Java","/images/Java.png",default_album_name); addMediaData("Linux Penguin","/images/Penguin.png",default_album_name); addMediaData("Duke (Sun)","/images/Duke1.PNG",default_album_name); addMediaData("UBC Logo","/images/ubcLogo.PNG",default_album_name); addMediaData("Gail","/images/Gail1.PNG",default_album_name); addMediaData("J. Gosling","/images/Gosling1.PNG",default_album_name); addMediaData("Gregor","/images/Gregor1.PNG",default_album_name); addMediaData("Kris","/images/Kdvolder1.PNG",default_album_name); } protected byte[] getMediaArrayOfByte( String path) throws ImagePathNotValidException, InvalidImageFormatException { byte[] data1=converter.readMediaAsByteArray(path); return data1; } protected byte[] getByteFromMediaInfo( MediaData ii) throws InvalidImageDataException { return converter.getBytesFromMediaInfo(ii); } protected MediaData getMediaFromBytes( byte[] data) throws InvalidArrayFormatException { MediaData iiObject=converter.getMediaInfoFromBytes(data); return iiObject; } /** * Fetch a single image from the Record Store This should be used for * loading images on-demand (only when they are viewed or sent via SMS etc.) * to reduce startup time by loading them all at once. * @throws PersistenceMechanismException */ public Image loadSingleImageFromRMS( String recordName, int recordId) throws PersistenceMechanismException { Image img=null; byte[] imageData=loadMediaBytesFromRMS(recordName,recordId); img=Image.createImage(imageData,0,imageData.length); return img; } }