001    /* PAVLOV -- Multiple Choice Study System
002     * Copyright (C) 2000 - 2004 T.J. Willis
003     * 
004     * This program is free software; you can redistribute it and/or
005     * modify it under the terms of the GNU General Public License
006     * as published by the Free Software Foundation; either version 2
007     * of the License, or (at your option) any later version.
008     *      
009     * This program is distributed in the hope that it will be useful,
010     * but WITHOUT ANY WARRANTY; without even the implied warranty of
011     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
012     * GNU General Public License for more details.
013     *          
014     * You should have received a copy of the GNU General Public License
015     * along with this program; if not, write to the Free Software
016     * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
017     *  
018     * $Header: /cvsroot/pavlov/net/sourceforge/pavlov/event/AnswerEvent.java,v 1.8 2004/07/01 09:03:42 tj_willis Exp $
019     */ 
020    package net.sourceforge.pavlov.event;
021    import net.sourceforge.pavlov.user.*;
022    
023    /**
024     * An event generated when a user answers a question in a quiz.  Contains,
025     * directly and indirectly, almost all available information about the user,
026     * the current book and chapter, and the current quiz.
027     *
028     * @author <a href="mailto:"></a>
029     * @version $Revision: 1.8 $
030     */
031    public final class AnswerEvent {
032        /**
033         * Whether the answer was correct.
034         *
035         */
036        private boolean correct;
037        /**
038         * The user who answered the question.
039         *
040         */
041        private User user;
042        /**
043         * Information about the current quiz.
044         *
045         */
046        private QuizData quiz;
047        /**
048         * Data about the question that was answered.
049         *
050         */
051        private QuestionData question;
052        /**
053         * Data about the chapter containing the question that was answered.
054         *
055         */
056        private ChapterData chapter;
057        /**
058         * Data about the book containing the question that was answered.
059         *
060         */
061        private BookData book;
062        /**
063         * Whether this was the first answer in a quiz.
064         *
065         */
066        private boolean newQuiz;
067    
068        /**
069         * Creates a new <code>AnswerEvent</code> instance.
070         *
071         * @param wasCorrect whether the answer was correct
072         */
073        public AnswerEvent(boolean wasCorrect)
074      {
075         correct = wasCorrect;
076      }
077    
078        /**
079         * Creates a new <code>AnswerEvent</code> instance.
080         *
081         * @param wasCorrect whether the answer was correct
082         * @param theUser an <code>User</code> value
083         * @param theQues a <code>QuestionData</code> value
084         * @param theQuiz a <code>QuizData</code> value
085         * @param theBook a <code>BookData</code> value
086         * @param theChapter a <code>ChapterData</code> value
087         * @param newQuiz a <code>boolean</code> value
088         */
089        public AnswerEvent(final boolean correct, final User user, final QuestionData question, 
090                           final QuizData quiz, final BookData book, final ChapterData chapter, 
091                           final boolean newQuiz)
092      {
093         this.correct = correct;
094         this.user = user;
095         this.question = question;
096         this.quiz = quiz;
097         this.book = book;
098         this.chapter = chapter;
099         this.newQuiz = newQuiz; 
100      }
101    
102        /**
103         * Whether the answer was correct.
104         *
105         * @return a <code>boolean</code> value
106         */
107        public boolean isCorrect()
108      {
109         return correct;
110      }
111    
112        public void setCorrect(boolean newCorrect){
113            correct = newCorrect;
114        }
115    
116        /**
117         * How many questions answered in the current quiz.
118         *
119         * @return an <code>int</code> value
120         */
121        public int getNumberOfAnswers()
122      {
123         return quiz.getTotal(); 
124      }
125    
126        /**
127         * How many correct answers in the current quiz.
128         *
129         * @return an <code>int</code> value
130         */
131        public int getNumberOfCorrectAnswers()
132      {
133         return quiz.getRight();
134      }
135        /**
136         * How many incorrect answers in the current quiz.
137         *
138         * @return an <code>int</code> value
139         */
140        public int getNumberOfIncorrectAnswers()
141      {
142         return quiz.getWrong();
143      }
144        /**
145         * Percentage of correct answers in the current quiz.
146         *
147         * @return a <code>double</code> value
148         */
149        public double getPercentageOfCorrectAnswers()
150      {
151         return quiz.getPercentage();
152      }
153      
154        /**
155         * Returns the QuizData for the current quiz.
156         *
157         * @return a <code>QuizData</code> value
158         */
159        public QuizData getQuizData()
160      {
161          return quiz;
162      }
163    
164        /**
165         * Returns the ChapterStatistics for the chapter containing the
166         * answered question.
167         *
168         * @return a <code>ChapterStatistics</code> value
169         */
170        public ChapterStatistics getChapterStatistics()
171      {
172          return chapter.getChapterStatistics();
173      }
174     
175        /**
176         * Returns the QuestionData for the answered question.
177         *
178         * @return a <code>QuestionData</code> value
179         */
180        public QuestionData getQuestionData()
181      {
182        return question;
183      }
184    
185        /**
186         * Returns the User who answered the question.
187         *
188         * @return an <code>User</code> value
189         */
190        public User getUser()
191      {
192         return user;
193      }
194    
195        /**
196         * Returns the ChapterData for the chapter containing the answered 
197         * question.
198         *
199         * @return a <code>ChapterData</code> value
200         */
201        public ChapterData getChapterData()
202      {
203         return chapter;
204      }
205    
206    
207    
208        /**
209         * Returns the BookData for the Book containing the answered question.
210         *
211         * @return a <code>BookData</code> value
212         */
213        public BookData getBookData()
214      {
215         return book;
216      }
217        /**
218         * Returns true if this is the first answer in a quiz.
219         *
220         * @return a <code>boolean</code> value
221         */
222        public boolean isNewQuiz()
223      {
224         return newQuiz;
225      }
226    }
227    
228    
229    
230    
231    
232    
233    
234    
235