package com.github.donkirkby.vograbulary; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; public abstract class VograbularyPreferences { //stopJesting // private static final String DEFAULT_STUDENT_SELECTIONS = "YY"; private static final int DEFAULT_VOCABULARY_SIZE = 5000; private static final int DEFAULT_ULTRAGHOST_MINIMUM_WORD_LENGTH = 4; //resumeJesting private enum Fields { STUDENT_NAMES, STUDENT_SELECTIONS, COMPUTER_STUDENT_VOCABULARY_SIZE, ULTRAGHOST_MINIMUM_WORD_LENGTH }; private static final Set<String> DEFAULT_STUDENT_NAMES = new HashSet<>(Arrays.asList("Student1", "Student2")); protected abstract void putStringSet(String key, Set<String> values); protected abstract Set<String> getStringSet( String key, Set<String> defValues); protected abstract void putInteger(String key, int value); protected abstract int getInteger(String key, int defaultValue); /** * Store any changes submitted through the put methods. * */ public void apply() { } public List<String> getStudentNames() { Set<String> names = getStringSet( Fields.STUDENT_NAMES.name(), DEFAULT_STUDENT_NAMES); ArrayList<String> nameList = new ArrayList<>(names); Collections.sort(nameList); return nameList; } public void setStudentNames(List<String> studentNames) { Set<String> nameSet = new HashSet<>(studentNames); putStringSet(Fields.STUDENT_NAMES.name(), nameSet); } // public String getStudentSelections() { // return preferences.getString( // Fields.STUDENT_SELECTIONS.name(), // DEFAULT_STUDENT_SELECTIONS); // } // public void setStudentSelections(String studentSelections) { // preferences.putString( // Fields.STUDENT_SELECTIONS.name(), // studentSelections); // preferences.flush(); // } // public int getComputerStudentVocabularySize() { return getInteger( Fields.COMPUTER_STUDENT_VOCABULARY_SIZE.name(), DEFAULT_VOCABULARY_SIZE); } public void setComputerStudentVocabularySize(int vocabularySize) { putInteger( Fields.COMPUTER_STUDENT_VOCABULARY_SIZE.name(), vocabularySize); apply(); } public int getUltraghostMinimumWordLength() { return getInteger( Fields.ULTRAGHOST_MINIMUM_WORD_LENGTH.name(), DEFAULT_ULTRAGHOST_MINIMUM_WORD_LENGTH); } public void setUltraghostMinimumWordLength(int wordLength) { putInteger( Fields.ULTRAGHOST_MINIMUM_WORD_LENGTH.name(), wordLength); apply(); } }