package org.krakenapps.socialweb.facebook.jsonobject;
import java.util.ArrayList;
import java.util.Set;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.krakenapps.socialweb.facebook.graphapi.objectcode.Permissions;
import org.krakenapps.socialweb.facebook.jsonobject.fieldelement.*;
public class Photo implements FacebookGraphObject{
private String id;
private From from;
private ArrayList<Tag> tags;
private String name;
private ArrayList<NameTag> name_tags;
private String icon;
private String picture;
private String source;
private int height;
private int width;
private ArrayList<Image> images;
private String link;
private Place place;
private String created_time;
private String updated_time;
private int position;
private FbConnection fbConnection;
private class FbConnection{
public String CONN_comments = "comments";
public String CONN_likes = "likes";
public String CONN_picture = "picture";
public String CONN_tags = "tags";
private ArrayList<Comment> comments;
private Like likes;
private String picture;
private ArrayList<Tag> tags;
private class Tag{
private String id;
private String name;
}
public FbConnection(){
comments = null;
likes = null;
tags = null;
}
public ArrayList<Comment> getComments() {
return comments;
}
public void setComments(ArrayList<Comment> comments) {
this.comments = comments;
}
public Like getLikes() {
return likes;
}
public void setLikes(Like likes) {
this.likes = likes;
}
public String getPicture() {
return picture;
}
public void setPicture(String picture) {
this.picture = picture;
}
public ArrayList<Tag> getTags() {
return tags;
}
public void setTags(ArrayList<Tag> tags) {
this.tags = tags;
}
}
private class Tag{
private int x;
private int y;
public Tag(){
}
public Tag(int x , int y){
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
private class NameTag{
private String id;
private String name;
private String type;
public NameTag(){
}
public NameTag(String id , String name, String type){
this.id = id;
this.name = name;
this.type = type;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
private class Image{
private String source;
private int height;
private int width;
public Image(){
}
public Image(String source , int height, int width){
this.source = source;
this.height = height;
this.width = width;
}
public String getSource() {
return source;
}
public void setSource(String source) {
this.source = source;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
}
public Photo(){
fbConnection = new FbConnection();
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public From getFrom() {
return from;
}
public void setFrom(From from) {
this.from = from;
}
public ArrayList<Tag> getTags() {
return tags;
}
public void setTags(ArrayList<Tag> tags) {
this.tags = tags;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public ArrayList<NameTag> getName_tags() {
return name_tags;
}
public void setName_tags(ArrayList<NameTag> name_tags) {
this.name_tags = name_tags;
}
public String getPicture() {
return picture;
}
public void setPicture(String picture) {
this.picture = picture;
}
public String getSource() {
return source;
}
public void setSource(String source) {
this.source = source;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
public ArrayList<Image> getImages() {
return images;
}
public void setImages(ArrayList<Image> images) {
this.images = images;
}
public String getLink() {
return link;
}
public void setLink(String link) {
this.link = link;
}
public Place getPlace() {
return place;
}
public void setPlace(Place place) {
this.place = place;
}
public String getCreated_time() {
return created_time;
}
public void setCreated_time(String created_time) {
this.created_time = created_time;
}
public String getUpdated_time() {
return updated_time;
}
public void setUpdated_time(String updated_time) {
this.updated_time = updated_time;
}
public int getPosition() {
return position;
}
public void setPosition(int position) {
this.position = position;
}
@Override
public int parseJson(JSONObject json) {
try {
id = json.getString("id");
JSONObject fromObject = json.getJSONObject("from");
from = new From(fromObject.getString("id"),fromObject.getString("name"));
JSONObject tagsObject = json.getJSONObject("tags");
JSONArray tagsArray = tagsObject.getJSONArray("data");
ArrayList<Tag> tagsList = new ArrayList<Tag>(tagsArray.length());
for(int i=0; i<tagsArray.length(); i++){
tags.add(new Tag(tagsArray.getJSONObject(i).getInt("x"),tagsArray.getJSONObject(i).getInt("y")));
}
name = json.getString("name");
JSONObject nameTagObject = json.getJSONObject("name_tags");
JSONArray nameTagArray = nameTagObject.getJSONArray("data");
ArrayList<NameTag> nameTagList = new ArrayList<Photo.NameTag>(nameTagArray.length());
for(int i=0; i< nameTagArray.length(); i++){
nameTagList.add(new NameTag(nameTagArray.getJSONObject(i).getString("id"),nameTagArray.getJSONObject(i).getString("name"), nameTagArray.getJSONObject(i).getString("type")));
}
name_tags = nameTagList;
icon = json.getString("icon");
picture = json.getString("picture");
source = json.getString("source");
height = json.getInt("height");
width = json.getInt("width");
JSONObject imagesObejct = json.getJSONObject("images");
JSONArray imagesArray = imagesObejct.getJSONArray("data");
ArrayList<Image> imagesList= new ArrayList<Image>(imagesArray.length());
for(int i=0; i< imagesArray.length(); i++){
imagesList.add(new Image(imagesArray.getJSONObject(i).getString("source"), imagesArray.getJSONObject(i).getInt("height"), imagesArray.getJSONObject(i).getInt("width")));
}
images = imagesList;
link = json.getString("link");
JSONObject placeObject = json.getJSONObject("place");
place = new Place(placeObject.getString("id"), placeObject.getString("name"), placeObject.getInt("longitude") , placeObject.getInt("latitude"));
created_time = json.getString("created_time");
updated_time = json.getString("updated_time");
position = json.getInt("position");
} catch (JSONException e) {
e.printStackTrace();
}
return 0;
}
/* (non-Javadoc)
* @see org.krakenapps.socialweb.facebook.jsonobject.FacebookGraphObject#parseJson(org.json.JSONObject, java.util.Set)
*/
@Override
public int parseJson(JSONObject json, Set<Permissions> permit) {
// TODO Auto-generated method stub
return 0;
}
}