package eu.dnetlib.social;

import java.net.MalformedURLException;

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;

/**
 * @author alessia
 * 
 */
public class YouTubeObject implements SocialUploadable {

	private String name;
	private String mimeType;
	private String title;
	private String description;
	private String PID;
	private String[] categories;
	private String[] keywords;
	private String downloadURL;
	private String userName, password;
	private String task;

	@SuppressWarnings("unchecked")
	public JSONObject toJSONSimple() {
		JSONObject o = new JSONObject();
		o.put("name", this.name);
		o.put("mimeType", this.mimeType);
		o.put("title", this.title);
		o.put("description", this.description);
		o.put("PID", this.PID);
		o.put("downloadURL", this.downloadURL);
		o.put("userName", this.userName);
		o.put("password", this.password);
		o.put("task", this.task);
		JSONArray cats = new JSONArray();
		for (int i = 0; i < categories.length; i++)
			cats.add(categories[i]);
		o.put("categories", cats);
		JSONArray keys = new JSONArray();
		for (int i = 0; i < keywords.length; i++)
			keys.add(keywords[i]);
		o.put("keywords", keys);
		return o;
	}

	public YouTubeObject() {
		//left blank
	}

	/**
	 * Creates an instance from the JSONObject.
	 * 
	 * @param task2
	 * @throws JSONException
	 * @throws MalformedURLException
	 */
	public YouTubeObject(final JSONObject task) {
		this.name = (String) task.get("name");
		this.mimeType = (String) task.get("mimeType");
		this.title = (String) task.get("title");
		this.description = (String) task.get("description");
		this.PID = (String) task.get("PID");
		this.downloadURL = (String) task.get("downloadURL");

		JSONArray cats = (JSONArray) task.get("categories");
		this.categories = new String[cats.size()];
		for (int i = 0; i < cats.size(); i++)
			this.categories[i] = (String) cats.get(i);

		JSONArray keys = (JSONArray) task.get("keywords");
		this.keywords = new String[keys.size()];
		for (int i = 0; i < keys.size(); i++)
			this.keywords[i] = (String) keys.get(i);
		this.userName = (String) task.get("userName");
		this.password = (String) task.get("password");
	}

	/**
	 * {@inheritDoc}
	 * 
	 * @see eu.dnetlib.social.SocialUploadable#getName()
	 */
	public String getName() {
		return name;
	}

	/**
	 * {@inheritDoc}
	 * 
	 * @see eu.dnetlib.social.SocialUploadable#setName(java.lang.String)
	 */
	public void setName(final String name) {
		this.name = name;
	}

	/**
	 * {@inheritDoc}
	 * 
	 * @see eu.dnetlib.social.SocialUploadable#getMimeType()
	 */
	public String getMimeType() {
		return mimeType;
	}

	/**
	 * {@inheritDoc}
	 * 
	 * @see eu.dnetlib.social.SocialUploadable#setMimeType(java.lang.String)
	 */
	public void setMimeType(final String mimeType) {
		this.mimeType = mimeType;
	}

	/**
	 * {@inheritDoc}
	 * 
	 * @see eu.dnetlib.social.SocialUploadable#getTitle()
	 */
	public String getTitle() {
		return title;
	}

	/**
	 * {@inheritDoc}
	 * 
	 * @see eu.dnetlib.social.SocialUploadable#setTitle(java.lang.String)
	 */
	public void setTitle(final String title) {
		this.title = title;
	}

	/**
	 * {@inheritDoc}
	 * 
	 * @see eu.dnetlib.social.SocialUploadable#getDescription()
	 */
	public String getDescription() {
		return description;
	}

	/**
	 * {@inheritDoc}
	 * 
	 * @see eu.dnetlib.social.SocialUploadable#setDescription(java.lang.String)
	 */
	public void setDescription(final String description) {
		this.description = description;
	}

	/**
	 * {@inheritDoc}
	 * 
	 * @see eu.dnetlib.social.SocialUploadable#getPID()
	 */
	public String getPID() {
		return PID;
	}

	/**
	 * {@inheritDoc}
	 * 
	 * @see eu.dnetlib.social.SocialUploadable#setPID(java.lang.String)
	 */
	public void setPID(final String pID) {
		PID = pID;
	}

	/**
	 * {@inheritDoc}
	 * 
	 * @see eu.dnetlib.social.SocialUploadable#getCategories()
	 */
	public String[] getCategories() {
		return categories;
	}

	/**
	 * {@inheritDoc}
	 * 
	 * @see eu.dnetlib.social.SocialUploadable#setCategories(java.util.Collection)
	 */
	public void setCategories(final String[] categories) {
		this.categories = categories;
	}

	/**
	 * {@inheritDoc}
	 * 
	 * @see eu.dnetlib.social.SocialUploadable#getKeywords()
	 */
	public String[] getKeywords() {
		return keywords;
	}

	/**
	 * {@inheritDoc}
	 * 
	 * @see eu.dnetlib.social.SocialUploadable#setKeywords(java.util.Collection)
	 */
	public void setKeywords(final String[] keywords) {
		this.keywords = keywords;
	}

	/**
	 * {@inheritDoc}
	 * 
	 * @see eu.dnetlib.social.SocialUploadable#getTargetSite()
	 */
	@Override
	public String getTargetSite() {
		return "youTube";
	}

	/**
	 * {@inheritDoc}
	 * 
	 * @see eu.dnetlib.social.SocialUploadable#getDownloadURL()
	 */
	@Override
	public String getDownloadURL() {
		return this.downloadURL;
	}

	/**
	 * {@inheritDoc}
	 * 
	 * @see common.SocialUploadable#setDownloadURL(java.net.URL)
	 */
	@Override
	public void setDownloadURL(final String downloadURL) {
		this.downloadURL = downloadURL;

	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(final String userName) {
		this.userName = userName;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(final String password) {
		this.password = password;
	}

	public void setTask(final String task) {
		this.task = task;
	}

	public String getTask() {
		return task;
	}

}
