package edu.cmsc434.paintdrip.paintdripprototype.Feed; import android.graphics.Bitmap; import com.parse.ParseClassName; import com.parse.ParseFile; import com.parse.ParseObject; import com.parse.ParseUser; import java.util.ArrayList; import java.util.List; @ParseClassName("Painting") public class Painting extends ParseObject { public String username; public String description; public int likes; public Bitmap image; public Painting() { // default constructor (required for Parse) } public Painting(String authorId, String username, String description, int numLikes, ParseFile imgFile) { setUsername(username); setDescription(description); setLikesCount(numLikes); setPhotoFile(imgFile); setAuthorId(authorId); } // Dummy constructor - used to upload a dummy painting public Painting(String username, String description, int likes, Bitmap image) { this.username = username; this.description = description; this.likes = likes; this.image = image; } // --------------------- // Dummy methods - used for dummy paintings // --------------------- public Bitmap getImage() { return image; } public void setImage(Bitmap image) { this.image = image; } // --------------------- public int getLikesCount() { return getInt("likesCount"); } public void setLikesCount(int likes) { put("likesCount", likes); } // add this painting to the users list of likedPaintings and increment like count public void likePainting() { ParseUser user = ParseUser.getCurrentUser(); List<String> likedPaintings = user.getList("likedPaintings"); if(likedPaintings == null) { likedPaintings = new ArrayList<String>(); } likedPaintings.add(this.getObjectId()); user.put("likedPaintings", likedPaintings); user.saveInBackground(); int likesCount = getInt("likesCount"); put("likesCount", ++likesCount); } // remove this painting from the users list of likedPaintings and decrement like count public void unlikePainting() { ParseUser user = ParseUser.getCurrentUser(); List<String> likedPaintings = user.getList("likedPaintings"); if(likedPaintings == null) { return; } likedPaintings.remove(this.getObjectId()); user.put("likedPaintings", likedPaintings); user.saveInBackground(); int likesCount = getInt("likesCount"); put("likesCount", --likesCount); } public void setAuthorId(String authorId) { put("authorId", authorId); } public String getAuthorId() { return getString("authorId"); } public void setUsername(String username) { put("username", username); } public String getUsername() { return getString("username"); } public String getDescription() { return getString("description"); } public void setDescription(String description) { put("description", description); } public String getTitle() { return getString("title"); } public void setTitle(String title) { put("title", title); } public boolean isLiked() { ParseUser user = ParseUser.getCurrentUser(); List<ParseObject> likedPaintings = user.getList("likedPaintings"); if(likedPaintings == null) { return false; } // this makes checking for all likes O(n^2)... to be improved if(likedPaintings.contains(this.getObjectId())) { return true; }else { return false; } } public ParseFile getPhotoFile() { return getParseFile("photo"); } public void setPhotoFile(ParseFile file) { put("photo", file); } }