/**
* @param multipartFile
* @return CSV API
*/
@Override
public AjaxResult readCsv(MultipartFile multipartFile) {
AjaxResult result = new AjaxResult();
SubjectLearningCsvReadVo subjectCsvVo = new SubjectLearningCsvReadVo();
BufferedReader br = null;
StringBuffer stringBuffer = new StringBuffer();
List<String> errList = Lists.newArrayList();
try {
br = new BufferedReader(new InputStreamReader(multipartFile.getInputStream()));
String lineString = null;
while ((lineString = br.readLine()) != null) {
stringBuffer.append(lineString);
}
String stringBufferNew = stringBuffer.toString().replace("\"", "");
if (ObjectUtils.isNotEmpty(stringBufferNew)) {
String[] csvRead = stringBufferNew.split(",");
for (int i = 0; i < csvRead.length; i++) {
String bunrui = csvRead[0];
if (bunrui.length() > 50) {
errList.add(
MessageUtils.message(MessageConstants.MSG_KT_E0004, "タイトル", "50"));
}
if (StringUtils.isEmpty(bunrui)) {
errList.add(MessageUtils.message(MessageConstants.MSG_SK_E0014, "タイトル"));
}
subjectCsvVo.setBunrui(bunrui);
if (csvRead.length < 2 || StringUtils.isEmpty(csvRead[1])) {
errList.add(MessageUtils.message(MessageConstants.MSG_SK_E0014, "問題"));
} else {
String questionString = csvRead[1];
if (questionString.length() > 500) {
errList.add(MessageUtils.message(MessageConstants.MSG_KT_E0004, "問題",
"500"));
}
subjectCsvVo.setQuestion(questionString);
}
if (csvRead.length < 3 || StringUtils.isEmpty(csvRead[2])) {
errList.add(MessageUtils.message(MessageConstants.MSG_SK_E0014, "選択肢内容1"));
} else {
String choice1 = csvRead[2];
if (choice1.length() > 200) {
errList.add(MessageUtils.message(MessageConstants.MSG_KT_E0004,
"選択肢内容1", "200"));
}
subjectCsvVo.setChoice1(choice1);
}
if (csvRead.length > 3 && StringUtils.isNotEmpty(csvRead[3])) {
String choice2 = csvRead[3];
if (choice2.length() > 200) {
errList.add(MessageUtils.message(MessageConstants.MSG_KT_E0004,
"選択肢内容2", "200"));
}
subjectCsvVo.setChoice2(choice2);
}
if (csvRead.length > 4 && StringUtils.isNotEmpty(csvRead[4])) {
String choice3 = csvRead[4];
if (choice3.length() > 200) {
errList.add(MessageUtils.message(MessageConstants.MSG_KT_E0004,
"選択肢内容3", "200"));
}
subjectCsvVo.setChoice3(choice3);
}
if (csvRead.length > 5 && StringUtils.isNotEmpty(csvRead[5])) {
String choice4 = csvRead[5];
if (choice4.length() > 200) {
errList.add(MessageUtils.message(MessageConstants.MSG_KT_E0004,
"選択肢内容4", "200"));
}
subjectCsvVo.setChoice4(choice4);
}
if (csvRead.length > 6 && StringUtils.isNotEmpty(csvRead[6])) {
String choice5 = csvRead[6];
if (choice5.length() > 200) {
errList.add(MessageUtils.message(MessageConstants.MSG_KT_E0004,
"選択肢内容5", "200"));
}
subjectCsvVo.setChoice5(choice5);
}
if (csvRead.length < 8 || StringUtils.isEmpty(csvRead[7])) {
errList.add(MessageUtils.message(MessageConstants.MSG_SK_E0014, "正解"));
} else {
String correct = csvRead[7];
if (correct.length() > 1) {
errList.add(
MessageUtils.message(MessageConstants.MSG_KT_E0004, "正解", "1"));
}
// CSVファイルから、項目「正解」の選択肢IDは上記選択肢内容1~選択肢内容5に含まれない場合
if (!(csvRead[2].contains(correct) || csvRead[3].contains(correct)
|| csvRead[4].contains(correct) || csvRead[5].contains(correct)
|| csvRead[6].contains(correct))) {
errList.add(
MessageUtils.message(MessageConstants.MSG_SK_E0014, "選択肢内容"));
}
subjectCsvVo.setCorrect(correct);
}
if (csvRead.length < 9 || StringUtils.isEmpty(csvRead[8])) {
errList.add(MessageUtils.message(MessageConstants.MSG_SK_E0014, "解説"));
} else {
String kaisetsu = csvRead[8];
if (StringUtils.isNotEmpty(kaisetsu) && 1 < kaisetsu.length()) {
kaisetsu = kaisetsu.substring(0, kaisetsu.length() - 1);
}
if (kaisetsu.length() > 500) {
errList.add(MessageUtils.message(MessageConstants.MSG_KT_E0004, "解説",
"500"));
}
subjectCsvVo.setKaisetsu(kaisetsu);
}
}
}
} catch (IOException e) {
result.put(AjaxResult.CODE_TAG, Constants.FAIL_CODE);
result.put(AjaxResult.MSG_TAG, MessageUtils.message(MessageConstants.MSG_KT_E0001));
e.printStackTrace();
} finally {
try {
if (br != null) {
br.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
// CSVファイル読込
List<SubjectLearningCsvReadVo> subjectcsvList = new ArrayList<SubjectLearningCsvReadVo>();
subjectcsvList.add(subjectCsvVo);
if (errList.size() > 0) {
result.put(AjaxResult.CODE_TAG, Constants.FAIL_CODE);
result.put(AjaxResult.MSG_TAG, errList);
} else {
result.put(AjaxResult.CODE_TAG, Constants.SUCCESS_CODE);
result.put("subjectcsvList", subjectcsvList);
}
return result;
}
csv读取
于 2023-05-16 16:15:40 首次发布