/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android.iu;
import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.util.Log;
import com.android.gallery3d.common.Fingerprint;
import com.galaxy.meetup.client.util.EsLog;
import com.galaxy.picasa.store.PicasaStoreFacade;
/**
*
* @author sihai
*
*/
public class FingerprintHelper {
private static FingerprintHelper sInstance;
private final Uri mCachedFingerprintUri;
private final Uri mFingerprintUri;
private final Uri mRecalculateFingerprintUri;
private final ContentResolver mResolver;
private FingerprintHelper(Context context)
{
mResolver = context.getContentResolver();
PicasaStoreFacade picasastorefacade = PicasaStoreFacade.get(context);
mFingerprintUri = picasastorefacade.getFingerprintUri();
mCachedFingerprintUri = picasastorefacade.getFingerprintUri(false, true);
mRecalculateFingerprintUri = picasastorefacade.getFingerprintUri(true, false);
}
public static synchronized FingerprintHelper get(Context context)
{
FingerprintHelper fingerprinthelper;
if(sInstance == null)
sInstance = new FingerprintHelper(context);
fingerprinthelper = sInstance;
return fingerprinthelper;
}
private Fingerprint getFingerprint(Uri uri, String s) {
Cursor cursor = null;
try {
cursor = mResolver.query(uri, new String[] {
s
}, null, null, null);
if(null != cursor && cursor.moveToNext() && !cursor.isNull(0)) {
return new Fingerprint(cursor.getBlob(0));
}
return null;
} catch (Throwable t) {
if(EsLog.isLoggable("FingerprintHelper", 5))
Log.w("FingerprintHelper", (new StringBuilder("cannot get fingerprint for ")).append(s).toString(), t);
return null;
} finally {
if(null != cursor) {
cursor.close();
}
}
}
public final Fingerprint getCachedFingerprint(String s)
{
return getFingerprint(mCachedFingerprintUri, s);
}
public final synchronized Fingerprint getFingerprint(String s, boolean flag)
{
Fingerprint fingerprint = getFingerprint(mRecalculateFingerprintUri, s);
return fingerprint;
}
public final void invalidate(String s)
{
mResolver.delete(mFingerprintUri, null, new String[] {
s
});
}
}