package chat.user;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import chat.server.call.IJSONWriter;
import chat.server.call.IJsonProvider;
import chat.server.im.DataPool;
import frame.object.data.DataObject;
import frame.object.data.Entity;

public class Notify implements IJsonProvider {
	
	private String id;
	private String sender;
    private String roletype;
    private String target;
    private String msgtitle;
    private String msgcontent;
    private Date msgtime;
	private String isread;
    
    private Session session;
    
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    
    public Notify() {}
    
    public Notify(String id) {
    	this.id = id;
    }
    
	public static boolean saveNotify(Notify notify) {
		try {
			 DataObject dataObject = DataObject.getInstance("notify");
			
			 Entity entity = dataObject.newEntity();
			 notify.pushTo(entity);
			 dataObject.insertToDataBase(entity);
			 return true;
		} catch (Exception e) {
			return false;
		}
	}    

	public void load(DataPool dataPool) throws Exception {
		id = dataPool.getString("id");
		sender = dataPool.getString("sender");
		roletype = dataPool.getString("roletype");
		target = dataPool.getString("target");
		msgtitle = dataPool.getString("msgtitle");
		msgcontent = dataPool.getString("msgcontent");
		msgtime = dataPool.getDate(dataPool.getString("msgtime"));
	}
	
	public void load(Entity entity) {
		id = entity.getString("id");
		sender = entity.getString("sender");
		roletype = entity.getString("roletype");
		target = entity.getString("target");
		msgtitle = entity.getString("msgtitle");
		msgcontent = entity.getString("msgcontent");
		try {
			 msgtime = sdf.parse(entity.getString("msgtime"));
		} catch (ParseException e) {
			 // TODO Auto-generated catch block
			 e.printStackTrace();
		}
	}
	
	public void pushTo(Entity entity) throws Exception {
		entity.set("id", id);
		entity.set("sender", sender);
		entity.set("roletype", roletype);
		entity.set("target", target);
		entity.set("msgtitle", msgtitle);
		entity.set("msgcontent", msgcontent);
		entity.set("msgtime", msgtime);
		entity.set("isread", isread);
	}
	
	@Override
	public void writeJSONObject(IJSONWriter writer) {
		writer.beginObject();
		writeJSONData(writer);
		writer.endObject();
	}

	@Override
	public void writeJSONData(IJSONWriter writer) {
		Token token = session.getToken();
		
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getSender() {
		return sender;
	}

	public void setSender(String sender) {
		this.sender = sender;
	}

	public String getRoletype() {
		return roletype;
	}

	public void setRoletype(String roletype) {
		this.roletype = roletype;
	}

	public String getTarget() {
		return target;
	}

	public void setTarget(String target) {
		this.target = target;
	}

	public String getMsgtitle() {
		return msgtitle;
	}

	public void setMsgtitle(String msgtitle) {
		this.msgtitle = msgtitle;
	}

	public String getMsgcontent() {
		return msgcontent;
	}

	public void setMsgcontent(String msgcontent) {
		this.msgcontent = msgcontent;
	}

	public Date getMsgtime() {
		return msgtime;
	}

	public void setMsgtime(Date msgtime) {
		this.msgtime = msgtime;
	}

	public SimpleDateFormat getSdf() {
		return sdf;
	}

	public void setSdf(SimpleDateFormat sdf) {
		this.sdf = sdf;
	}

	public void setSession(Session session) {
		this.session = session;
	}

	public Session getSession() {
		return session;
	}
	
	public String getIsread() {
		return isread;
	}

	public void setIsread(String isread) {
		this.isread = isread;
	}

	@Override
	public int hashCode() {
		if (id == null) {
			return 0;
		}
		
		return id.hashCode();
	}
    
}