package com.dbnt.faisp.equip.service; import com.dbnt.faisp.equip.mapper.EquipMapper; import com.dbnt.faisp.equip.model.Equip; import com.dbnt.faisp.equip.model.EquipFile; import com.dbnt.faisp.equip.repository.EquipFileRepository; import com.dbnt.faisp.equip.repository.EquipRepository; import com.dbnt.faisp.translator.mapper.TranslatorMapper; import com.dbnt.faisp.translator.model.Translator; import com.dbnt.faisp.translator.model.Translator.TranslatorId; import com.dbnt.faisp.translator.model.TranslatorCrr; import com.dbnt.faisp.translator.repository.TranslatorCareerRepository; import com.dbnt.faisp.translator.repository.TranslatorRepository; import com.dbnt.faisp.util.ParamMap; import com.dbnt.faisp.util.Utils; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.FileCopyUtils; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.multipart.MultipartFile; import org.springframework.core.env.Environment; import java.io.File; import java.time.LocalDateTime; import java.util.*; @Service @RequiredArgsConstructor public class EquipService { @Value("${spring.servlet.multipart.location}") protected String locationPath; private final EquipRepository equipRepository; private final EquipFileRepository equipFileRepository; private final EquipMapper equipMapper; @Transactional public void saveEquip(Equip equip, MultipartHttpServletRequest request) { Equip dbEquip = equipRepository.findFirstByOrderByEquKeyDesc(); try { if(dbEquip == null) { equip.setEquKey(1); equip.setVersionNo(1); equipRepository.save(equip); } else { equip.setEquKey(dbEquip.getEquKey()+1); equip.setVersionNo(1); equipRepository.save(equip); } saveFile(equip,request); } catch (Exception e) { e.printStackTrace(); } } public void saveFile(Equip equip, MultipartHttpServletRequest mRequest) throws Exception { try { String path = locationPath; String FileSize; File dir = new File(path); if(!dir.exists()) dir.mkdir(); List mFiles = mRequest.getFiles("file"); for(int i = 0; i < mFiles.size(); i++) { MultipartFile mFile = mFiles.get(i); FileSize = calculationSize(mFile.getSize()); if(!"".equals(mFile.getOriginalFilename())){ String fileName = mFile.getOriginalFilename(); if(fileName.contains("\\")){ String notSecuredFileName = fileName.substring(fileName.lastIndexOf("\\") +1); fileName = ("".equals(notSecuredFileName) || null == notSecuredFileName) ? fileName : notSecuredFileName; }; String fileExt = Utils.getFileExtention(fileName); String saveName = Utils.generationSaveName() + "." + fileExt; FileCopyUtils.copy(mFile.getBytes(), new File(path, saveName)); EquipFile equipFile = new EquipFile(); equipFile.setFileSeq(1); equipFile.setEquKey(equip.getEquKey()); equipFile.setVersionNo(equip.getVersionNo()); equipFile.setOrigNm(fileName); equipFile.setConvNm(saveName); equipFile.setFileExtn(fileExt); equipFile.setFilePath(path); equipFile.setFileSize(FileSize); System.out.println(equipFile); equipFileRepository.save(equipFile); } } } catch (Exception e) { throw e; } } private String calculationSize(double fileSize){ String[] units = {"bytes", "KB", "MB", "GB", "TB", "PB"}; double unitSelector = Math.floor(Math.log(fileSize)/Math.log(1024)); if(fileSize>0){ return Math.round((fileSize/Math.pow(1024, unitSelector))*100)/100d+" "+units[(int)unitSelector]; }else{ return ""; } } }