Subversion Repositories bacoAlunos

Rev

Rev 338 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package pt.estgp.estgweb.domain.views;

import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.domain.enums.AnnouncementStyleEnum;
import pt.estgp.estgweb.utils.RoleManager;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.web.utils.DatesUtils;

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

import org.apache.log4j.Logger;
import jomm.utils.StringsUtils;

import javax.servlet.http.HttpServletRequest;

/**
 * @author Jorge Machado
 * @date 2/Mar/2008
 * @time 19:34:49
 * @see pt.estgp.estgweb.domain.views
 */

public class AnnouncementView extends DomainObjectView implements IOwned, IContextTimerObject, ITargetRoles, IInternal, IValid, ICanLoad
{

    private static 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger = 1.5.0/docs/api/java/util/logging/Logger.html">Logger.getLogger(AnnouncementView.class);

    public static final int TEXT_SUMMARY_SIZE = ConfigProperties.getIntProperty("announcements.text.summary.size");
    public static final int TEXT_SUMMARY_SIZE_SMALL = ConfigProperties.getIntProperty("announcements.text.summary.size.small");

    private Announcement announcement;
    private long id;
    private 1.5.0/docs/api/java/lang/String.html">String title;
    private 1.5.0/docs/api/java/lang/String.html">String text;
    private 1.5.0/docs/api/java/lang/String.html">String choosedOwnerRole;
    private List<String> targetRoles;
    private 1.5.0/docs/api/java/awt/Image.html">Image bigImage;
    private 1.5.0/docs/api/java/awt/Image.html">Image smallImage;
    private 1.5.0/docs/api/java/lang/String.html">String url;
    private 1.5.0/docs/api/java/lang/String.html">String type;
    private 5+0%2Fdocs%2Fapi+Date">Date updateDate;
    private 5+0%2Fdocs%2Fapi+Date">Date saveDate;
    private 5+0%2Fdocs%2Fapi+Date">Date startDate;
    private 5+0%2Fdocs%2Fapi+Date">Date expireDate;
    private 1.5.0/docs/api/java/lang/Integer.html">Integer counter;
    private boolean status = true;
    private boolean internal;
    private GenericUser owner;
    private 1.5.0/docs/api/java/lang/String.html">String ownerUsername;
    private 1.5.0/docs/api/java/lang/String.html">String ownerName;
    private 1.5.0/docs/api/java/lang/String.html">String ownerEmail;
    private 1.5.0/docs/api/java/lang/String.html">String style;
    private 1.5.0/docs/api/java/lang/String.html">String internalUrlServer;
    private 1.5.0/docs/api/java/lang/String.html">String internalUrlPath;
    private boolean internalUrlInclude;
    private long bigImageId;
    private long smallImageId;

    private boolean courseUnitInternal;


    private CourseUnitView courseUnitView;

    public AnnouncementView()
    {
        courseUnitView = new CourseUnitView();
    }

    public AnnouncementView(Announcement announcement)
    {
        super(announcement);
        init(announcement);
    }
    public void init(Announcement announcement)
    {
        this.announcement = announcement;
        this.title = announcement.getTitle();
        this.text = announcement.getText();
        this.bigImage = announcement.getBigImage();
        this.smallImage= announcement.getSmallImage();
        if(announcement.getBigImage() != null)
            this.bigImageId = announcement.getBigImage().getId();
        if(announcement.getSmallImage() != null)
            this.smallImageId = announcement.getSmallImage().getId();
        this.url = announcement.getUrl();
        this.type = announcement.getType();
        this.targetRoles = RoleManager.getRolesFromSerial(announcement.getTargetRoles());
        this.status=announcement.isStatus();
        this.id = announcement.getId();
        this.counter =announcement.getCounter();
        this.startDate = announcement.getStartDate();
        this.expireDate = announcement.getExpireDate();
        this.choosedOwnerRole = announcement.getChoosedOwnerRole();
        this.owner = announcement.getOwner();
        this.ownerUsername = owner.getUsername();
        this.ownerName = owner.getName();
        this.ownerEmail = owner.getEmail();
        this.internalUrlServer = announcement.getInternalUrlServer();
        this.internalUrlPath = announcement.getInternalUrlPath();
        this.style = announcement.getStyle();
        this.internalUrlInclude = announcement.isInternalUrlInclude();
        this.internal = announcement.isInternal();
        this.updateDate = announcement.getUpdateDate();
        this.saveDate = announcement.getSaveDate();
        if(announcement instanceof CourseUnitAnnouncementImpl)
        {
            courseUnitView = new CourseUnitView(((CourseUnitAnnouncement)announcement).getCourseUnit());
            courseUnitInternal = ((CourseUnitAnnouncement)announcement).isCourseUnitInternal();
        }
    }

