package edu.mit.mitmobile2;
import java.io.IOException;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
public class ImageDiskCache {
private Context mContext;
public ImageDiskCache(Context context) {
mContext = context;
}
private byte[] getImageData(ContentResolver contentResolver, String webUrl) {
Cursor cursor = contentResolver.query(
WebImageCacheProvider.CONTENT_URI,
new String[] {WebImageCacheProvider.Columns.DATA},
WebImageCacheProvider.Columns.URL + "=?",
new String[] { webUrl },
null
);
byte[] bytes = null;
if(cursor.moveToFirst()) {
int bytesIndex = cursor.getColumnIndex(WebImageCacheProvider.Columns.DATA);
bytes = cursor.getBlob(bytesIndex);
}
cursor.close();
return bytes;
}
public byte[] getImageBytes(String url) {
ContentResolver contentResolver = mContext.getContentResolver();
byte[] imageBytes = getImageData(contentResolver, url);
if(imageBytes != null) {
return imageBytes;
}
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet request = new HttpGet(url);
HttpResponse response;
try {
response = httpClient.execute(request);
if(response.getStatusLine().getStatusCode() == 200) {
byte[] imageData = EntityUtils.toByteArray(response.getEntity());
ContentValues imageValues = new ContentValues();
imageValues.put(WebImageCacheProvider.Columns.URL, url);
imageValues.put(WebImageCacheProvider.Columns.DATA, imageData);
contentResolver.insert(WebImageCacheProvider.CONTENT_URI, imageValues);
return imageData;
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}