001         package com.croftsoft.apps.quiz;
002    
003         import java.io.*;
004         import java.util.*;
005    
006         import com.croftsoft.core.lang.NullArgumentException;
007         import com.croftsoft.core.lang.lifecycle.Commissionable;
008         import com.croftsoft.core.lang.lifecycle.InitializationException;
009         import com.croftsoft.core.text.sml.*;
010    
011         /*********************************************************************
012         * @version
013         *   2001-07-10
014         * @since
015         *   2001-07-10
016         * @author
017         *   <a href="https://www.croftsoft.com/">David Wallace Croft</a>
018         *********************************************************************/
019    
020         public final class  QuizModel
021           implements Commissionable
022         //////////////////////////////////////////////////////////////////////
023         //////////////////////////////////////////////////////////////////////
024         {
025    
026         private final String  quizFilename;
027    
028         private final String  backupFilename;
029    
030         private Quiz  quiz;
031    
032         //////////////////////////////////////////////////////////////////////
033         //////////////////////////////////////////////////////////////////////
034    
035         public  QuizModel (
036           String  quizFilename,
037           String  backupFilename )
038         //////////////////////////////////////////////////////////////////////
039         {
040           NullArgumentException.check ( this.quizFilename = quizFilename );
041    
042           NullArgumentException.check (
043             this.backupFilename = backupFilename );
044         }
045    
046         public  QuizModel ( )
047         //////////////////////////////////////////////////////////////////////
048         {
049           this (
050             QuizConstants.DEFAULT_QUIZ_FILENAME,
051             QuizConstants.DEFAULT_BACKUP_FILENAME );
052         }
053    
054         //////////////////////////////////////////////////////////////////////
055         //////////////////////////////////////////////////////////////////////
056    
057         public synchronized void  init ( )
058         //////////////////////////////////////////////////////////////////////
059         {
060    System.out.println ( "QuizModel.init()" );
061    
062           try
063           {
064             quiz = QuizLib.loadQuiz ( quizFilename );
065           }
066           catch ( FileNotFoundException  ex )
067           {
068           }
069           catch ( IOException  ex )
070           {
071             throw new InitializationException ( ex );
072           }
073    
074           if ( quiz == null )
075           {
076             quiz = new Quiz ( );
077           }
078         }
079    
080         public synchronized void  destroy ( )
081         //////////////////////////////////////////////////////////////////////
082         {
083    System.out.println ( "QuizModel.destroy()" );
084    
085           try
086           {
087             QuizLib.saveQuiz ( quizFilename, backupFilename, quiz );
088           }
089           catch ( Exception  ex )
090           {
091             ex.printStackTrace ( );
092           }
093         }
094    
095         //////////////////////////////////////////////////////////////////////
096         //////////////////////////////////////////////////////////////////////
097    
098         public Quiz  getQuiz ( ) { return quiz; }
099    
100         //////////////////////////////////////////////////////////////////////
101         //////////////////////////////////////////////////////////////////////
102         }