    public void persistViewInObject(Announcement announcement)
    {
        announcement.setTitle(title);
        announcement.setText(text);
        announcement.setTargetRoles(RoleManager.getSerialRoles(targetRoles));
        announcement.setBigImage(bigImage);
        announcement.setSmallImage(smallImage);
        announcement.setUrl(url);
        announcement.setType(type);
        announcement.setStartDate(startDate);
        announcement.setExpireDate(expireDate);
        announcement.setStatus(status);
        announcement.setCounter(counter);
        announcement.setChoosedOwnerRole(choosedOwnerRole);
        announcement.setInternalUrlServer(internalUrlServer);
        announcement.setInternalUrlPath(internalUrlPath);
        announcement.setStyle(style);
        announcement.setInternalUrlInclude(internalUrlInclude);
        announcement.setInternal(internal);
        if(announcement instanceof CourseUnitAnnouncement && courseUnitView != null && courseUnitView.getId() > 0)
        {
            ((CourseUnitAnnouncement)announcement).setCourseUnit(DaoFactory.getCourseUnitDaoImpl().load(courseUnitView.getId()));
            ((CourseUnitAnnouncement)announcement).setCourseUnitInternal(courseUnitInternal);
        }
    }

    public boolean isCourseUnitInternal()
    {
        return courseUnitInternal;
    }

    public void setCourseUnitInternal(boolean courseUnitInternal)
    {
        this.courseUnitInternal = courseUnitInternal;
    }

    public CourseUnitView getCourseUnitView()
    {
        return courseUnitView;
    }

    public void setCourseUnitView(CourseUnitView courseUnitView)
    {
        this.courseUnitView = courseUnitView;
    }

    public long getBigImageId()
    {
        return bigImageId;
    }

    public long getSmallImageId()
    {
        return smallImageId;
    }

    public 5+0%2Fdocs%2Fapi+Date">Date getUpdateDate()
    {
        return updateDate;
    }

    public 1.5.0/docs/api/java/lang/String.html">String getFormatedUpdateDate()
    {
        return DatesUtils.getStringFromDate(updateDate);
    }

    public boolean isInternal() {
        return internal;
    }

    public void setInternal(boolean internal) {
        this.internal = internal;
    }

    public boolean isInternalUrlInclude() {
        return internalUrlInclude;
    }

    public void setInternalUrlInclude(boolean internalUrlInclude) {
        this.internalUrlInclude = internalUrlInclude;
    }

