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 }