package com.qxueyou.scc.exercise.service.impl.node; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.apache.commons.lang3.StringUtils; import com.qxueyou.scc.exercise.model.ExerciseItem; import com.qxueyou.scc.exercise.service.impl.Node; import com.qxueyou.scc.exercise.service.impl.parser.DocParser; import com.qxueyou.scc.exercise.service.impl.parser.ItemAnswerParser; /** * 带解析的文档 * @author 德虎 * */ public class Doc extends Node { public static final String CURR_SUCCESS_CONTENT ="CONTENT"; public static final String CURR_SUCCESS_OPTION ="OPTION"; public static final String CURR_SUCCESS_ANALYSIS ="ANALYSIS"; //上一次解析成功的类型 private String lastSuccessType; public String getLastSuccessType() { return lastSuccessType; } public void setLastSuccessType(String lastSuccessType) { this.lastSuccessType = lastSuccessType; } public Doc(){ setName("DOC"); setParser(new DocParser()); } @Override public boolean isComplete() { return false; } @SuppressWarnings("unchecked") public List getItemTypes(){ List children = getChildren(); if(children.isEmpty()){ return Collections.EMPTY_LIST; } List itemTypes = new ArrayList(children.size()); for(Node node:children){ itemTypes.add((ItemType) node); } return itemTypes; } public List convertExerciseItems(){ List itemTypes = getItemTypes(); List exerciseItems = new ArrayList(12); for(ItemType type:itemTypes){ List items = type.getItems(); for(Item item:items){ if(!item.isComplete()){ continue; } if(StringUtils.isBlank(item.getAnswer())){ generateItemAnswerAgain(item); } exerciseItems.add(item.convertExerciseItem()); } } return exerciseItems; } //如果没有答案,重新解析一遍答案 private void generateItemAnswerAgain(Item item){ ItemAnswerParser parser = new ItemAnswerParser(); parser.parse(item, item.getTitle()); } }