package com.sztzjy.linkCommerce.training.knowledge; import com.sztzjy.linkCommerce.entity.TrainingTask; import com.sztzjy.linkCommerce.entity.TrainingTaskClassConfig; import org.apache.commons.lang3.StringUtils; /** Effective task data for a student: enabled teacher configuration overrides the admin default field by field. */ public class EffectiveTrainingTaskContent { private final String scope; private final String effectiveConfigId; private final String knowledge; private final String background; private final String objectives; private final String requirements; private final String steps; private final String materialName; private final String materialUrl; private EffectiveTrainingTaskContent(String scope, String effectiveConfigId, String knowledge, String background, String objectives, String requirements, String steps, String materialName, String materialUrl) { this.scope = scope; this.effectiveConfigId = effectiveConfigId; this.knowledge = knowledge; this.background = background; this.objectives = objectives; this.requirements = requirements; this.steps = steps; this.materialName = materialName; this.materialUrl = materialUrl; } public static EffectiveTrainingTaskContent resolve(TrainingTask task, TrainingTaskClassConfig classConfig) { boolean useTeacher = classConfig != null && Boolean.TRUE.equals(classConfig.getEnabled()) && StringUtils.isNotBlank(classConfig.getId()); return new EffectiveTrainingTaskContent( useTeacher ? "TEACHER" : "ADMIN", useTeacher ? classConfig.getId() : task.getId(), value(useTeacher ? classConfig.getKnowledge() : null, task.getKnowledge()), value(useTeacher ? classConfig.getBackground() : null, task.getBackground()), value(useTeacher ? classConfig.getObjectives() : null, task.getObjectives()), value(useTeacher ? classConfig.getRequirements() : null, task.getRequirements()), value(useTeacher ? classConfig.getSteps() : null, task.getSteps()), value(useTeacher ? classConfig.getMaterialName() : null, task.getMaterialName()), value(useTeacher ? classConfig.getMaterialUrl() : null, task.getMaterialUrl())); } private static String value(String preferred, String fallback) { return StringUtils.isNotBlank(preferred) ? preferred : fallback; } public String getScope() { return scope; } public String getEffectiveConfigId() { return effectiveConfigId; } public String getKnowledge() { return knowledge; } public String getBackground() { return background; } public String getObjectives() { return objectives; } public String getRequirements() { return requirements; } public String getSteps() { return steps; } public String getMaterialName() { return materialName; } public String getMaterialUrl() { return materialUrl; } }