package edu.cmsc434.paintdrip.paintdripprototype;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.util.Log;
import android.widget.Toast;
import com.parse.DeleteCallback;
import com.parse.Parse;
import com.parse.ParseException;
import com.parse.ParseFile;
import com.parse.ParseObject;
import com.parse.ParseQueryAdapter;
import com.parse.ParseUser;
import com.parse.SaveCallback;
import java.io.ByteArrayOutputStream;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
import edu.cmsc434.paintdrip.paintdripprototype.Feed.FeedActivity;
import edu.cmsc434.paintdrip.paintdripprototype.Feed.FeedItemDummy;
import edu.cmsc434.paintdrip.paintdripprototype.Feed.FeedItemListener;
import edu.cmsc434.paintdrip.paintdripprototype.Feed.Painting;
/**
* Created by nadeem on 12/12/14.
*/
public class ParseManager {
Context context;
public ParseManager(Context context) {
this.context = context;
}
public void uploadDummyImages() {
FeedItemDummy dummyGenerator = new FeedItemDummy(context);
List<Painting> paintings = dummyGenerator.getGlobalOrFeedItems(5);
System.out.println("Paintings count: " + paintings.size());
for(Painting p : paintings) {
saveImage(p, p.image);
}
}
public boolean deletePainting(Painting p, final FeedItemListener listener) {
if (p == null || !p.getUsername().equals(ParseUser.getCurrentUser().getUsername())) {
return false;
}
p.deleteInBackground(new DeleteCallback() {
@Override
public void done(ParseException e) {
Log.i("JB", "Delete Finished");
listener.updatePaintings();
}
});
return true;
}
public String saveImage(Bitmap img, String description, int defaultNumLikes) {
ParseUser currentUser = ParseUser.getCurrentUser();
if(currentUser == null) {
System.out.println("ParseManager.java USER NOT LOGGED IN. NO CURRENT USER. COULD NOT SAVE");
return null;
}
// convert bitmap to png and save as a ParseFile
ByteArrayOutputStream stream = new ByteArrayOutputStream();
img.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] imgData = stream.toByteArray();
final ParseFile photoFile = new ParseFile("painting.png", imgData);
try {
photoFile.save();
}catch(ParseException e) {
e.printStackTrace();
}
// upload the painting
final Painting parseUploadedPainting = new Painting(currentUser.getObjectId(),
currentUser.getUsername(), description, defaultNumLikes, photoFile);
updateUser(parseUploadedPainting);
return photoFile.getUrl();
}
public String saveImage(final Painting painting, Bitmap img) {
ParseUser currentUser = ParseUser.getCurrentUser();
if(currentUser == null) {
System.out.println("ParseManager.java USER NOT LOGGED IN. NO CURRENT USER. COULD NOT SAVE");
return null;
}
// convert bitmap to png and save as a ParseFile
ByteArrayOutputStream stream = new ByteArrayOutputStream();
img.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] imgData = stream.toByteArray();
final ParseFile photoFile = new ParseFile("painting.png", imgData);
// upload the painting
final Painting parseUploadedPainting = new Painting(currentUser.getObjectId(),
currentUser.getUsername(), painting.description, painting.likes, photoFile);
updateUser(parseUploadedPainting);
return photoFile.getUrl();
}
// Save the painting object and add this painting as a reference ot the user's list of paintings
public void updateUser(Painting parseUploadedPainting) {
ParseUser user = ParseUser.getCurrentUser();
List<ParseObject> list = user.getList("paintings");
if(list != null) {
list.add(parseUploadedPainting);
}else {
list = new ArrayList<ParseObject>();
list.add(parseUploadedPainting);
}
user.put("paintings", list);
user.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
}
});
}
}