<commit_before>package co.touchlab.researchstack.core.answerformat;

import java.io.Serializable;

import co.touchlab.researchstack.core.dev.DevUtils;
import co.touchlab.researchstack.core.ui.step.body.DateQuestionBody;
import co.touchlab.researchstack.core.ui.step.body.FormBody;
import co.touchlab.researchstack.core.ui.step.body.IntegerQuestionBody;
import co.touchlab.researchstack.core.ui.step.body.MultiChoiceQuestionBody;
import co.touchlab.researchstack.core.ui.step.body.NotImplementedStepBody;
import co.touchlab.researchstack.core.ui.step.body.SingleChoiceQuestionBody;
import co.touchlab.researchstack.core.ui.step.body.TextQuestionBody;


public abstract class AnswerFormat implements Serializable
{
    public AnswerFormat()
    {
    }

    public QuestionType getQuestionType()
    {
        return QuestionType.None;
    }

    //TODO figure out if this makes sense
    public Class getQuestionResultClass()
    {
        DevUtils.throwUnsupportedOpException();
        return null;
    }

    public enum QuestionType
    {
        None,
        Form,
        Scale,
        SingleChoice,
        MultipleChoice,
        Decimal,
        Integer,
        Boolean,
        Text,
        TimeOfDay,
        DateAndTime,
        Date,
        TimeInterval;

        //TODO add constructor and pass in class as param
        public Class<?> getSceneClass()
        {
            switch(this)
            {
                case SingleChoice:
                    //TODO type <Integer>
                    return SingleChoiceQuestionBody.class;
                case MultipleChoice:
                    //TODO type <Integer>
                    return MultiChoiceQuestionBody.class;
                case Text:
                    return TextQuestionBody.class;
                case Integer:
                    return IntegerQuestionBody.class;
                case Date:
                    return DateQuestionBody.class;
                case Form:
                    return FormBody.class;
                case Scale:
                case Decimal:
                case Boolean:
                case TimeOfDay:
                case DateAndTime:
                case TimeInterval:
                default:
                    return NotImplementedStepBody.class;
            }
        }

    }

    public enum ChoiceAnswerStyle
    {
        SingleChoice,
        MultipleChoice
    }

    public enum NumberFormattingStyle
    {
        Default,
        Percent
    }

    public enum DateAnswerStyle
    {
        DateAndTime,
        Date
    }
}
<commit_msg>Adds todos for answerformat<commit_after>package co.touchlab.researchstack.core.answerformat;

import java.io.Serializable;

import co.touchlab.researchstack.core.dev.DevUtils;
import co.touchlab.researchstack.core.ui.step.body.DateQuestionBody;
import co.touchlab.researchstack.core.ui.step.body.FormBody;
import co.touchlab.researchstack.core.ui.step.body.IntegerQuestionBody;
import co.touchlab.researchstack.core.ui.step.body.MultiChoiceQuestionBody;
import co.touchlab.researchstack.core.ui.step.body.NotImplementedStepBody;
import co.touchlab.researchstack.core.ui.step.body.SingleChoiceQuestionBody;
import co.touchlab.researchstack.core.ui.step.body.TextQuestionBody;


public abstract class AnswerFormat implements Serializable
{
    public AnswerFormat()
    {
    }

    public QuestionType getQuestionType()
    {
        return QuestionType.None;
    }

    //TODO figure out if this makes sense
    public Class getQuestionResultClass()
    {
        DevUtils.throwUnsupportedOpException();
        return null;
    }

    // TODO do we need this at all? enum types + concrete implementations
    public enum QuestionType
    {
        None,
        Form,
        Scale,
        SingleChoice,
        MultipleChoice,
        Decimal,
        Integer,
        Boolean,
        Text,
        TimeOfDay,
        DateAndTime,
        Date,
        TimeInterval;

        //TODO add constructor and pass in class as param
        public Class<?> getSceneClass()
        {
            switch(this)
            {
                case SingleChoice:
                    //TODO type <Integer>
                    return SingleChoiceQuestionBody.class;
                case MultipleChoice:
                    //TODO type <Integer>
                    return MultiChoiceQuestionBody.class;
                case Text:
                    return TextQuestionBody.class;
                case Integer:
                    return IntegerQuestionBody.class;
                case Date:
                    return DateQuestionBody.class;
                case Form:
                    return FormBody.class;
                case Scale:
                case Decimal:
                case Boolean:
                case TimeOfDay:
                case DateAndTime:
                case TimeInterval:
                default:
                    return NotImplementedStepBody.class;
            }
        }

    }

    // TODO why here (or at all)?
    public enum ChoiceAnswerStyle
    {
        SingleChoice,
        MultipleChoice
    }

    // TODO why here?
    public enum NumberFormattingStyle
    {
        Default,
        Percent
    }

    // TODO why here?
    public enum DateAnswerStyle
    {
        DateAndTime,
        Date
    }
}

{'fraction_non_alphanumeric': 0.06605193827625142, 'fraction_numerical': 0.0, 'mean_word_length': 1.6789314516129032, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1796442', 'n_tokens_mistral': 1408, 'n_tokens_neox': 1312, 'n_words': 296}