    public 1.5.0/docs/api/java/lang/String.html">String getStyle() {
        return style;
    }

    public AnnouncementStyleEnum getStyleEnum()
    {
        return AnnouncementStyleEnum.parse(style);
    }

    public void setStyle(1.5.0/docs/api/java/lang/String.html">String style) {
        this.style = style;
    }

    public 1.5.0/docs/api/java/lang/String.html">String getInternalUrlPath() {
        return internalUrlPath;
    }

    public void setInternalUrlPath(1.5.0/docs/api/java/lang/String.html">String internalUrlPath) {
        this.internalUrlPath = internalUrlPath;
    }

    public 1.5.0/docs/api/java/lang/String.html">String getInternalUrlServer() {
        return internalUrlServer;
    }

    public void setInternalUrlServer(1.5.0/docs/api/java/lang/String.html">String internalUrlServer) {
        this.internalUrlServer = internalUrlServer;
    }

    public 1.5.0/docs/api/java/lang/String.html">String getChoosedOwnerRole() {
        return choosedOwnerRole;
    }

    public void setChoosedOwnerRole(1.5.0/docs/api/java/lang/String.html">String choosedOwnerRole) {
        this.choosedOwnerRole = choosedOwnerRole;
    }

    public 5+0%2Fdocs%2Fapi+Date">Date getExpireDate() {
        return expireDate;
    }

    public void setExpireDate(5+0%2Fdocs%2Fapi+Date">Date expireDate) {
        this.expireDate = expireDate;
    }

    public 5+0%2Fdocs%2Fapi+Date">Date getStartDate() {
        return startDate;
    }

    public void setStartDate(5+0%2Fdocs%2Fapi+Date">Date startDate) {
        this.startDate = startDate;
    }

    public long getId()
    {
        return id;
    }

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

    public 1.5.0/docs/api/java/lang/String.html">String getTitle() {
        return title;
    }

    public void setTitle(1.5.0/docs/api/java/lang/String.html">String title)
    {
        this.title = title;
    }

    public 1.5.0/docs/api/java/lang/String.html">String getText() {
        return text;
    }

    public void setText(1.5.0/docs/api/java/lang/String.html">String text)
    {
        this.text = text;
    }

    public List<String> getTargetRoles()
    {
        return targetRoles;
    }

    public void setTargetRoles(List<String> targetRoles)
    {
        this.targetRoles = targetRoles;
    }

    public 1.5.0/docs/api/java/lang/Class.html">Class getReferenceClass()
    {
        return AnnouncementImpl.class;
    }

    public 1.5.0/docs/api/java/io/Serializable.html">Serializable getSerializable()
    {
        return id;
    }

    public 1.5.0/docs/api/java/awt/Image.html">Image getBigImage() {
        return bigImage;
    }

    public void setBigImage(1.5.0/docs/api/java/awt/Image.html">Image bigImage) {
        this.bigImage = bigImage;
    }

    public 1.5.0/docs/api/java/awt/Image.html">Image getSmallImage() {
        return smallImage;
    }

    public void setSmallImage(1.5.0/docs/api/java/awt/Image.html">Image smallImage) {
        this.smallImage = smallImage;
    }

    public 1.5.0/docs/api/java/lang/String.html">String getUrl() {
        return url;
    }

    public 1.5.0/docs/api/java/lang/String.html">String getUrl(HttpServletRequest request) {
        if(url != null && url.startsWith("/"))
            return request.getContextPath() + url;
        else
            return url;
    }


    public void setUrl(1.5.0/docs/api/java/lang/String.html">String url) {
        this.url = url;
    }

    public 1.5.0/docs/api/java/lang/String.html">String getType() {
        return type;
    }

    public void setType(1.5.0/docs/api/java/lang/String.html">String type) {
        this.type = type;
    }


    public boolean isStatus() {
        return status;
    }

    public void setStatus(boolean status) {
        this.status = status;
    }


    public long getOwnerID() {
        return getOwner().getId();
    }

    public 1.5.0/docs/api/java/lang/Integer.html">Integer getCounter() {
        return counter;
    }

    public void setCounter(1.5.0/docs/api/java/lang/Integer.html">Integer counter) {
        this.counter = counter;
    }

    public 1.5.0/docs/api/java/lang/String.html">String getTextSummary()
    {
        return StringsUtils.getFragment(getText(),TEXT_SUMMARY_SIZE);
    }

    public 1.5.0/docs/api/java/lang/String.html">String getTextSummarySmall()
    {
        return StringsUtils.getFragment(getText(),TEXT_SUMMARY_SIZE_SMALL);
    }

    public 1.5.0/docs/api/java/lang/String.html">String getFormatedText()
    {
        return StringsUtils.getFormatedText(text);
    }

    public 1.5.0/docs/api/java/lang/Boolean.html">Boolean getHaveAllText()
    {
        if(getInternalUrlPath() != null)
            return false;
        if(getType().equals("top.flash.news"))
        {
            return getText().length() > TEXT_SUMMARY_SIZE;
        }
        else
        {
            return getText().length() > TEXT_SUMMARY_SIZE_SMALL;
        }
    }

    public GenericUser getOwner()
    {
        return owner;
    }

    /**
     * Not implemented
     * @return null
     */

    public List<String> getOwnerRoles()
    {
        logger.warn("Invoke not implemented method in class:" + getClass().getName());
        return null;
    }

    public boolean isOwnedBy(GenericUser u, boolean transaction)
    {
        return announcement.isOwnedBy(u,transaction);
    }

    public boolean isOwnedBy(GenericUser u)
    {
        return announcement.isOwnedBy(u,false);
    }

    public List<String> getTargetRolesList()
    {
        return getTargetRoles();
    }

    public boolean isValid()
    {
        return isStatus();
    }

    public boolean canLoad(GenericUserImpl u)
    {
        return ((AnnouncementImpl)announcement).canLoad(u);
    }

    public boolean canLoadInOpenTransaction(GenericUserImpl u)
    {
        return ((AnnouncementImpl)announcement).canLoadInOpenTransaction(u);
    }

    public 1.5.0/docs/api/java/lang/String.html">String getOwnerUsername()
    {
        return ownerUsername;
    }


    public 1.5.0/docs/api/java/lang/String.html">String getOwnerName()
    {
        return ownerName;
    }

    public 1.5.0/docs/api/java/lang/String.html">String getOwnerEmail()
    {
        return ownerEmail;
    }
}