package ${package}; import com.vaadin.server.Resource; import edu.vserver.exercises.math.essentials.level.LevelMathDataWrapper; import edu.vserver.exercises.math.essentials.level.LevelMathExecutorWrapper; import edu.vserver.exercises.math.essentials.level.LevelMathPersistenceWrapper; import fi.utu.ville.exercises.model.Editor; import fi.utu.ville.exercises.model.Executor; import fi.utu.ville.exercises.model.ExerciseTypeDescriptor; import fi.utu.ville.exercises.model.PersistenceHandler; import fi.utu.ville.exercises.model.SubmissionStatisticsGiver; import fi.utu.ville.exercises.model.SubmissionVisualizer; import fi.utu.ville.standardutils.Localizer; import fi.utu.ville.standardutils.StandardIcon; import fi.utu.ville.standardutils.StandardIcon.IconVariant; public class ${VilleJavaClassPrefix}Descriptor implements ExerciseTypeDescriptor<LevelMathDataWrapper<${VilleJavaClassPrefix}Data>, ${VilleJavaClassPrefix}SubmissionInfo> { private static final long serialVersionUID = -2550301084361603798L; public static ${VilleJavaClassPrefix}Descriptor INSTANCE = new ${VilleJavaClassPrefix}Descriptor(); @Override public PersistenceHandler<LevelMathDataWrapper<${VilleJavaClassPrefix}Data>, ${VilleJavaClassPrefix}SubmissionInfo> newExerciseXML() { return new LevelMathPersistenceWrapper<${VilleJavaClassPrefix}Data, ${VilleJavaClassPrefix}SubmissionInfo>( ${VilleJavaClassPrefix}Data.class, getSubDataClass()); } @Override public Executor<LevelMathDataWrapper<${VilleJavaClassPrefix}Data>, ${VilleJavaClassPrefix}SubmissionInfo> newExerciseExecutor() { return new LevelMathExecutorWrapper<${VilleJavaClassPrefix}Data, ${VilleJavaClassPrefix}SubmissionInfo>( new ${VilleJavaClassPrefix}Executor()); } @Override public Editor<LevelMathDataWrapper<${VilleJavaClassPrefix}Data>> newExerciseEditor() { return new ${VilleJavaClassPrefix}TabbedEditor(); } @SuppressWarnings("unchecked") @Override public Class<LevelMathDataWrapper<${VilleJavaClassPrefix}Data>> getTypeDataClass() { return (Class<LevelMathDataWrapper<${VilleJavaClassPrefix}Data>>) (Class<?>) LevelMathDataWrapper.class; } @Override public Class<${VilleJavaClassPrefix}SubmissionInfo> getSubDataClass() { return ${VilleJavaClassPrefix}SubmissionInfo.class; } @Override public SubmissionStatisticsGiver<LevelMathDataWrapper<${VilleJavaClassPrefix}Data>, ${VilleJavaClassPrefix}SubmissionInfo> newStatisticsGiver() { return new ${VilleJavaClassPrefix}StatisticsGiver(); } @Override public SubmissionVisualizer<LevelMathDataWrapper<${VilleJavaClassPrefix}Data>, ${VilleJavaClassPrefix}SubmissionInfo> newSubmissionVisualizer() { return new ${VilleJavaClassPrefix}SubmissionVisualizer(); } @Override public String getTypeName(Localizer localizer) { return "${VilleJavaClassPrefix}"; } @Override public String getTypeDescription(Localizer localizer) { return "A currently generic exercise built on the ViLLE stub."; } /** * These type icons are for legacy support and shown in very few places. * Feel free to make icons of your own. Do bear in mind that these icons are * shown in very few places anymore. * * @return An image for this exercise type. */ @Override public Resource getSmallTypeIcon() { return null; } @Override public Resource getMediumTypeIcon() { return null; } @Override public Resource getLargeTypeIcon() { return null; } @Override public boolean isManuallyGraded() { return false; } /** * This icon is shown in the exercise lists everywhere. */ @Override public String getHTMLIcon() { return StandardIcon.RawIcon.dribbble.variant(IconVariant.ORANGE); } }