/*
* Copyright 2015 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.google.samples.apps.topeka.helper;
import android.util.Log;
import android.util.SparseBooleanArray;
/**
* Collection of methods to convert answers to human readable forms.
*/
public class AnswerHelper {
static final String SEPARATOR = System.getProperty("line.separator");
private static final String TAG = "AnswerHelper";
private AnswerHelper() {
//no instance
}
/**
* Converts an array of answers to a readable answer.
*
* @param answers The answers to display.
* @return The readable answer.
*/
public static String getAnswer(String[] answers) {
StringBuilder readableAnswer = new StringBuilder();
//Iterate over all answers
for (int i = 0; i < answers.length; i++) {
String answer = answers[i];
readableAnswer.append(answer);
//Don't add a separator for the last answer
if (i < answers.length - 1) {
readableAnswer.append(SEPARATOR);
}
}
return readableAnswer.toString();
}
/**
* Converts an array of answers with options to a readable answer.
*
* @param answers The actual answers
* @param options The options to display.
* @return The readable answer.
*/
public static String getAnswer(int[] answers, String[] options) {
String[] readableAnswers = new String[answers.length];
for (int i = 0; i < answers.length; i++) {
final String humanReadableAnswer = options[answers[i]];
readableAnswers[i] = humanReadableAnswer;
}
return getAnswer(readableAnswers);
}
/**
* Checks whether a provided answer is correct.
*
* @param checkedItems The items that were selected.
* @param answerIds The actual correct answer ids.
* @return <code>true</code> if correct else <code>false</code>.
*/
public static boolean isAnswerCorrect(SparseBooleanArray checkedItems, int[] answerIds) {
if (null == checkedItems || null == answerIds) {
Log.i(TAG, "isAnswerCorrect got a null parameter input.");
return false;
}
for (int answer : answerIds) {
if (0 > checkedItems.indexOfKey(answer)) {
return false;
}
}
return checkedItems.size() == answerIds.length;
}
}