/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android.content;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.DatabaseUtils;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDoneException;
import android.net.Uri;
import android.text.TextUtils;
import android.text.format.DateFormat;
import android.util.Log;
import com.galaxy.meetup.client.android.api.PhotosInAlbumOperation;
import com.galaxy.meetup.client.android.api.PhotosOfUserOperation;
import com.galaxy.meetup.client.android.api.UserPhotoAlbumsOperation;
import com.galaxy.meetup.client.android.service.EsSyncAdapterService;
import com.galaxy.meetup.client.util.EsLog;
import com.galaxy.meetup.server.client.domain.Comment;
import com.galaxy.meetup.server.client.domain.DataAlbum;
import com.galaxy.meetup.server.client.domain.DataComment;
import com.galaxy.meetup.server.client.domain.DataPhoto;
import com.galaxy.meetup.server.client.domain.DataPlusOne;
import com.galaxy.meetup.server.client.domain.DataRect32;
import com.galaxy.meetup.server.client.domain.DataShape;
import com.galaxy.meetup.server.client.domain.DataUser;
import com.galaxy.meetup.server.client.domain.DataVideo;
import com.galaxy.meetup.server.client.util.JsonUtil;
/**
*
* @author sihai
*
*/
public class EsPhotosDataApiary extends EsPhotosData {
private static final String PHOTO_COMMENT_ID_COLUMN[] = {
"plusone_data"
};
private static String sPhotosFromPostsAlbumName;
public static void deletePhotoComment(Context context, EsAccount esaccount, String s)
{
SQLiteDatabase sqlitedatabase = EsDatabaseHelper.getDatabaseHelper(context, esaccount).getWritableDatabase();
long l = System.currentTimeMillis();
String as[] = (new String[] {
s
});
long l1 = DatabaseUtils.longForQuery(sqlitedatabase, "SELECT photo_id FROM photo_comment WHERE comment_id = ?", as);
try {
sqlitedatabase.beginTransaction();
int i = sqlitedatabase.delete("photo_comment", "comment_id = ?", as);
updateCommentCount(sqlitedatabase, Long.toString(l1), -i);
sqlitedatabase.setTransactionSuccessful();
if(EsLog.isLoggable("EsPhotosData", 4))
Log.i("EsPhotosData", (new StringBuilder("[DELETE_PHOTO_COMMENT], duration: ")).append(getDeltaTime(l)).toString());
Uri uri = ContentUris.withAppendedId(EsProvider.PHOTO_COMMENTS_BY_PHOTO_ID_URI, l1);
context.getContentResolver().notifyChange(uri, null);
context.getContentResolver().notifyChange(EsProvider.PHOTO_URI, null);
} catch (SQLiteDoneException sqlitedoneexception) {
if(EsLog.isLoggable("EsPhotosData", 5))
Log.w("EsPhotosData", (new StringBuilder("WARNING: could not find photo for the comment: ")).append(s).toString());
} finally {
sqlitedatabase.endTransaction();
if(EsLog.isLoggable("EsPhotosData", 4))
Log.i("EsPhotosData", (new StringBuilder("[DELETE_PHOTO_COMMENT], duration: ")).append(getDeltaTime(l)).toString());
}
}
private static void deletePhotoPlusOneRow(SQLiteDatabase sqlitedatabase, String s)
{
sqlitedatabase.delete("photo_plusone", "photo_id=?", new String[] {
s
});
}
public static void deletePhotos(Context context, EsAccount esaccount, List list) {
if(null == list || list.isEmpty()) {
return;
}
SQLiteDatabase sqlitedatabase;
long l;
sqlitedatabase = EsDatabaseHelper.getDatabaseHelper(context, esaccount).getWritableDatabase();
l = System.currentTimeMillis();
HashMap hashmap;
StringBuilder stringbuilder;
String as[];
try {
sqlitedatabase.beginTransaction();
hashmap = new HashMap();
stringbuilder = new StringBuilder();
as = new String[list.size()];
stringbuilder.append("photo_id IN(");
int i = -1 + list.size();
do
{
if(i < 0)
break;
String s1 = Long.toString(((Long)list.get(i)).longValue());
if(EsLog.isLoggable("EsPhotosData", 3))
Log.d("EsPhotosData", (new StringBuilder(">> deletePhoto photo id: ")).append(s1).toString());
String as2[] = {
s1
};
try
{
String s2 = DatabaseUtils.stringForQuery(sqlitedatabase, "SELECT album_id FROM photo WHERE photo_id = ?", as2);
Integer integer = (Integer)hashmap.get(s2);
if(integer == null)
integer = Integer.valueOf(0);
hashmap.put(s2, Integer.valueOf(-1 + integer.intValue()));
}
catch(SQLiteDoneException sqlitedoneexception1)
{
if(EsLog.isLoggable("EsPhotosData", 5))
Log.w("EsPhotosData", (new StringBuilder("Album not found for photo: ")).append(s1).toString());
}
stringbuilder.append("?,");
as[i] = s1;
i--;
} while(true);
String s;
String as1[];
int j;
stringbuilder.setLength(-1 + stringbuilder.length());
stringbuilder.append(")");
ContentValues contentvalues = new ContentValues();
Iterator iterator = hashmap.keySet().iterator();
while(iterator.hasNext()) {
s = (String)iterator.next();
as1 = (new String[] {
s
});
j = ((Integer)hashmap.get(s)).intValue();
try {
contentvalues.put("photo_count", Long.valueOf(Math.max(0L, DatabaseUtils.longForQuery(sqlitedatabase, "SELECT photo_count FROM album WHERE photo_count NOT NULL AND album_id = ?", as1) + (long)j)));
sqlitedatabase.update("album", contentvalues, "album_id = ?", as1);
} catch (SQLiteDoneException sqlitedoneexception) {
if(EsLog.isLoggable("EsPhotosData", 4)) {
Log.i("EsPhotosData", (new StringBuilder("Photo count not found; album id: ")).append(s).toString());
}
}
}
sqlitedatabase.delete("photo", stringbuilder.toString(), as);
sqlitedatabase.setTransactionSuccessful();
context.getContentResolver().notifyChange(EsProvider.PHOTO_URI, null);
} finally {
sqlitedatabase.endTransaction();
}
}
private static void deletePhotosInTransaction(SQLiteDatabase sqlitedatabase, Map map)
{
if(map.size() > 0)
{
StringBuilder stringbuilder = new StringBuilder();
ArrayList arraylist = new ArrayList(map.size());
stringbuilder.append("photo_id IN(");
Long long1;
for(Iterator iterator = map.keySet().iterator(); iterator.hasNext(); arraylist.add(Long.toString(long1.longValue())))
{
long1 = (Long)iterator.next();
stringbuilder.append("?,");
}
stringbuilder.setLength(-1 + stringbuilder.length());
stringbuilder.append(")");
sqlitedatabase.delete("photo", stringbuilder.toString(), (String[])arraylist.toArray(new String[0]));
}
}
private static String getAlbumId(DataAlbum dataalbum)
{
String s;
try
{
Long.parseLong(dataalbum.id);
s = dataalbum.id;
}
catch(NumberFormatException numberformatexception)
{
s = (new StringBuilder()).append(dataalbum.id).append("_").append(dataalbum.owner.id).toString();
}
return s;
}
private static String getAlbumOutput(DataAlbum dataalbum, int i)
{
StringBuilder stringbuilder = new StringBuilder();
if(i > 0)
{
for(int j = 0; j < i; j++)
stringbuilder.append(' ');
}
String s = stringbuilder.toString();
stringbuilder.setLength(0);
stringbuilder.append(s).append("ALBUM [id: ").append(getAlbumId(dataalbum)).append(", owner: ").append(dataalbum.owner.id).append(", count: ").append(dataalbum.photoCount);
if(dataalbum.albumType != null)
stringbuilder.append(",\n").append(s).append(" type: ").append(dataalbum.albumType);
if(dataalbum.title != null)
stringbuilder.append(",\n").append(s).append(" title: ").append(dataalbum.title);
if(dataalbum.cover != null)
stringbuilder.append("\n").append(getCoverPhotoOutput(dataalbum.cover, i + 2));
stringbuilder.append("]");
return stringbuilder.toString();
}
private static ContentValues getCommentContentValues(DataComment datacomment, String s)
{
ContentValues contentvalues = new ContentValues();
contentvalues.put("photo_id", s);
contentvalues.put("comment_id", datacomment.id);
contentvalues.put("author_id", datacomment.user.id);
contentvalues.put("content", datacomment.text);
if(datacomment.timestamp != null)
contentvalues.put("create_time", Long.valueOf((long)(1000D * Double.parseDouble(datacomment.timestamp))));
if(datacomment.lastUpdateTimestamp != null)
contentvalues.put("update_time", datacomment.lastUpdateTimestamp);
if(datacomment.plusOne != null)
contentvalues.put("plusone_data", datacomment.plusOne.toJsonString());
else
contentvalues.putNull("plusone_data");
return contentvalues;
}
private static DataPlusOne getCommentPlusOneData(SQLiteDatabase sqlitedatabase, String s)
{
Cursor cursor = null;
try {
cursor = sqlitedatabase.query("photo_comment", PHOTO_COMMENT_ID_COLUMN, "comment_id=?", new String[] {
s
}, null, null, null);
if(!cursor.moveToFirst() || cursor.isNull(0)) {
return null;
} else {
return (DataPlusOne)JsonUtil.fromByteArray(cursor.getBlob(0), DataPlusOne.class);
}
} finally {
if(null != cursor) {
cursor.close();
}
}
}
private static String getCoverPhotoOutput(DataPhoto dataphoto, int i)
{
StringBuilder stringbuilder = new StringBuilder();
if(i > 0)
{
for(int j = 0; j < i; j++)
stringbuilder.append(' ');
}
String s = stringbuilder.toString();
stringbuilder.setLength(0);
long l;
String s1;
if(dataphoto.timestampSeconds == null)
l = 0L;
else
l = (long)(1000D * dataphoto.timestampSeconds.doubleValue());
stringbuilder.append(s).append("COVER PHOTO [id: ").append(dataphoto.id).append(", owner: ");
if(dataphoto.owner == null)
s1 = "N/A";
else
s1 = dataphoto.owner.id;
stringbuilder.append(s1);
if(l != 0L)
{
CharSequence charsequence = DateFormat.format("MMM dd, yyyy h:mmaa", new Date(l));
stringbuilder.append(", date: ").append(charsequence);
}
stringbuilder.append("]");
stringbuilder.append("\n");
return stringbuilder.toString();
}
private static byte[] getFingerPrint(DataPhoto dataphoto)
{
if(dataphoto.streamId == null)
return null;
for(Iterator iterator = dataphoto.streamId.iterator(); iterator.hasNext();) {
String s = (String)iterator.next();
if(s.startsWith("cs_01_")) {
return hexToBytes(s.substring(FINGERPRINT_STREAM_PREFIX_LENGTH));
}
}
return null;
}
private static ContentValues getPhotoCommentPlusOneContentValues(DataPlusOne dataplusone)
{
ContentValues contentvalues = new ContentValues();
if(dataplusone == null)
contentvalues.putNull("plusone_data");
else
contentvalues.put("plusone_data", dataplusone.toJsonString());
return contentvalues;
}
private static String getPhotoOutput(DataPhoto dataphoto, int i)
{
StringBuilder stringbuilder = new StringBuilder();
String s = stringbuilder.toString();
stringbuilder.setLength(0);
DataPlusOne dataplusone = dataphoto.plusOne;
DataVideo datavideo = dataphoto.video;
double d;
long l;
StringBuilder stringbuilder1;
String s1;
StringBuilder stringbuilder2;
String s2;
StringBuilder stringbuilder3;
StringBuilder stringbuilder4;
boolean flag;
StringBuilder stringbuilder5;
int j;
StringBuilder stringbuilder6;
StringBuilder stringbuilder7;
Object obj;
StringBuilder stringbuilder8;
StringBuilder stringbuilder9;
Object obj1;
if(dataphoto.timestampSeconds == null)
d = 0.0D;
else
d = dataphoto.timestampSeconds.doubleValue();
l = 1000L * (long)d;
stringbuilder1 = stringbuilder.append(s).append("PHOTO [id: ").append(dataphoto.id).append(", owner: ");
if(dataphoto.owner == null)
s1 = "N/A";
else
s1 = dataphoto.owner.id;
stringbuilder1.append(s1).append(", version: ").append(dataphoto.entityVersion);
if(l != 0L)
{
CharSequence charsequence = DateFormat.format("MMM dd, yyyy h:mmaa", new Date(l));
stringbuilder.append(", date: ").append(charsequence);
}
stringbuilder.append(", \n");
stringbuilder2 = stringbuilder.append(s).append(" title: ");
if(dataphoto.title == null)
s2 = "N/A";
else
s2 = dataphoto.title;
stringbuilder3 = stringbuilder2.append(s2).append(", ");
stringbuilder4 = new StringBuilder("video? ");
if(datavideo != null)
flag = true;
else
flag = false;
stringbuilder5 = stringbuilder3.append(stringbuilder4.append(flag).toString()).append(", comments: ");
if(dataphoto.totalComments == null)
j = 0;
else
j = dataphoto.totalComments.intValue();
stringbuilder6 = stringbuilder5.append(j).append(", ");
stringbuilder7 = new StringBuilder("+1s: ");
if(dataplusone != null)
obj = dataplusone.globalCount;
else
obj = "0";
stringbuilder8 = stringbuilder6.append(stringbuilder7.append(obj).toString()).append(", ");
stringbuilder9 = new StringBuilder("by me: ");
if(dataplusone != null)
obj1 = dataplusone.isPlusonedByViewer;
else
obj1 = "false";
stringbuilder8.append(stringbuilder9.append(obj1).toString());
if(dataphoto.streamId != null)
{
String s3;
for(Iterator iterator1 = dataphoto.streamId.iterator(); iterator1.hasNext(); stringbuilder.append(", \n").append(s).append(" stream: ").append(s3))
s3 = (String)iterator1.next();
}
if(dataphoto.album != null)
stringbuilder.append("\n").append(getAlbumOutput(dataphoto.album, 2));
if(dataphoto.shape != null)
{
DataShape datashape;
for(Iterator iterator = dataphoto.shape.iterator(); iterator.hasNext(); stringbuilder.append("\n").append(getShapeOutput(datashape, 2)))
datashape = (DataShape)iterator.next();
}
stringbuilder.append("]");
stringbuilder.append("\n");
stringbuilder.append("\n");
return stringbuilder.toString();
}
private static ContentValues getShapeContentValues(DataShape datashape, String s, String s1)
{
ContentValues contentvalues;
contentvalues = new ContentValues();
if(datashape.relativeBounds != null)
contentvalues.put("bounds", datashape.relativeBounds.toJsonString());
contentvalues.put("creator_id", datashape.creator.id);
contentvalues.put("photo_id", Long.valueOf(Long.parseLong(s)));
contentvalues.put("shape_id", datashape.id);
contentvalues.put("status", datashape.status);
if(null != datashape.user) {
contentvalues.put("subject_id", datashape.user.id);
} else {
if(null != datashape.suggestion && !datashape.suggestion.isEmpty()) {
DataUser datauser;
for(Iterator iterator = datashape.suggestion.iterator(); iterator.hasNext();) {
datauser = (DataUser)iterator.next();
if(null != datauser.id && datauser.id.equals(s1)) {
contentvalues.put("subject_id", datauser.id);
break;
}
}
}
}
return contentvalues;
}
private static String getShapeOutput(DataShape datashape, int i)
{
StringBuilder stringbuilder = new StringBuilder();
if(i > 0)
{
for(int j = 0; j < i; j++)
stringbuilder.append(' ');
}
String s = stringbuilder.toString();
stringbuilder.setLength(0);
DataRect32 datarect32 = datashape.bounds;
StringBuilder stringbuilder1 = stringbuilder.append(s).append("SHAPE [(");
Object aobj[] = new Object[4];
aobj[0] = datarect32.upperLeft.x;
aobj[1] = datarect32.upperLeft.y;
aobj[2] = datarect32.lowerRight.x;
aobj[3] = datarect32.lowerRight.y;
StringBuilder stringbuilder2 = stringbuilder1.append(String.format("%d, %d, %d, %d", aobj)).append("), ").append("subjectId: ");
String s1;
Boolean boolean1;
Boolean boolean2;
Boolean boolean3;
Boolean boolean4;
StringBuilder stringbuilder3;
if(datashape.user == null)
s1 = "N/A";
else
s1 = datashape.user.id;
stringbuilder2.append(s1).append(", status: ").append(datashape.status);
boolean1 = Boolean.valueOf(false);
boolean2 = Boolean.valueOf(false);
boolean3 = datashape.viewerCanEdit;
boolean4 = datashape.viewerCanApprove;
stringbuilder3 = new StringBuilder();
String s2;
String s6;
if(boolean1 != null && boolean1.booleanValue())
{
if(stringbuilder3.length() == 0)
s6 = "";
else
s6 = "|";
stringbuilder3.append(s6).append("COMMENT");
}
if(boolean2 != null && boolean2.booleanValue())
{
String s5;
if(stringbuilder3.length() == 0)
s5 = "";
else
s5 = "|";
stringbuilder3.append(s5).append("TAG");
}
if(boolean3 != null && boolean3.booleanValue())
{
String s4;
if(stringbuilder3.length() == 0)
s4 = "";
else
s4 = "|";
stringbuilder3.append(s4).append("EDIT");
}
if(boolean4 != null && boolean4.booleanValue())
{
String s3;
if(stringbuilder3.length() == 0)
s3 = "";
else
s3 = "|";
stringbuilder3.append(s3).append("APPROVE");
}
s2 = stringbuilder3.toString();
if(!TextUtils.isEmpty(s2))
stringbuilder.append(", \n").append(s).append(" state: ").append(s2);
stringbuilder.append("]");
return stringbuilder.toString();
}
private static void insertAlbumInTransaction(SQLiteDatabase sqlitedatabase, DataAlbum dataalbum, Long long1, List list)
{
Long long2 = dataalbum.entityVersion;
if(null != long1 && long1.equals(long2)) {
if(EsLog.isLoggable("EsPhotosData", 3))
Log.d("EsPhotosData", (new StringBuilder("Album not updated; id: ")).append(dataalbum.id).toString());
return;
}
Long long3 = insertOrUpdateAlbumRow(sqlitedatabase, dataalbum);
if(long3 == null)
{
if(EsLog.isLoggable("EsPhotosData", 5))
Log.w("EsPhotosData", "Could not insert album row");
} else
{
boolean flag = "UPDATES_ALBUMS".equals(dataalbum.albumType);
boolean flag1;
if(!TextUtils.equals(dataalbum.id, getAlbumId(dataalbum)))
flag1 = true;
else
flag1 = false;
if(!flag || flag1)
{
DataPhoto dataphoto = dataalbum.cover;
long l = long3.longValue();
if(dataphoto != null && dataphoto.original != null)
{
String as[] = new String[1];
as[0] = Long.toString(l);
sqlitedatabase.delete("album_cover", "album_key=?", as);
ContentValues contentvalues = new ContentValues();
contentvalues.put("album_key", Long.valueOf(l));
contentvalues.put("url", dataphoto.original.url);
contentvalues.put("width", dataphoto.original.width);
contentvalues.put("height", dataphoto.original.height);
contentvalues.put("size", dataphoto.fileSize);
sqlitedatabase.insertWithOnConflict("album_cover", null, contentvalues, 4);
}
}
if(list != null)
list.add(EsProvider.PHOTO_BY_ALBUM_URI.buildUpon().appendEncodedPath(getAlbumId(dataalbum)).build());
}
}
private static void insertAlbumListInTransaction(SQLiteDatabase sqlitedatabase, List list, Map map, List list1, EsSyncAdapterService.SyncState syncstate)
{
int i = list.size();
for(int j = 0; j < i; j++)
{
DataAlbum dataalbum = (DataAlbum)list.get(j);
if(EsLog.isLoggable("EsPhotosData", 3))
EsLog.writeToLog(3, "EsPhotosData", getAlbumOutput(dataalbum, 0));
if(syncstate != null)
syncstate.incrementCount();
insertAlbumInTransaction(sqlitedatabase, dataalbum, (Long)map.remove(getAlbumId(dataalbum)), list1);
}
}
public static void insertAlbumPhotos(Context context, EsAccount esaccount, EsSyncAdapterService.SyncState syncstate, DataAlbum dataalbum, List list, Boolean boolean1)
{
ArrayList arraylist;
SQLiteDatabase sqlitedatabase = EsDatabaseHelper.getDatabaseHelper(context, esaccount).getWritableDatabase();
long l = System.currentTimeMillis();
String s = getAlbumId(dataalbum);
arraylist = new ArrayList();
Map hashmap = getCurrentAlbumMap(sqlitedatabase, s, dataalbum.owner.id);
if(EsLog.isLoggable("EsPhotosData", 3))
EsLog.writeToLog(3, "EsPhotosData", getAlbumOutput(dataalbum, 0));
Cursor cursor = null;
try {
Long long1 = null;
sqlitedatabase.beginTransaction();
if(syncstate != null)
syncstate.incrementCount();
String as[] = {
"entity_version"
};
String as1[] = new String[1];
as1[0] = dataalbum.id;
cursor = sqlitedatabase.query("album", as, "album_id=?", as1, null, null, null);
if(cursor.moveToFirst()) {
long1 = Long.valueOf(cursor.getLong(0));
}
insertAlbumInTransaction(sqlitedatabase, dataalbum, long1, arraylist);
ContentValues contentvalues = new ContentValues();
contentvalues.put("album_id", s);
insertPhotosInTransaction(sqlitedatabase, list, boolean1, dataalbum, hashmap, "photos_in_album", contentvalues, arraylist, syncstate);
deletePhotosInTransaction(sqlitedatabase, hashmap);
sqlitedatabase.setTransactionSuccessful();
ContentResolver contentresolver = context.getContentResolver();
for(Iterator iterator = arraylist.iterator(); iterator.hasNext(); contentresolver.notifyChange((Uri)iterator.next(), null));
} finally {
sqlitedatabase.endTransaction();
if(null != cursor) {
cursor.close();
}
if(EsLog.isLoggable("EsPhotosData", 4))
{
StringBuilder stringbuilder1 = (new StringBuilder("[INSERT_ALBUM_PHOTOS], album ID: ")).append(s).append(", num photos: ");
StringBuilder stringbuilder;
int j;
if(list != null)
j = list.size();
else
j = 0;
Log.i("EsPhotosData", stringbuilder1.append(j).append(", duration: ").append(getDeltaTime(l)).toString());
}
}
}
public static void insertAlbums(Context context, EsAccount esaccount, EsSyncAdapterService.SyncState syncstate, String s, List list, List list1)
{
SQLiteDatabase sqlitedatabase = EsDatabaseHelper.getDatabaseHelper(context, esaccount).getWritableDatabase();
long l = System.currentTimeMillis();
Map hashmap = getAlbumEntityMap(sqlitedatabase, s);
ArrayList arraylist = new ArrayList();
int i = 0;
ArrayList arraylist1;
StringBuilder stringbuilder;
try {
sqlitedatabase.beginTransaction();
i = 0;
if(list != null)
{
i = 0 + list.size();
insertAlbumListInTransaction(sqlitedatabase, list, hashmap, arraylist, syncstate);
}
if(list1 != null)
{
i += list1.size();
insertAlbumListInTransaction(sqlitedatabase, list1, hashmap, arraylist, syncstate);
}
int j = hashmap.size();
arraylist1 = new ArrayList(j);
stringbuilder = new StringBuilder();
stringbuilder.append("album_type == 'ALL_OTHERS' AND album_id IN(");
if(j > 0) {
String s2;
for(Iterator iterator = hashmap.keySet().iterator(); iterator.hasNext(); arraylist1.add(s2))
{
s2 = (String)iterator.next();
stringbuilder.append("?,");
}
}
stringbuilder.setLength(-1 + stringbuilder.length());
stringbuilder.append(")");
sqlitedatabase.delete("album", stringbuilder.toString(), (String[])arraylist1.toArray(new String[0]));
sqlitedatabase.setTransactionSuccessful();
if(EsLog.isLoggable("EsPhotosData", 4))
Log.i("EsPhotosData", (new StringBuilder("[INSERT_ALBUM_LIST], num albums: ")).append(i).append(", duration: ").append(getDeltaTime(l)).toString());
Uri uri2;
for(Iterator iterator1 = arraylist.iterator(); iterator1.hasNext(); context.getContentResolver().notifyChange(uri2, null))
uri2 = (Uri)iterator1.next();
Uri uri1;
for(Iterator iterator2 = hashmap.keySet().iterator(); iterator2.hasNext(); context.getContentResolver().notifyChange(uri1, null))
{
String s1 = (String)iterator2.next();
uri1 = Uri.withAppendedPath(EsProvider.PHOTO_BY_ALBUM_URI, s1);
}
if(i > 0 || hashmap.size() > 0)
{
Uri uri = Uri.withAppendedPath(EsProvider.ALBUM_VIEW_BY_OWNER_URI, s);
context.getContentResolver().notifyChange(uri, null);
}
} finally {
sqlitedatabase.endTransaction();
}
}
public static void insertEventPhotoInTransaction(SQLiteDatabase sqlitedatabase, DataPhoto dataphoto, String s, Map map, List list)
{
long l = System.currentTimeMillis();
ContentValues contentvalues;
String as[];
if(EsLog.isLoggable("EsPhotosData", 3))
EsLog.writeToLog(3, "EsPhotosData", getPhotoOutput(dataphoto, 0));
if(insertPhotoInTransaction(sqlitedatabase, dataphoto, null, true, map, null, list, null) == null && EsLog.isLoggable("EsPhotosData", 5))
Log.w("EsPhotosData", (new StringBuilder("Could not insert row for event photo; id: ")).append(dataphoto.id).toString());
contentvalues = new ContentValues();
contentvalues.put("event_id", s);
contentvalues.put("photo_id", Long.valueOf(Long.parseLong(dataphoto.id)));
as = new String[2];
as[0] = s;
as[1] = dataphoto.id;
if(DatabaseUtils.longForQuery(sqlitedatabase, "SELECT count(*) FROM photos_in_event WHERE event_id=? AND photo_id=?", as) != 0L) {
sqlitedatabase.update("photos_in_event", contentvalues, "event_id=? AND photo_id=?", as);
} else {
sqlitedatabase.insert("photos_in_event", null, contentvalues);
}
if(EsLog.isLoggable("EsPhotosData", 4))
Log.i("EsPhotosData", (new StringBuilder("[INSERT_EVENT_PHOTO], event: ")).append(s).append(", duration: ").append(getDeltaTime(l)).toString());
}
private static Long insertOrUpdateAlbumRow(SQLiteDatabase sqlitedatabase, DataAlbum dataalbum)
{
ContentValues contentvalues = new ContentValues();
contentvalues.put("album_id", getAlbumId(dataalbum));
contentvalues.put("owner_id", dataalbum.owner.id);
if(!TextUtils.isEmpty(dataalbum.title))
contentvalues.put("title", dataalbum.title);
if(dataalbum.timestampSeconds != null)
contentvalues.put("timestamp", Long.valueOf((long)(1000D * Double.parseDouble(dataalbum.timestampSeconds))));
contentvalues.put("album_type", dataalbum.albumType);
if(dataalbum.entityVersion != null)
contentvalues.put("entity_version", dataalbum.entityVersion);
String s;
Long long1;
if(!"ALL_OTHERS".equals(dataalbum.albumType))
{
if("UPDATES_ALBUMS".equals(dataalbum.albumType))
{
contentvalues.put("stream_id", "posts");
contentvalues.put("sort_order", Integer.valueOf(40));
if(!TextUtils.isEmpty(sPhotosFromPostsAlbumName))
contentvalues.put("title", sPhotosFromPostsAlbumName);
} else
if("BUNCH_ALBUMS".equals(dataalbum.albumType))
{
contentvalues.put("stream_id", "messenger");
contentvalues.put("sort_order", Integer.valueOf(50));
} else
if("PROFILE_PHOTOS".equals(dataalbum.albumType))
{
contentvalues.put("stream_id", "profile");
contentvalues.put("sort_order", Integer.valueOf(60));
} else
{
contentvalues.putNull("stream_id");
}
contentvalues.putNull("photo_count");
} else
{
contentvalues.put("sort_order", Integer.valueOf(100));
contentvalues.putNull("stream_id");
if(dataalbum.photoCount != null)
contentvalues.put("photo_count", dataalbum.photoCount);
}
if(dataalbum.cover != null && dataalbum.cover.id != null)
contentvalues.put("cover_photo_id", Long.valueOf(Long.parseLong(dataalbum.cover.id)));
s = getAlbumId(dataalbum);
long1 = getAlbumRowId(sqlitedatabase, s);
if(long1 == null)
{
long1 = Long.valueOf(sqlitedatabase.insertWithOnConflict("album", null, contentvalues, 4));
if(long1.longValue() == -1L)
long1 = null;
} else
if(sqlitedatabase.update("album", contentvalues, "album_id=?", new String[] {s}) == 0)
long1 = null;
return long1;
}
private static boolean insertOrUpdatePhotoCommentRow(SQLiteDatabase sqlitedatabase, String s, ContentValues contentvalues)
{
boolean flag = true;
String as[] = new String[]{s};
if(DatabaseUtils.longForQuery(sqlitedatabase, "SELECT count(*) FROM photo_comment WHERE comment_id=?", as) != 0L) {
if(sqlitedatabase.update("photo_comment", contentvalues, "comment_id=?", as) == 0)
flag = false;
} else {
if(sqlitedatabase.insertWithOnConflict("photo_comment", null, contentvalues, 4) == -1L)
flag = false;
}
return flag;
}
private static boolean insertOrUpdatePhotoPlusOneRow(SQLiteDatabase sqlitedatabase, DataPlusOne dataplusone, String s)
{
ContentValues contentvalues;
boolean flag1;
contentvalues = new ContentValues();
boolean flag;
int i;
int k;
if(dataplusone.isPlusonedByViewer == null)
flag = false;
else
flag = dataplusone.isPlusonedByViewer.booleanValue();
if(dataplusone.globalCount == null)
i = 0;
else
i = dataplusone.globalCount.intValue();
contentvalues.put("plusone_data", dataplusone.toJsonString());
contentvalues.put("plusone_by_me", Boolean.valueOf(flag));
contentvalues.put("plusone_count", Integer.valueOf(i));
contentvalues.put("plusone_id", dataplusone.id);
contentvalues.put("photo_id", s);
if(DatabaseUtils.longForQuery(sqlitedatabase, "SELECT count(*) FROM photo_plusone WHERE photo_id=?", new String[] {s}) != 0L) {
int j = sqlitedatabase.update("photo_plusone", contentvalues, "photo_id=?", new String[] {
s
});
flag1 = false;
if(j != 0)
flag1 = true;
} else {
flag1 = false;
if(sqlitedatabase.insertWithOnConflict("photo_plusone", null, contentvalues, 4) != -1L)
flag1 = true;
}
return flag1;
}
public static void insertPhoto(Context context, EsAccount esaccount, EsSyncAdapterService.SyncState syncstate, DataPhoto dataphoto, Boolean boolean1)
{
SQLiteDatabase sqlitedatabase = EsDatabaseHelper.getDatabaseHelper(context, esaccount).getWritableDatabase();
long l = System.currentTimeMillis();
ArrayList arraylist = new ArrayList();
try {
sqlitedatabase.beginTransaction();
if(EsLog.isLoggable("EsPhotosData", 3))
EsLog.writeToLog(3, "EsPhotosData", getPhotoOutput(dataphoto, 0));
HashSet hashset = new HashSet();
if(insertPhotoInTransaction(sqlitedatabase, dataphoto, boolean1, true, null, hashset, arraylist, esaccount.getGaiaId()) == null && EsLog.isLoggable("EsPhotosData", 5))
Log.w("EsPhotosData", (new StringBuilder("Could not insert row for photo of me; id: ")).append(dataphoto.id).toString());
EsPeopleData.replaceUsersInTransaction(sqlitedatabase, new ArrayList(hashset));
sqlitedatabase.setTransactionSuccessful();
if(EsLog.isLoggable("EsPhotosData", 4))
Log.i("EsPhotosData", (new StringBuilder("[INSERT_PHOTO], photo ID: ")).append(dataphoto.id).append(", duration: ").append(getDeltaTime(l)).toString());
Uri uri;
for(Iterator iterator = arraylist.iterator(); iterator.hasNext(); context.getContentResolver().notifyChange(uri, null))
uri = (Uri)iterator.next();
context.getContentResolver().notifyChange(EsProvider.PHOTO_URI, null);
} finally {
sqlitedatabase.endTransaction();
}
}
private static Long insertPhotoInTransaction(SQLiteDatabase sqlitedatabase, DataPhoto dataphoto, Boolean boolean1, boolean flag, Map map, Set set, List list, String s)
{
if(null == dataphoto.album) {
if(EsLog.isLoggable("EsPhotosData", 5))
Log.w("EsPhotosData", (new StringBuilder("Cannot add photo that has no album; photo id: ")).append(dataphoto.id).toString());
return null;
}
Long long4 = null;
HashMap hashmap;
Cursor cursor = null;
DataAlbum dataalbum = dataphoto.album;
String s1 = getAlbumId(dataalbum);
Long long1;
Long long2;
if(map != null)
long1 = (Long)map.get(s1);
else
long1 = null;
if(long1 == null)
try
{
String as6[] = new String[1];
as6[0] = dataalbum.id;
long1 = Long.valueOf(DatabaseUtils.longForQuery(sqlitedatabase, "SELECT entity_version FROM album WHERE album_id = ?", as6));
if(map != null)
map.put(s1, long1);
}
catch(SQLiteDoneException sqlitedoneexception)
{
long1 = null;
if(map != null)
{
map.put(s1, Long.valueOf(-1L));
long1 = null;
}
}
long2 = dataalbum.entityVersion;
if(long1 == null || long2 != null && !long1.equals(long2))
{
if(insertOrUpdateAlbumRow(sqlitedatabase, dataalbum) == null)
{
if(EsLog.isLoggable("EsPhotosData", 5))
Log.w("EsPhotosData", (new StringBuilder("Could not insert album row; album id: ")).append(s1).toString());
return null;
}
if(map != null)
map.put(s1, long2);
}
ContentValues contentvalues = new ContentValues();
contentvalues.put("photo_id", Long.valueOf(Long.parseLong(dataphoto.id)));
contentvalues.put("plus_one_key", Integer.valueOf(0));
contentvalues.put("album_id", s1);
contentvalues.put("url", dataphoto.original.url);
contentvalues.put("title", dataphoto.title);
if(!TextUtils.isEmpty(dataphoto.caption))
contentvalues.put("description", dataphoto.caption);
Boolean boolean2 = dataphoto.viewerCanComment;
Boolean boolean3 = dataphoto.viewerCanTag;
Boolean boolean4 = Boolean.valueOf(false);
Boolean boolean5 = Boolean.valueOf(false);
byte byte0;
int i;
byte byte1;
int j;
byte byte2;
int k;
byte byte3;
Long long3;
byte abyte0[];
String as1[];
String as2[];
if(boolean2 != null && boolean2.booleanValue())
byte0 = 2;
else
byte0 = 0;
i = byte0 | 0;
if(boolean3 != null && boolean3.booleanValue())
byte1 = 4;
else
byte1 = 0;
j = i | byte1;
if(boolean4 != null && boolean4.booleanValue())
byte2 = 8;
else
byte2 = 0;
k = j | byte2;
if(boolean5 != null && boolean5.booleanValue())
byte3 = 16;
else
byte3 = 0;
contentvalues.put("action_state", Integer.valueOf(byte3 | k));
if(dataphoto.totalComments != null)
{
int k1;
if(dataphoto.comment == null)
k1 = 0;
else
k1 = dataphoto.comment.size();
if(k1 != 0)
{
contentvalues.put("comment_count", Integer.valueOf(k1));
if(EsLog.isLoggable("EsPhotosData", 5) && k1 != dataphoto.totalComments.intValue())
Log.w("EsPhotosData", (new StringBuilder("WARN: comment mismatch; total: ")).append(dataphoto.totalComments).append(", actual: ").append(k1).toString());
} else
{
contentvalues.put("comment_count", dataphoto.totalComments);
}
}
if(dataphoto.owner != null)
contentvalues.put("owner_id", dataphoto.owner.id);
if(dataphoto.timestampSeconds != null && dataphoto.timestampSeconds.doubleValue() > 0.0D)
{
long3 = Long.valueOf(dataphoto.timestampSeconds.longValue());
} else
{
Double double1 = dataphoto.uploadTimestampSeconds;
long3 = null;
if(double1 != null)
{
double l = dataphoto.uploadTimestampSeconds.doubleValue() - 0.0D;
if(l > 0)
long3 = Long.valueOf(dataphoto.uploadTimestampSeconds.longValue());
}
}
if(long3 != null)
contentvalues.put("timestamp", Long.valueOf(1000L * long3.longValue()));
contentvalues.put("entity_version", dataphoto.entityVersion);
abyte0 = getFingerPrint(dataphoto);
if(abyte0 != null)
contentvalues.put("fingerprint", abyte0);
if(dataphoto.video != null)
contentvalues.put("video_data", dataphoto.video.toJsonString());
if(dataphoto.isPanorama != null && dataphoto.isPanorama.booleanValue())
contentvalues.put("is_panorama", Integer.valueOf(1));
if(dataphoto.uploadStatus != null)
contentvalues.put("upload_status", dataphoto.uploadStatus);
else
contentvalues.put("upload_status", "ORIGINAL");
if(boolean1 != null)
contentvalues.put("downloadable", boolean1);
if(dataphoto.original != null)
{
if(dataphoto.original.width != null)
contentvalues.put("width", dataphoto.original.width);
if(dataphoto.original.height != null)
contentvalues.put("height", dataphoto.original.height);
}
long4 = getPhotoRowId(sqlitedatabase, dataphoto.id);
if(long4 == null)
{
long4 = Long.valueOf(sqlitedatabase.insertWithOnConflict("photo", null, contentvalues, 4));
if(long4.longValue() == -1L)
long4 = null;
} else
{
String as[] = new String[1];
as[0] = dataphoto.id;
if(sqlitedatabase.update("photo", contentvalues, "photo_id=?", as) == 0)
long4 = null;
}
if(set != null)
set.add(dataphoto.owner);
if(dataphoto.plusOne != null)
insertOrUpdatePhotoPlusOneRow(sqlitedatabase, dataphoto.plusOne, dataphoto.id);
else
deletePhotoPlusOneRow(sqlitedatabase, dataphoto.id);
hashmap = new HashMap();
as1 = (new String[] {
"comment_id", "update_time"
});
as2 = new String[1];
as2[0] = dataphoto.id;
cursor = sqlitedatabase.query("photo_comment", as1, "photo_id=?", as2, null, null, null, null);
while(cursor.moveToNext())
hashmap.put(cursor.getString(0), Long.valueOf(cursor.getLong(1)));
List list1 = dataphoto.comment;
boolean flag1 = false;
if(list1 != null)
{
Iterator iterator1 = dataphoto.comment.iterator();
do
{
if(!iterator1.hasNext())
break;
DataComment datacomment = (DataComment)iterator1.next();
Long long5 = (Long)hashmap.remove(datacomment.id);
ContentValues contentvalues2 = getCommentContentValues(datacomment, dataphoto.id);
if(long5 == null || !long5.equals(datacomment.lastUpdateTimestamp))
{
if(set != null)
set.add(datacomment.user);
insertOrUpdatePhotoCommentRow(sqlitedatabase, datacomment.id, contentvalues2);
flag1 = true;
}
} while(true);
}
if(hashmap.size() > 0)
{
ArrayList arraylist = new ArrayList(hashmap.size());
StringBuilder stringbuilder = new StringBuilder();
stringbuilder.append("comment_id IN(");
String s2;
for(Iterator iterator = hashmap.keySet().iterator(); iterator.hasNext(); arraylist.add(s2))
{
s2 = (String)iterator.next();
stringbuilder.append("?,");
}
stringbuilder.setLength(-1 + stringbuilder.length());
stringbuilder.append(")");
sqlitedatabase.delete("photo_comment", stringbuilder.toString(), (String[])arraylist.toArray(new String[0]));
}
if(flag1 || hashmap.size() > 0)
{
Uri uri = Uri.withAppendedPath(EsProvider.PHOTO_COMMENTS_BY_PHOTO_ID_URI, dataphoto.id);
if(list != null)
list.add(uri);
}
String as3[] = new String[1];
as3[0] = dataphoto.id;
sqlitedatabase.delete("photo_shape", "photo_id=?", as3);
if(dataphoto.shape != null)
{
int i1 = dataphoto.shape.size();
int j1 = 0;
while(j1 < i1)
{
DataShape datashape = (DataShape)dataphoto.shape.get(j1);
DataUser datauser = datashape.user;
boolean flag2;
ContentValues contentvalues1;
if(datauser != null && datauser.displayName != null && datauser.id != null && !"0".equals(datauser.id) || datashape.suggestion != null)
flag2 = true;
else
flag2 = false;
if(!flag2)
continue;
if(set != null && datauser != null)
set.add(datauser);
contentvalues1 = getShapeContentValues(datashape, dataphoto.id, s);
if(contentvalues1 != null)
{
String as4[] = new String[1];
as4[0] = datashape.id;
if(DatabaseUtils.longForQuery(sqlitedatabase, "SELECT count(*) FROM photo_shape WHERE shape_id=?", as4) == 0L)
{
if(sqlitedatabase.insertWithOnConflict("photo_shape", null, contentvalues1, 4) == -1L);
} else
{
String as5[] = new String[1];
as5[0] = datashape.id;
if(sqlitedatabase.update("photo_shape", contentvalues1, "shape_id=?", as5) == 0);
}
}
j1++;
}
Uri uri2 = Uri.withAppendedPath(EsProvider.PHOTO_SHAPES_BY_PHOTO_ID_URI, dataphoto.id);
if(list != null)
list.add(uri2);
}
if(long4 != null)
{
Uri uri1 = Uri.withAppendedPath(EsProvider.PHOTO_BY_PHOTO_ID_URI, dataphoto.id);
if(list != null)
list.add(uri1);
}
return long4;
}
private static void insertPhotosInTransaction(SQLiteDatabase sqlitedatabase, List list, Boolean boolean1, DataAlbum dataalbum, Map map, String s, ContentValues contentvalues, List list1,
EsSyncAdapterService.SyncState syncstate)
{
// TODO
}
public static void insertStreamPhotos(Context context, EsAccount esaccount, EsSyncAdapterService.SyncState syncstate, String s, String s1, List list, boolean flag)
{
// TODO
}
public static void insertUserPhotos(Context context, EsAccount esaccount, EsSyncAdapterService.SyncState syncstate, List list, List list1, String s)
{
SQLiteDatabase sqlitedatabase;
long l;
int i;
int j;
sqlitedatabase = EsDatabaseHelper.getDatabaseHelper(context, esaccount).getWritableDatabase();
l = System.currentTimeMillis();
ArrayList arraylist = new ArrayList();
ContentValues contentvalues;
Iterator iterator;
Uri uri1;
if(list == null)
i = 0;
else
i = list.size();
if(list1 == null)
j = 0;
else
j = list1.size();
try {
sqlitedatabase.beginTransaction();
sqlitedatabase.delete("photos_of_user", "photo_of_user_id=?", new String[] {
s
});
if(EsLog.isLoggable("EsPhotosData", 3))
Log.d("EsPhotosData", ">>>>> approved photos");
contentvalues = new ContentValues();
contentvalues.put("photo_of_user_id", s);
insertPhotosInTransaction(sqlitedatabase, list, null, null, null, "photos_of_user", contentvalues, arraylist, syncstate);
if(EsLog.isLoggable("EsPhotosData", 3))
Log.d("EsPhotosData", ">>>>> unapproved photos");
insertPhotosInTransaction(sqlitedatabase, list1, null, null, null, "photos_of_user", contentvalues, arraylist, syncstate);
sqlitedatabase.setTransactionSuccessful();
if(EsLog.isLoggable("EsPhotosData", 4))
Log.i("EsPhotosData", (new StringBuilder("[INSERT_USER_PHOTOS], userId: ")).append(s).append(", approved: ").append(i).append(", unapproved: ").append(j).append(", duration: ").append(getDeltaTime(l)).toString());
for(iterator = arraylist.iterator(); iterator.hasNext(); context.getContentResolver().notifyChange(uri1, null))
uri1 = (Uri)iterator.next();
if(i > 0 || j > 0)
{
Uri uri = Uri.withAppendedPath(EsProvider.PHOTO_OF_USER_ID_URI, s);
context.getContentResolver().notifyChange(uri, null);
}
} finally {
sqlitedatabase.endTransaction();
}
}
public static void setPhotosFromPostsAlbumName(String s)
{
sPhotosFromPostsAlbumName = s;
}
static boolean syncTopLevel(Context context, EsAccount esaccount, EsSyncAdapterService.SyncState syncstate)
{
boolean flag;
if(syncstate.isCanceled())
{
flag = false;
} else
{
if(EsLog.isLoggable("EsPhotosData", 3))
Log.d("EsPhotosData", " #syncTopLevel(); start");
String s = esaccount.getGaiaId();
syncstate.onStart("Photos:TopLevel");
flag = true;
PhotosOfUserOperation photosofuseroperation = new PhotosOfUserOperation(context, esaccount, syncstate, s, false, null, null);
photosofuseroperation.start();
if(photosofuseroperation.hasError())
{
Log.w("EsPhotosData", (new StringBuilder(" #syncTopLevel(); failed user photo; code: ")).append(photosofuseroperation.getErrorCode()).append(", reason: ").append(photosofuseroperation.getReasonPhrase()).toString());
flag = false;
}
UserPhotoAlbumsOperation userphotoalbumsoperation = new UserPhotoAlbumsOperation(context, esaccount, syncstate, s, null, null);
userphotoalbumsoperation.start();
if(userphotoalbumsoperation.hasError())
{
Log.w("EsPhotosData", (new StringBuilder(" #syncTopLevel(); failed photo albums; code: ")).append(userphotoalbumsoperation.getErrorCode()).append(", reason: ").append(userphotoalbumsoperation.getReasonPhrase()).toString());
flag = false;
}
PhotosInAlbumOperation photosinalbumoperation = new PhotosInAlbumOperation(context, esaccount, syncstate, "camerasync", s, false, null, null);
photosinalbumoperation.start();
if(photosinalbumoperation.hasError())
{
Log.w("EsPhotosData", (new StringBuilder(" #syncTopLevel(); failed camera photos; code: ")).append(photosinalbumoperation.getErrorCode()).append(", reason: ").append(photosinalbumoperation.getReasonPhrase()).toString());
flag = false;
}
PhotosInAlbumOperation photosinalbumoperation1 = new PhotosInAlbumOperation(context, esaccount, syncstate, "posts", s, false, null, null);
photosinalbumoperation1.start();
if(photosinalbumoperation1.hasError())
{
Log.w("EsPhotosData", (new StringBuilder(" #syncTopLevel(); failed post photos; code: ")).append(photosinalbumoperation1.getErrorCode()).append(", reason: ").append(photosinalbumoperation1.getReasonPhrase()).toString());
flag = false;
}
if(flag && EsLog.isLoggable("EsPhotosData", 3))
Log.d("EsPhotosData", " #syncTopLevel(); completed");
syncstate.onFinish();
}
return flag;
}
public static void updateInstantUploadCover(Context context, EsAccount esaccount, DataPhoto dataphoto)
{
SQLiteDatabase sqlitedatabase;
long l;
sqlitedatabase = EsDatabaseHelper.getDatabaseHelper(context, esaccount).getWritableDatabase();
l = System.currentTimeMillis();
ContentValues contentvalues;
long l1;
sqlitedatabase.beginTransaction();
contentvalues = new ContentValues(6);
contentvalues.put("type", "from_my_phone");
contentvalues.put("sort_order", Integer.valueOf(30));
contentvalues.putNull("photo_count");
l1 = getPhotosHomeRowId(sqlitedatabase, "from_my_phone");
if(l1 == -1L) {
long l2 = sqlitedatabase.insertWithOnConflict("photo_home", null, contentvalues, 4);
l1 = l2;
} else {
sqlitedatabase.update("photo_home", contentvalues, "type=?", new String[] {
"from_my_phone"
});
}
String as[] = new String[1];
as[0] = Long.toString(l1);
sqlitedatabase.delete("photo_home_cover", "photo_home_key=?", as);
if(dataphoto != null)
{
contentvalues.clear();
contentvalues.put("photo_home_key", Long.valueOf(l1));
if(!TextUtils.isEmpty(dataphoto.id))
contentvalues.put("photo_id", dataphoto.id);
contentvalues.put("url", dataphoto.original.url);
contentvalues.put("width", dataphoto.original.width);
contentvalues.put("height", dataphoto.original.height);
contentvalues.put("size", dataphoto.fileSize);
sqlitedatabase.insertWithOnConflict("photo_home_cover", null, contentvalues, 4);
}
sqlitedatabase.setTransactionSuccessful();
sqlitedatabase.endTransaction();
if(EsLog.isLoggable("EsPhotosData", 4))
Log.i("EsPhotosData", (new StringBuilder("[INSERT_COVER_INSTANT_UPLOAD], duration: ")).append(getDeltaTime(l)).toString());
return;
}
public static void updatePhotoComment(Context context, EsAccount esaccount, Comment comment)
{
SQLiteDatabase sqlitedatabase;
long l;
String as[];
sqlitedatabase = EsDatabaseHelper.getDatabaseHelper(context, esaccount).getWritableDatabase();
l = System.currentTimeMillis();
as = new String[1];
as[0] = comment.commentId;
String s = Long.toString(DatabaseUtils.longForQuery(sqlitedatabase, "SELECT photo_id FROM photo_comment WHERE comment_id = ?", as));
if(EsLog.isLoggable("EsPhotosData", 3))
{
StringBuilder stringbuilder = new StringBuilder();
String s1 = stringbuilder.toString();
stringbuilder.setLength(0);
stringbuilder.append(s1).append("COMMENT [id: ").append(comment.commentId).append(", content: ").append(comment.text);
stringbuilder.append("]");
EsLog.writeToLog(3, "EsPhotosData", stringbuilder.toString());
}
ContentValues contentvalues = new ContentValues();
contentvalues.put("photo_id", s);
contentvalues.put("comment_id", comment.commentId);
contentvalues.put("author_id", comment.obfuscatedId);
contentvalues.put("content", comment.text);
if(comment.timestamp != null)
contentvalues.put("create_time", comment.timestamp);
if(comment.updatedTimestampUsec != null)
contentvalues.put("update_time", comment.updatedTimestampUsec);
if(comment.plusone != null)
contentvalues.put("plusone_data", comment.plusone.toJsonString());
insertOrUpdatePhotoCommentRow(sqlitedatabase, comment.commentId, contentvalues);
if(EsLog.isLoggable("EsPhotosData", 4))
Log.i("EsPhotosData", (new StringBuilder("[UPDATE_PHOTO_COMMENTS], photo ID: ")).append(s).append(", comment ID: ").append(comment.commentId).append(", duration: ").append(getDeltaTime(l)).toString());
Uri uri = Uri.withAppendedPath(EsProvider.PHOTO_COMMENTS_BY_PHOTO_ID_URI, s);
context.getContentResolver().notifyChange(uri, null);
context.getContentResolver().notifyChange(EsProvider.PHOTO_URI, null);
}
public static void updatePhotoCommentList(Context context, EsAccount esaccount, String s, List list)
{
ArrayList arraylist;
int i;
SQLiteDatabase sqlitedatabase;
long l;
arraylist = new ArrayList();
int j;
DataComment datacomment;
ContentValues contentvalues;
StringBuilder stringbuilder;
String s1;
Uri uri;
if(list == null)
i = 0;
else
i = list.size();
sqlitedatabase = EsDatabaseHelper.getDatabaseHelper(context, esaccount).getWritableDatabase();
l = System.currentTimeMillis();
try {
sqlitedatabase.beginTransaction();
for(j = 0; j < i; j++) {
datacomment = (DataComment)list.get(j);
contentvalues = getCommentContentValues(datacomment, s);
if(EsLog.isLoggable("EsPhotosData", 3))
{
stringbuilder = new StringBuilder();
s1 = stringbuilder.toString();
stringbuilder.setLength(0);
stringbuilder.append(s1).append("COMMENT [id: ").append(datacomment.id).append(", content: ").append(datacomment.text);
stringbuilder.append("]");
EsLog.writeToLog(3, "EsPhotosData", stringbuilder.toString());
}
if(insertOrUpdatePhotoCommentRow(sqlitedatabase, datacomment.id, contentvalues))
updateCommentCount(sqlitedatabase, s, 1);
uri = Uri.withAppendedPath(EsProvider.PHOTO_COMMENTS_BY_PHOTO_ID_URI, s);
context.getContentResolver().notifyChange(uri, null);
context.getContentResolver().notifyChange(EsProvider.PHOTO_URI, null);
}
sqlitedatabase.setTransactionSuccessful();
int k = arraylist.size();
for(int i1 = 0; i1 < k; i1++)
context.getContentResolver().notifyChange((Uri)arraylist.get(i1), null);
} finally {
sqlitedatabase.endTransaction();
if(EsLog.isLoggable("EsPhotosData", 4))
Log.i("EsPhotosData", (new StringBuilder("[INSERT_PHOTO_COMMENTS], photo ID: ")).append(s).append(", num comments: ").append(i).append(", duration: ").append(getDeltaTime(l)).toString());
}
}
public static void updatePhotoPlusOne(Context context, EsAccount esaccount, String s, DataPlusOne dataplusone)
{
if(EsLog.isLoggable("EsPhotosData", 3))
Log.d("EsPhotosData", (new StringBuilder(">> updatePlusOne; photo id: ")).append(s).toString());
SQLiteDatabase sqlitedatabase = EsDatabaseHelper.getDatabaseHelper(context, esaccount).getWritableDatabase();
Uri uri;
if(dataplusone != null)
insertOrUpdatePhotoPlusOneRow(sqlitedatabase, dataplusone, s);
else
deletePhotoPlusOneRow(sqlitedatabase, s);
uri = Uri.withAppendedPath(EsProvider.PHOTO_BY_PHOTO_ID_URI, s);
context.getContentResolver().notifyChange(uri, null);
}
public static boolean updatePhotoCommentPlusOne(Context context, EsAccount esaccount, String s, String s1, DataPlusOne dataplusone, boolean flag)
{
// TODO
return false;
}
public static boolean updatePhotoCommentPlusOne(Context context, EsAccount esaccount, String s, String s1, boolean flag)
{
if(EsLog.isLoggable("EsPhotosData", 3))
Log.d("EsPhotosData", (new StringBuilder(">>>>> updatePhotoCommentPlusOne photo id: ")).append(s).append(", commentId: ").append(s1).append(" ").append(flag).toString());
return updatePhotoCommentPlusOne(context, esaccount, s, s1, updatePlusOne(getCommentPlusOneData(EsDatabaseHelper.getDatabaseHelper(context, esaccount).getWritableDatabase(), s1), flag), false);
}
public static void updatePhotoPlusOne(Context context, EsAccount esaccount, String s, boolean flag)
{
SQLiteDatabase sqlitedatabase;
Cursor cursor = null;
boolean flag1;
DataPlusOne dataplusone;
DataPlusOne dataplusone1;
Uri uri;
boolean flag2;
String s1;
if(EsLog.isLoggable("EsPhotosData", 3))
{
StringBuilder stringbuilder = (new StringBuilder(">> updatePlusOne; photo id: ")).append(s);
if(flag)
s1 = "";
else
s1 = " (un)";
Log.d("EsPhotosData", stringbuilder.append(s1).append(" +1'd").toString());
}
sqlitedatabase = EsDatabaseHelper.getDatabaseHelper(context, esaccount).getWritableDatabase();
try {
cursor = sqlitedatabase.query("photo_plusone", new String[] {
"plusone_data"
}, "photo_id=?", new String[] {
s
}, null, null, null);
flag1 = cursor.moveToFirst();
dataplusone = null;
if(flag1)
{
flag2 = cursor.isNull(0);
dataplusone = null;
if(!flag2)
dataplusone = (DataPlusOne)JsonUtil.fromByteArray(cursor.getBlob(0), DataPlusOne.class);
}
dataplusone1 = updatePlusOne(dataplusone, flag);
if(null != dataplusone1) {
insertOrUpdatePhotoPlusOneRow(sqlitedatabase, dataplusone1, s);
} else {
deletePhotoPlusOneRow(sqlitedatabase, s);
}
uri = Uri.withAppendedPath(EsProvider.PHOTO_BY_PHOTO_ID_URI, s);
context.getContentResolver().notifyChange(uri, null);
} finally {
if(null != cursor) {
cursor.close();
}
}
}
public static void updatePhotoPlusOne$95d6774(Context context, EsAccount esaccount, String s, DataPlusOne dataplusone)
{
if(EsLog.isLoggable("EsPhotosData", 3))
Log.d("EsPhotosData", (new StringBuilder(">> updatePlusOne; photo id: ")).append(s).toString());
SQLiteDatabase sqlitedatabase = EsDatabaseHelper.getDatabaseHelper(context, esaccount).getWritableDatabase();
Uri uri;
if(dataplusone != null)
insertOrUpdatePhotoPlusOneRow(sqlitedatabase, dataplusone, s);
else
deletePhotoPlusOneRow(sqlitedatabase, s);
uri = Uri.withAppendedPath(EsProvider.PHOTO_BY_PHOTO_ID_URI, s);
context.getContentResolver().notifyChange(uri, null);
}
public static void updatePhotoShapeApproval(Context context, EsAccount esaccount, long l, long l1, boolean flag)
{
// TODO
}
public static void updatePhotosOfYouCover(Context context, EsAccount esaccount, DataPhoto dataphoto)
{
SQLiteDatabase sqlitedatabase;
long l;
sqlitedatabase = EsDatabaseHelper.getDatabaseHelper(context, esaccount).getWritableDatabase();
l = System.currentTimeMillis();
ContentValues contentvalues;
long l1;
sqlitedatabase.beginTransaction();
contentvalues = new ContentValues(6);
contentvalues.put("type", "photos_of_me");
contentvalues.put("sort_order", Integer.valueOf(20));
contentvalues.putNull("photo_count");
l1 = getPhotosHomeRowId(sqlitedatabase, "photos_of_me");
if(l1 == -1L) {
long l2 = sqlitedatabase.insertWithOnConflict("photo_home", null, contentvalues, 4);
l1 = l2;
} else {
sqlitedatabase.update("photo_home", contentvalues, "type=?", new String[] {
"photos_of_me"
});
}
String as[] = new String[1];
as[0] = Long.toString(l1);
sqlitedatabase.delete("photo_home_cover", "photo_home_key=?", as);
if(dataphoto != null)
{
contentvalues.clear();
contentvalues.put("photo_home_key", Long.valueOf(l1));
if(!TextUtils.isEmpty(dataphoto.id))
contentvalues.put("photo_id", dataphoto.id);
contentvalues.put("url", dataphoto.original.url);
contentvalues.put("width", dataphoto.original.width);
contentvalues.put("height", dataphoto.original.height);
contentvalues.put("size", dataphoto.fileSize);
sqlitedatabase.insertWithOnConflict("photo_home_cover", null, contentvalues, 4);
}
sqlitedatabase.setTransactionSuccessful();
sqlitedatabase.endTransaction();
if(EsLog.isLoggable("EsPhotosData", 4))
Log.i("EsPhotosData", (new StringBuilder("[INSERT_COVER_PHOTOS_OF_YOU], duration: ")).append(getDeltaTime(l)).toString());
return;
}
private static DataPlusOne updatePlusOne(DataPlusOne dataplusone, boolean flag)
{
DataPlusOne dataplusone1;
if(dataplusone == null) {
dataplusone1 = null;
if(flag)
{
dataplusone1 = new DataPlusOne();
dataplusone1.isPlusonedByViewer = Boolean.valueOf(true);
dataplusone1.globalCount = Integer.valueOf(1);
}
return dataplusone1;
} else {
if(flag) {
dataplusone.isPlusonedByViewer = Boolean.valueOf(true);
dataplusone.globalCount = Integer.valueOf(1 + dataplusone.globalCount.intValue());
} else {
dataplusone.isPlusonedByViewer = Boolean.valueOf(false);
if(dataplusone.globalCount.intValue() > 0)
{
dataplusone.globalCount = Integer.valueOf(-1 + dataplusone.globalCount.intValue());
}
}
dataplusone.id = null;
dataplusone1 = dataplusone;
return dataplusone1;
}
}
}