« OpenDolphin-1.3.0.3 公開(Java 1.6 専用) | トップページ | Magic Mouse 購入 »

2009年11月 3日 (火)

検索結果ファイル保存

患者検索画面で検索した結果をファイルに書き出せるようにした。検索結果リストで右クリックすると,結果を保存するメニューが出る。(//pns^ から //pns$ までが変更内容)

plugin/PatientSearchImpl.java

class ContextListener extends AbstractContextListener {
 ・
 ・
  JCheckBoxMenuItem item = new JCheckBoxMenuItem("年齢表示");
  contextMenu.add(item);
  item.setSelected(ageDisplay);
  item.addActionListener(EventHandler.create(ActionListener.class, PatientSearchImpl.this, "switchAgeDisplay"));
//pns^
  // 検索結果をファイル保存
  if (view.getTable().getRowCount() > 0) {
    contextMenu.add(new JMenuItem(new ReflectAction("検索結果ファイル保存", PatientSearchImpl.this, "exportSearchResult")));
  }
//pns$
 ・
 ・
//pns^
/**
 * 検索結果をファイルに書き出す
 */
public void exportSearchResult() {
  JFileChooser fileChooser = new JFileChooser();
  if (fileChooser.showSaveDialog(view) == JFileChooser.APPROVE_OPTION) {
    File file = fileChooser.getSelectedFile();

    if (!file.exists() || isOverwriteConfirmed(file)) {

      try {
      FileWriter writer = new FileWriter(file);
      JTable table = view.getTable();
      // 書き出す内容
      StringBuilder sb = new StringBuilder();
      for (int row = 0; row < table.getRowCount(); row++) {
        for (int column = 0; column < table.getColumnCount(); column++) {
          sb.append(column==0?"":',');
          sb.append('"');
          sb.append(table.getValueAt(row, column));
          sb.append('"');
        }
        sb.append('\n');
      }
      writer.write(sb.toString());
      // close
      writer.close();

      } catch (IOException ex) {
        System.out.println("PatientSearchImpl.java: " + ex);
      }
    }
  }
}
/**
 * ファイル上書き確認ダイアログを表示する。
 * @param file 上書き対象ファイル
 * @return 上書きOKが指示されたらtrue
 */
private boolean isOverwriteConfirmed(File file){
  String title = "上書き確認";
  String message = "既存のファイル「" + file.toString() + "」\n"
          +"を上書きしようとしています。続けますか?";

  int confirm = JOptionPane.showConfirmDialog(
      view, message, title,
      JOptionPane.WARNING_MESSAGE,
      JOptionPane.OK_CANCEL_OPTION );

  if(confirm == JOptionPane.OK_OPTION) return true;

  return false;
}
//pns$

« OpenDolphin-1.3.0.3 公開(Java 1.6 専用) | トップページ | Magic Mouse 購入 »

OpenDolphin」カテゴリの記事