/*
 * $Id: VKCProjectMessage.java,v 1.1 2006/10/04 03:15:08 marbobo Exp $
 *
 * Copyright (c) Siemens AG 2008 
 *           (c) Universität Paderborn 2008 
 * Licensed under EUPL 1.1. 
 *
 * $Log: VKCProjectMessage.java,v $
 * Revision 1.1  2006/10/04 03:15:08  marbobo
 * + Vollständige Unterstützung für Templates implementiert
 * + Alles von Virtoweb auf ProCoBa umgestellt
 *
 * Revision 1.9  2006/05/24 17:55:40  marbobo
 * + Toolbar des Html-Editors kann optional angezeigt oder verborgen werden
 *
 * Revision 1.8  2006/05/14 17:29:08  marbobo
 * + removeHtmlTags() auf JEditorPane-Basis umgestellt
 *
 * Revision 1.7  2006/05/10 21:46:13  marbobo
 * + Html-Editor zum Bearbeiten von Beschreibungsfeldern (Dokumente und Kategorien) hinzugefügt
 *
 * Revision 1.6  2006/05/09 15:28:33  marbobo
 * + Refactoring
 *
 * Revision 1.5  2005/02/20 17:37:15  marbobo
 * + Unicode-Anpassung bei Methoden getFormattedText() und getCuttedText()
 *
 * Revision 1.4  2004/07/20 08:59:22  jonyp
 * added copyright info + cvs log
 *
 */
package vkc.procoba.project.entities;

import java.io.Serializable;
import java.util.Date;

import javax.swing.text.BadLocationException;

import vkc.db.serializer.VKCUserSerializer;
import vkc.exception.DBException;
import vkc.util.StringUtils;
import vkc.util.VKCStringUtils;
import vkc.view.bean.UserInfo;

public class VKCProjectMessage implements Serializable {
	// Unique ID der Nachricht
	protected Integer messageId = null;

	// ID des Projekts für die die Nachricht
	protected Integer projectId = null;

	// Text der Nachricht
	protected String text = "";

	// optionaler mit der Nachricht verbundener Link
	protected String link = "";

	// optionaler Resource-Key für den Link
	protected String linkKey = "";

	// Erzeugungsdatum der Nachricht
	protected Date creationDate = null;

	// Autor der Nachricht
	protected Integer creatorId = null;

	// Infos über den Autor
	protected UserInfo creatorInfo = null;

	// Id des Users für den die Nachricht bestimmt ist
	// Falls ID == null, ist die Nachricht für alle Projektteilnehmer bestimmt
	protected Integer recepientId = null;

	public Integer getMessageId() {
		return messageId;
	}

	public void setMessageId(Integer integer) {
		messageId = integer;
	}

	public Integer getProjectId() {
		return projectId;
	}

	public void setProjectId(Integer integer) {
		projectId = integer;
	}

	public String getLink() {
		return link;
	}

	public void setLink(String string) {
		link = StringUtils.normalize(string);
	}

	public String getLinkKey() {
		return linkKey;
	}

	public void setLinkKey(String string) {
		linkKey = StringUtils.normalize(string);
	}

	public Date getCreationDate() {
		return creationDate;
	}

	public void setCreationDate(Date date) {
		this.creationDate = date;
	}

	public String getText() {
		return text;
	}

	public void setText(String string) {
		text = StringUtils.normalize(string);
	}

	public Integer getCreatorId() {
		return creatorId;
	}

	public void setCreatorId(Integer integer) {
		creatorId = integer;
	}

	public Integer getRecepientId() {
		return recepientId;
	}

	public void setRecepientId(Integer integer) {
		recepientId = integer;
	}

	public String getFormattedText() {
		return VKCStringUtils.filterUnicodeChars(text);
	}

	public String getCuttedText() throws BadLocationException {
		String s = VKCStringUtils.filterUnicodeChars(text);
		s = VKCStringUtils.htmlFormatedText(s);
		s = VKCStringUtils.decodeXmlEntities(s);
		s = VKCStringUtils.decodeNamedXmlEntitiesNotInSwing(s);
		s = VKCStringUtils.removeHtmlTags(s);
		
		return StringUtils.cut(s, 30);
	}

	public UserInfo getCreatorInfo() throws DBException {
		if (creatorInfo == null) {
			if (creatorId != null && creatorId.intValue() > 0) {
				creatorInfo = VKCUserSerializer.retrieveUserInfo(creatorId);
			}
		}

		return creatorInfo;
	}
}
