diff --git a/src/BusinessCardManagement.java b/src/BusinessCardManagement.java index a15534b..56edf21 100644 --- a/src/BusinessCardManagement.java +++ b/src/BusinessCardManagement.java @@ -1,12 +1,15 @@ import java.io.File; import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.charset.Charset; import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; import javax.swing.JFileChooser; import javax.swing.JOptionPane; @@ -14,6 +17,9 @@ import javax.swing.filechooser.FileNameExtensionFilter; public class BusinessCardManagement { + + public final Charset CHARSET = java.nio.charset.Charset.forName("Shift_JIS"); + private Screen screen; private ScreenTemplates screenTemplates; private W4ca84254d30c423ab8e449171a5b5123 w4ca84254d30c423ab8e449171a5b5123; @@ -33,6 +39,7 @@ this.result = result; this.companyList = companyList; this.w2d109ad3739d4744a1874ac179fc38b9 = w2d109ad3739d4744a1874ac179fc38b9; + load(); } public Map> getValue() { Map> value = new HashMap<>(); @@ -134,6 +141,9 @@ final int ADDRESS_INDEX = 4; final int TELL_INDEX = 5; public void imports(String curScreen, String wid, int state) { + if (state != 0) { + return; + } JPanel mainPanel = screen.getPresenter().getMainPanel(); JFileChooser fileChooser = new JFileChooser(); FileNameExtensionFilter filter = new FileNameExtensionFilter("CSVファイル(*.csv)", "csv"); @@ -143,10 +153,10 @@ File selectedFile = fileChooser.getSelectedFile(); Map>> businessCardData = new HashMap<>(); try { - List lines = Files.readAllLines(selectedFile.toPath(), java.nio.charset.Charset.forName("Shift_JIS")); + List lines = Files.readAllLines(selectedFile.toPath(), CHARSET); for (int i = 1; i < lines.size(); i++) { String line = lines.get(i); - String[] value = line.split(","); + String[] value = line.split(",", -1); String companyName = value[0]; if (! businessCardData.containsKey(companyName)) { businessCardData.put(companyName, new ArrayList<>()); @@ -168,15 +178,134 @@ = new BusinessCardManagementElement("", "", "", address, "", "", "", "", "", names[0], positions[0], tells[0], "", names[1], positions[1], tells[1], "",names[2], positions[2], tells[2], "",names[3], positions[3], tells[3], ""); value.put(companyName, bussinessCard); } - screen.getPresenter().setTable(curScreen, w2d109ad3739d4744a1874ac179fc38b9.getValue(), value.entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, entry -> entry.getValue().getValue()))); +// screen.getPresenter().setTable(curScreen, w2d109ad3739d4744a1874ac179fc38b9.getValue(), getValue()); } catch (IOException e) { e.printStackTrace(); JOptionPane.showMessageDialog(mainPanel, "ファイルの読み込みに失敗しました。"); } } } + + public void load() { + try { + Path path = getCSVFilePath(); + if (Files.notExists(path)) { + return; + } + List lines = Files.readAllLines(path, CHARSET); + for (String line : lines) { + String[] values = line.split(",", -1); + + BusinessCardManagementElement businessCard = new BusinessCardManagementElement( + values[1], + values[2], + values[3], + values[4], + values[5], + values[6], + values[7], + values[8], + values[9], + values[10], + values[11], + values[12], + values[13], + values[14], + values[15], + values[16], + values[17], + values[18], + values[19], + values[20], + values[21], + values[22], + values[23], + values[24], + values[25] + ); + value.put(values[0], businessCard); + } +// screen.getPresenter().setTable(curScreen, w2d109ad3739d4744a1874ac179fc38b9.getValue(), getValue()); + } catch (URISyntaxException | IOException e) { + // TODO 自動生成された catch ブロック + e.printStackTrace(); + } + } + public void save(String curScreen, String wid, int state) { + if (state != 0) { + return; + } JPanel mainPanel = screen.getPresenter().getMainPanel(); + Path path; + try { + path = getCSVFilePath(); + StringBuilder sb = new StringBuilder(); + if (Files.notExists(path)) { + Files.createFile(path); + } + for (String key : value.keySet()) { + BusinessCardManagementElement businessCard = value.get(key); + String[] values = { + key, + businessCard.getRepresentative(), + businessCard.getPosition(), + businessCard.getEstablishment(), + businessCard.getAddress1(), + businessCard.getAddress2(), + businessCard.getBusinessDescription2(), + businessCard.getBusinessDescription1(), + businessCard.getCompanyOverview(), + businessCard.getURL(), + businessCard.getContactPerson1(), + businessCard.getPosition1(), + businessCard.getTel1(), + businessCard.getEmail1(), + businessCard.getContactPerson2(), + businessCard.getPosition2(), + businessCard.getTel2(), + businessCard.getEmail2(), + businessCard.getContactPerson3(), + businessCard.getPosition3(), + businessCard.getTel3(), + businessCard.getEmail3(), + businessCard.getContactPerson4(), + businessCard.getPosition4(), + businessCard.getTel4(), + businessCard.getEmail4() + }; + for (String value : values) { + if (value != null) { + sb.append(escapeCsv(value)); + } + sb.append(","); + } + sb.deleteCharAt(sb.length() - 1); + sb.append('\n'); + } + sb.deleteCharAt(sb.length() - 1); + System.out.println(sb.toString()); + Files.write(path, sb.toString().getBytes(CHARSET)); + } catch (URISyntaxException | IOException e) { + e.printStackTrace(); + JOptionPane.showMessageDialog(mainPanel, "ファイルの保存に失敗しました。"); + } } + + private String escapeCsv(String value) { + if (value.contains(",") || value.contains("\"") || value.contains("\n")) { + value = value.replace("\"", "\"\""); + return "\"" + value + "\""; + } + return value; + } + + private Path getCSVFilePath() throws URISyntaxException { + return Paths.get(Main.class.getProtectionDomain() + .getCodeSource() + .getLocation() + .toURI().toString().substring(6) + "../startup.csv"); + } + } \ No newline at end of file