diff --git a/src/BusinessCardManagement.java b/src/BusinessCardManagement.java index 1fbec09..a15534b 100644 --- a/src/BusinessCardManagement.java +++ b/src/BusinessCardManagement.java @@ -1,5 +1,17 @@ -import javax.swing.*; -import java.util.*; +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +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; +import javax.swing.JPanel; +import javax.swing.filechooser.FileNameExtensionFilter; public class BusinessCardManagement { private Screen screen; @@ -115,8 +127,53 @@ this.widget.updateDataFromBusinessCardManagement2(scId, wid, this.getValue(), w4ca84254d30c423ab8e449171a5b5123, searchScreen); } + + final int COMPANY_NAME_INDEX = 0; + final int PERSON_NAME_INDEX = 1; + final int POSITION_INDEX = 2; + final int ADDRESS_INDEX = 4; + final int TELL_INDEX = 5; public void imports(String curScreen, String wid, int state) { JPanel mainPanel = screen.getPresenter().getMainPanel(); + JFileChooser fileChooser = new JFileChooser(); + FileNameExtensionFilter filter = new FileNameExtensionFilter("CSVファイル(*.csv)", "csv"); + fileChooser.setFileFilter(filter); + int result = fileChooser.showOpenDialog(mainPanel); + if (result == JFileChooser.APPROVE_OPTION) { + File selectedFile = fileChooser.getSelectedFile(); + Map>> businessCardData = new HashMap<>(); + try { + List lines = Files.readAllLines(selectedFile.toPath(), java.nio.charset.Charset.forName("Shift_JIS")); + for (int i = 1; i < lines.size(); i++) { + String line = lines.get(i); + String[] value = line.split(","); + String companyName = value[0]; + if (! businessCardData.containsKey(companyName)) { + businessCardData.put(companyName, new ArrayList<>()); + } + businessCardData.get(companyName).add(Arrays.asList(value)); + } + for (var companyName : businessCardData.keySet()) { + String address = businessCardData.get(companyName).get(0).get(ADDRESS_INDEX); + String[] names = new String[4]; + String[] positions = new String[4]; + String[] tells = new String[4]; + for (int i = 0; i < Math.min(businessCardData.get(companyName).size(), 4); i++) { + List data = businessCardData.get(companyName).get(i); + names[i] = data.get(PERSON_NAME_INDEX); + positions[i] = data.get(POSITION_INDEX); + tells[i] = data.get(TELL_INDEX); + } + BusinessCardManagementElement bussinessCard + = 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()))); + } catch (IOException e) { + e.printStackTrace(); + JOptionPane.showMessageDialog(mainPanel, "ファイルの読み込みに失敗しました。"); + } + } } public void save(String curScreen, String wid, int state) { diff --git a/src/SwingPresenter.java b/src/SwingPresenter.java index 46d5525..faeba41 100644 --- a/src/SwingPresenter.java +++ b/src/SwingPresenter.java @@ -1,10 +1,3 @@ -import javax.swing.*; -import javax.swing.event.DocumentEvent; -import javax.swing.event.DocumentListener; -import javax.swing.table.DefaultTableModel; -import javax.swing.table.TableModel; -import javax.swing.text.BadLocationException; -import javax.swing.text.Document; import java.awt.Component; import java.awt.FlowLayout; import java.awt.event.MouseEvent; @@ -13,6 +6,19 @@ import java.util.List; import java.util.Map; +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.JTextField; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import javax.swing.table.DefaultTableModel; +import javax.swing.table.TableModel; +import javax.swing.text.BadLocationException; +import javax.swing.text.Document; + public class SwingPresenter { private Main main; private JPanel mainPanel; @@ -370,8 +376,9 @@ public void setTable(String scId, String wid, Map> data) { if (!curScreenId.equals(scId)) return; - if (!(components.get(wid) instanceof JTable)) return; - JTable table = (JTable) components.get(wid); + if (!(components.get(wid) instanceof JScrollPane)) return; + JScrollPane pane = (JScrollPane) components.get(wid); + JTable table = (JTable) pane.getViewport().getView(); TableModel tableModel = table.getModel(); int i = 0; for(String dataKey : data.keySet()) {