112 lines
4.1 KiB
Java
112 lines
4.1 KiB
Java
package de.arminwolf.financeanalyzer.controller;
|
|
|
|
import de.arminwolf.financeanalyzer.conf.BankAccount;
|
|
import de.arminwolf.financeanalyzer.conf.Configuration;
|
|
import de.arminwolf.financeanalyzer.service.CacheService;
|
|
import de.arminwolf.financeanalyzer.service.ConverterService;
|
|
import de.arminwolf.financeanalyzer.service.FileService;
|
|
import de.arminwolf.financeanalyzer.util.Constants;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Controller;
|
|
import org.springframework.ui.Model;
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
import org.springframework.web.bind.annotation.ModelAttribute;
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
|
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
import java.nio.charset.StandardCharsets;
|
|
import java.nio.file.Files;
|
|
import java.nio.file.Path;
|
|
import java.nio.file.Paths;
|
|
import java.util.Arrays;
|
|
import java.util.Optional;
|
|
import java.util.Set;
|
|
import java.util.stream.Collectors;
|
|
|
|
@Controller
|
|
@RequestMapping("/data")
|
|
public class ConverterController {
|
|
|
|
@Autowired
|
|
ConverterService service;
|
|
|
|
@Autowired
|
|
CacheService cacheService;
|
|
|
|
@Autowired
|
|
FileService fileService;
|
|
|
|
|
|
@PostMapping("/convert")
|
|
public String convert(RedirectAttributes redirectAttributes, @RequestParam("file") MultipartFile file) {
|
|
try (InputStream in = file.getInputStream()) {
|
|
Optional<String> json = service.convert(in);
|
|
if (json.isPresent()) {
|
|
File workingDirectory = fileService.getOrCreateWorkingDirectory();
|
|
Path tempFile = Files.createFile(Paths.get(workingDirectory.getPath(), "finance-analyzer.json"));
|
|
Path path = Files.writeString(tempFile, json.get(), StandardCharsets.UTF_8);
|
|
|
|
cacheService.put("currentJsonFile", path.toAbsolutePath().toFile().toString());
|
|
Configuration configuration = new Configuration();
|
|
Set<BankAccount> bankAccounts =
|
|
Arrays.stream(fileService.getJsonFile())
|
|
.map(t -> new BankAccount(t.getReferenzkonto(), t.getNameReferenzkonto()))
|
|
.collect(Collectors.toSet());
|
|
|
|
configuration.setBankAccounts(bankAccounts);
|
|
fileService.saveConfiguration(configuration);
|
|
redirectAttributes.addFlashAttribute("result", "Converted successfully!");
|
|
return "redirect:/data/success";
|
|
} else {
|
|
redirectAttributes.addFlashAttribute("result", "Error while converting");
|
|
return "redirect:/data/error";
|
|
}
|
|
|
|
} catch (IOException e) {
|
|
redirectAttributes.addFlashAttribute("result", "Error while converting");
|
|
return "redirect:/data/error";
|
|
}
|
|
}
|
|
|
|
|
|
@PostMapping("/load")
|
|
public String convert(RedirectAttributes redirectAttributes,
|
|
@RequestParam("account") String account,
|
|
@RequestParam("month") String month) {
|
|
redirectAttributes.addFlashAttribute("result", "Converted successfully!");
|
|
redirectAttributes.addFlashAttribute("account", account);
|
|
redirectAttributes.addFlashAttribute("month", month);
|
|
System.out.println("[ Load Method ] Account: " + account);
|
|
System.out.println("[ Load Method ] Month: " + month);
|
|
return "redirect:/data/success";
|
|
}
|
|
|
|
|
|
@GetMapping("/templates/error")
|
|
public String handleError(@ModelAttribute("result") String result, Model model) {
|
|
model.addAttribute("result", result);
|
|
return Constants.ERROR;
|
|
}
|
|
|
|
|
|
@GetMapping("/success")
|
|
public String handleSuccess(RedirectAttributes redirectAttributes,
|
|
@ModelAttribute("result") String result,
|
|
@ModelAttribute("account") String account,
|
|
@ModelAttribute("month") String month,
|
|
Model model) {
|
|
redirectAttributes.addFlashAttribute("result", "Converted successfully!");
|
|
redirectAttributes.addFlashAttribute("account", account);
|
|
redirectAttributes.addFlashAttribute("month", month);
|
|
redirectAttributes.addFlashAttribute("result", result);
|
|
return "redirect:/".concat(Constants.REPORTS).concat("/");
|
|
}
|
|
|
|
}
|