001: /*
002: * Copyright (c) JForum Team
003: * All rights reserved.
004: *
005: * Redistribution and use in source and binary forms,
006: * with or without modification, are permitted provided
007: * that the following conditions are met:
008: *
009: * 1) Redistributions of source code must retain the above
010: * copyright notice, this list of conditions and the
011: * following disclaimer.
012: * 2) Redistributions in binary form must reproduce the
013: * above copyright notice, this list of conditions and
014: * the following disclaimer in the documentation and/or
015: * other materials provided with the distribution.
016: * 3) Neither the name of "Rafael Steil" nor
017: * the names of its contributors may be used to endorse
018: * or promote products derived from this software without
019: * specific prior written permission.
020: *
021: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
022: * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
023: * EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
024: * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
025: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR
026: * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
027: * THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
028: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
029: * EXEMPLARY, OR CONSEQUENTIAL DAMAGES
030: * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
031: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
032: * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
033: * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
034: * IN CONTRACT, STRICT LIABILITY, OR TORT
035: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
036: * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
037: * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
038: *
039: * This file creation date: 21/05/2004 - 14:22:16
040: * The JForum Project
041: * http://www.jforum.net
042: */
043: package net.jforum.entities;
044:
045: import java.io.Serializable;
046: import java.util.ArrayList;
047: import java.util.Calendar;
048: import java.util.Date;
049: import java.util.Iterator;
050: import java.util.List;
051:
052: /**
053: * @author David Almilli
054: * @version $Id: Poll.java,v 1.4 2006/08/20 22:47:35 rafaelsteil Exp $
055: */
056: public class Poll implements Serializable {
057: private int id;
058: private int topicId;
059: private int length;
060: private String label;
061: private Date startTime;
062: private transient PollChanges pollChanges;
063: private List options = new ArrayList();
064:
065: public int getId() {
066: return id;
067: }
068:
069: public void setId(int id) {
070: this .id = id;
071: }
072:
073: public int getTopicId() {
074: return topicId;
075: }
076:
077: public void setTopicId(int topicId) {
078: this .topicId = topicId;
079: }
080:
081: public int getLength() {
082: return length;
083: }
084:
085: public void setLength(int length) {
086: this .length = length;
087: }
088:
089: public String getLabel() {
090: return label;
091: }
092:
093: public void setLabel(String label) {
094: this .label = label;
095: }
096:
097: public Date getStartTime() {
098: return startTime;
099: }
100:
101: public void setStartTime(Date startTime) {
102: this .startTime = startTime;
103: }
104:
105: public void addOption(PollOption option) {
106: options.add(option);
107: option.setPoll(this );
108: }
109:
110: public void removeOption(PollOption option) {
111: if (options.remove(option)) {
112: option.setPoll(null);
113: }
114: }
115:
116: public List getOptions() {
117: return options;
118: }
119:
120: public void setChanges(PollChanges changes) {
121: this .pollChanges = changes;
122: }
123:
124: public PollChanges getChanges() {
125: return this .pollChanges;
126: }
127:
128: public int getTotalVotes() {
129: int votes = 0;
130: Iterator iter = options.iterator();
131: while (iter.hasNext()) {
132: PollOption option = (PollOption) iter.next();
133: votes += option.getVoteCount();
134: }
135: return votes;
136: }
137:
138: public boolean isOpen() {
139: if (length == 0) {
140: return true;
141: }
142: Calendar endTime = Calendar.getInstance();
143: endTime.setTime(startTime);
144: endTime.add(Calendar.DAY_OF_YEAR, length);
145: return System.currentTimeMillis() < endTime.getTimeInMillis();
146: }
147: }
|