From 65cf31c6ef89391f96579b1dd239b804dc24ed93 Mon Sep 17 00:00:00 2001 From: spark_xp Date: Sat, 7 May 2011 11:29:35 +0000 Subject: [PATCH] =?utf8?q?=E3=83=AD=E3=82=B0=E3=83=95=E3=82=A1=E3=82=A4?= =?utf8?q?=E3=83=AB=E3=82=92CSV=E5=BD=A2=E5=BC=8F=E3=81=A7=E5=87=BA?= =?utf8?q?=E5=8A=9B=E3=81=A7=E3=81=8D=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= =?utf8?q?=E6=94=B9=E8=89=AF=20refs=20#23188?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: http://svn.sourceforge.jp/svnroot/nt-manager/NishioTweetManager/trunk@134 d8c9ecd3-d47d-4367-8645-de82c00e513f --- src/twitter/gui/action/TweetMainAction.java | 57 ++++ src/twitter/gui/form/NishioTweetManager.form | 16 + src/twitter/gui/form/NishioTweetManager.java | 21 ++ src/twitter/gui/form/OutputCSVLogDialog.form | 305 ++++++++++++++++++ src/twitter/gui/form/OutputCSVLogDialog.java | 441 +++++++++++++++++++++++++++ 5 files changed, 840 insertions(+) create mode 100644 src/twitter/gui/form/OutputCSVLogDialog.form create mode 100644 src/twitter/gui/form/OutputCSVLogDialog.java diff --git a/src/twitter/gui/action/TweetMainAction.java b/src/twitter/gui/action/TweetMainAction.java index 97cbdce..0aa2a62 100644 --- a/src/twitter/gui/action/TweetMainAction.java +++ b/src/twitter/gui/action/TweetMainAction.java @@ -73,6 +73,7 @@ import twitter.gui.form.ConfigurationDialog; import twitter.gui.form.DirectMessageDialog; import twitter.gui.form.HashtagSearchDialog; import twitter.gui.form.KeywordSearchDialog; +import twitter.gui.form.OutputCSVLogDialog; import twitter.gui.form.UserListDialog; import twitter.gui.form.UserSearchDialog; import twitter.log.TwitterLogManager; @@ -224,6 +225,8 @@ public class TweetMainAction { private UserListDialog userListDialog = null; //ユーザサーチダイアログ private UserSearchDialog userSearchDialog = null; + //CSVログ出力ダイアログ + private OutputCSVLogDialog outputCSVLogDialog = null; // 情報更新間隔[sec] private int getTimelinePeriod = 60; @@ -1325,6 +1328,15 @@ public class TweetMainAction { dialog.setVisible(true); } + /** + * CSVログ出力ダイアログを表示 + */ + public void actionShowOutputCSVLogDialog() { + OutputCSVLogDialog dialog = getOutputCSVLogDialog(); + dialog.setLocationRelativeTo(null); + dialog.setVisible(true); + } + /** * ハッシュタグ検索ダイアログを表示 */ @@ -1493,6 +1505,40 @@ public class TweetMainAction { } } + /** + * ログデータを保存 + * @param logFilePath + * @param outputFilePath + * @param showUsername + * @param showScreenName + * @param showText + * @param showUpdateTime + * @param showClient + * @param showUserDescription + * @param showFollowing + * @param showFollower + * @param showUpdateCount + * @param showUserURL + * @param showProfileImageURL + * @throws SAXParseException + * @throws IOException + */ + public void outputLogToCSV(String logFilePath, String outputFilePath, + boolean showUsername, boolean showScreenName, + boolean showText, + boolean showUpdateTime, boolean showClient, + boolean showUserDescription, + boolean showFollowing, boolean showFollower, + boolean showUpdateCount, boolean showUserURL, + boolean showProfileImageURL) throws SAXParseException, IOException { + TwitterLogManager logManager = new TwitterLogManager(); + List statuses = logManager.get(logFilePath); + logManager.outputCSVLog( outputFilePath, statuses, showUsername, showScreenName, + showText, showUpdateTime, showClient, + showUserDescription, showFollowing, showFollower, + showUpdateCount, showUserURL,showProfileImageURL); + } + /** * 基本設定用ダイアログを取得 * @@ -1565,6 +1611,17 @@ public class TweetMainAction { return this.userSearchDialog; } + /** + * CSVログ出力ダイアログを表示 + * @return + */ + public OutputCSVLogDialog getOutputCSVLogDialog() { + if( this.outputCSVLogDialog == null ) { + this.outputCSVLogDialog = new OutputCSVLogDialog(mainFrame, true, this); + } + return this.outputCSVLogDialog; + } + /** * hashtag検索ダイアログ * diff --git a/src/twitter/gui/form/NishioTweetManager.form b/src/twitter/gui/form/NishioTweetManager.form index 1815827..e2b0540 100644 --- a/src/twitter/gui/form/NishioTweetManager.form +++ b/src/twitter/gui/form/NishioTweetManager.form @@ -448,6 +448,22 @@ + + + + + + + + + + + + + + + + diff --git a/src/twitter/gui/form/NishioTweetManager.java b/src/twitter/gui/form/NishioTweetManager.java index dd3c9c5..6798e2e 100644 --- a/src/twitter/gui/form/NishioTweetManager.java +++ b/src/twitter/gui/form/NishioTweetManager.java @@ -228,6 +228,8 @@ public class NishioTweetManager extends javax.swing.JFrame { jMenu2 = new javax.swing.JMenu(); jMenuItem2 = new javax.swing.JMenuItem(); jMenuItem4 = new javax.swing.JMenuItem(); + jMenu8 = new javax.swing.JMenu(); + jMenuItem32 = new javax.swing.JMenuItem(); jMenu3 = new javax.swing.JMenu(); jMenuItem3 = new javax.swing.JMenuItem(); @@ -975,6 +977,19 @@ public class NishioTweetManager extends javax.swing.JFrame { jMenuBar1.add(jMenu2); + jMenu8.setMnemonic('M'); + jMenu8.setText("ログ管理(M)"); + + jMenuItem32.setText("ログをCSV形式として保存"); + jMenuItem32.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jMenuItem32ActionPerformed(evt); + } + }); + jMenu8.add(jMenuItem32); + + jMenuBar1.add(jMenu8); + jMenu3.setMnemonic('H'); jMenu3.setText("ヘルプ(H)"); @@ -1022,6 +1037,10 @@ public class NishioTweetManager extends javax.swing.JFrame { mainAction.actionShowUserSearchDialog(); }//GEN-LAST:event_jMenuItem31ActionPerformed + private void jMenuItem32ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem32ActionPerformed + mainAction.actionShowOutputCSVLogDialog(); + }//GEN-LAST:event_jMenuItem32ActionPerformed + private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jButton4ActionPerformed // メッセージをつぶやく mainAction.actionTweet(); @@ -1448,6 +1467,7 @@ public class NishioTweetManager extends javax.swing.JFrame { private javax.swing.JMenu jMenu5; private javax.swing.JMenu jMenu6; private javax.swing.JMenu jMenu7; + private javax.swing.JMenu jMenu8; private javax.swing.JMenuBar jMenuBar1; private javax.swing.JMenuItem jMenuItem1; private javax.swing.JMenuItem jMenuItem10; @@ -1474,6 +1494,7 @@ public class NishioTweetManager extends javax.swing.JFrame { private javax.swing.JMenuItem jMenuItem3; private javax.swing.JMenuItem jMenuItem30; private javax.swing.JMenuItem jMenuItem31; + private javax.swing.JMenuItem jMenuItem32; private javax.swing.JMenuItem jMenuItem4; private javax.swing.JMenuItem jMenuItem5; private javax.swing.JMenuItem jMenuItem6; diff --git a/src/twitter/gui/form/OutputCSVLogDialog.form b/src/twitter/gui/form/OutputCSVLogDialog.form new file mode 100644 index 0000000..07c8199 --- /dev/null +++ b/src/twitter/gui/form/OutputCSVLogDialog.form @@ -0,0 +1,305 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/src/twitter/gui/form/OutputCSVLogDialog.java b/src/twitter/gui/form/OutputCSVLogDialog.java new file mode 100644 index 0000000..070de44 --- /dev/null +++ b/src/twitter/gui/form/OutputCSVLogDialog.java @@ -0,0 +1,441 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +/* + * OutputCSVLogDialog.java + * + * Created on 2011/05/07, 19:19:29 + */ + +package twitter.gui.form; + +import java.io.File; +import java.io.IOException; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.swing.JFileChooser; +import javax.swing.JOptionPane; +import javax.swing.filechooser.FileFilter; +import org.xml.sax.SAXParseException; +import twitter.gui.action.TweetMainAction; + +/** + * + * @author nishio + */ +public class OutputCSVLogDialog extends javax.swing.JDialog { + + /** Creates new form OutputCSVLogDialog */ + public OutputCSVLogDialog(java.awt.Frame parent, boolean modal, TweetMainAction mainAction) { + super(parent, modal); + initComponents(); + this.mainAction = mainAction; + } + + /** This method is called from within the constructor to + * initialize the form. + * WARNING: Do NOT modify this code. The content of this method is + * always regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jCheckBox1 = new javax.swing.JCheckBox(); + jPanel1 = new javax.swing.JPanel(); + jLabel1 = new javax.swing.JLabel(); + jLabel2 = new javax.swing.JLabel(); + jLabel3 = new javax.swing.JLabel(); + jTextField1 = new javax.swing.JTextField(); + jTextField2 = new javax.swing.JTextField(); + jButton1 = new javax.swing.JButton(); + jButton2 = new javax.swing.JButton(); + jLabel4 = new javax.swing.JLabel(); + jCheckBox2 = new javax.swing.JCheckBox(); + jCheckBox3 = new javax.swing.JCheckBox(); + jCheckBox4 = new javax.swing.JCheckBox(); + jCheckBox5 = new javax.swing.JCheckBox(); + jCheckBox6 = new javax.swing.JCheckBox(); + jCheckBox7 = new javax.swing.JCheckBox(); + jCheckBox8 = new javax.swing.JCheckBox(); + jCheckBox9 = new javax.swing.JCheckBox(); + jCheckBox10 = new javax.swing.JCheckBox(); + jCheckBox11 = new javax.swing.JCheckBox(); + jCheckBox12 = new javax.swing.JCheckBox(); + jButton3 = new javax.swing.JButton(); + jButton4 = new javax.swing.JButton(); + + jCheckBox1.setText("jCheckBox1"); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + setTitle("Output CSV Log"); + + jLabel1.setText("保存されたログデータをCSVファイルに変換します"); + + jLabel2.setText("ログファイルパス(元データ)"); + + jLabel3.setText("出力CSVファイルパス"); + + jTextField2.setText("./output.csv"); + jTextField2.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jTextField2ActionPerformed(evt); + } + }); + + jButton1.setText("選択"); + jButton1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton1ActionPerformed(evt); + } + }); + + jButton2.setText("選択"); + jButton2.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton2ActionPerformed(evt); + } + }); + + jLabel4.setText("保存するデータ"); + + jCheckBox2.setSelected(true); + jCheckBox2.setText("ユーザ名"); + jCheckBox2.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jCheckBox2ActionPerformed(evt); + } + }); + + jCheckBox3.setSelected(true); + jCheckBox3.setText("スクリーン名"); + + jCheckBox4.setSelected(true); + jCheckBox4.setText("更新日時"); + + jCheckBox5.setSelected(true); + jCheckBox5.setText("更新元"); + + jCheckBox6.setSelected(true); + jCheckBox6.setText("ユーザ紹介文"); + jCheckBox6.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jCheckBox6ActionPerformed(evt); + } + }); + + jCheckBox7.setSelected(true); + jCheckBox7.setText("フォローしている数"); + jCheckBox7.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jCheckBox7ActionPerformed(evt); + } + }); + + jCheckBox8.setSelected(true); + jCheckBox8.setText("フォローされている数"); + + jCheckBox9.setSelected(true); + jCheckBox9.setText("更新数"); + + jCheckBox10.setSelected(true); + jCheckBox10.setText("ユーザのURL"); + + jCheckBox11.setSelected(true); + jCheckBox11.setText("ユーザイメージのURL"); + + jCheckBox12.setSelected(true); + jCheckBox12.setText("ツイート"); + + jButton3.setText("出力"); + jButton3.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton3ActionPerformed(evt); + } + }); + + jButton4.setText("キャンセル"); + jButton4.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton4ActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel2) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jLabel3, javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 327, Short.MAX_VALUE) + .addComponent(jTextField2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 327, Short.MAX_VALUE) + .addComponent(jTextField1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 327, Short.MAX_VALUE) + .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 125, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jButton4, javax.swing.GroupLayout.DEFAULT_SIZE, 129, Short.MAX_VALUE) + .addComponent(jButton1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 129, Short.MAX_VALUE) + .addComponent(jButton2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 129, Short.MAX_VALUE)))) + .addContainerGap()) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(jLabel4) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 228, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jCheckBox2, javax.swing.GroupLayout.DEFAULT_SIZE, 142, Short.MAX_VALUE) + .addComponent(jCheckBox3, javax.swing.GroupLayout.DEFAULT_SIZE, 142, Short.MAX_VALUE) + .addComponent(jCheckBox4, javax.swing.GroupLayout.DEFAULT_SIZE, 142, Short.MAX_VALUE) + .addComponent(jCheckBox5, javax.swing.GroupLayout.DEFAULT_SIZE, 142, Short.MAX_VALUE) + .addComponent(jCheckBox6, javax.swing.GroupLayout.DEFAULT_SIZE, 142, Short.MAX_VALUE) + .addComponent(jCheckBox7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGap(18, 18, 18) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jCheckBox8, javax.swing.GroupLayout.DEFAULT_SIZE, 164, Short.MAX_VALUE) + .addComponent(jCheckBox9, javax.swing.GroupLayout.DEFAULT_SIZE, 164, Short.MAX_VALUE) + .addComponent(jCheckBox10, javax.swing.GroupLayout.DEFAULT_SIZE, 164, Short.MAX_VALUE) + .addComponent(jCheckBox11, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jCheckBox12, javax.swing.GroupLayout.DEFAULT_SIZE, 164, Short.MAX_VALUE)))) + .addGap(156, 156, 156)))) + ); + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jLabel1) + .addGap(12, 12, 12) + .addComponent(jLabel2) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabel3) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(16, 16, 16) + .addComponent(jLabel4) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(jCheckBox2) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jCheckBox3) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jCheckBox4) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jCheckBox5) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jCheckBox6) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jCheckBox7)) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(jCheckBox8) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jCheckBox9) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jCheckBox10) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jCheckBox11) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jCheckBox12)))) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(jButton1) + .addGap(27, 27, 27) + .addComponent(jButton2))) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 9, Short.MAX_VALUE) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jButton3) + .addComponent(jButton4)) + .addContainerGap()) + ); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + + pack(); + }// //GEN-END:initComponents + + private void jTextField2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextField2ActionPerformed + + }//GEN-LAST:event_jTextField2ActionPerformed + + private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed + JFileChooser chooser = new JFileChooser("."); + //.logファイルだけ読み取れるようにする) + FileFilter filter1 = new ExtensionFileFilter("CSV File(.csv)", new String[] { "csv" }); + chooser.setFileFilter(filter1); + + int selected = chooser.showSaveDialog(this); + if( selected == JFileChooser.APPROVE_OPTION ) { + File selectedFile = chooser.getSelectedFile(); + String path = selectedFile.getAbsolutePath(); + if(!path.endsWith(".csv") ) { + path = path + ".csv"; + } + //絶対パスをセット + jTextField2.setText( path ); + } + }//GEN-LAST:event_jButton2ActionPerformed + + private void jCheckBox2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBox2ActionPerformed + // TODO add your handling code here: + }//GEN-LAST:event_jCheckBox2ActionPerformed + + private void jCheckBox6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBox6ActionPerformed + // TODO add your handling code here: + }//GEN-LAST:event_jCheckBox6ActionPerformed + + private void jCheckBox7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBox7ActionPerformed + // TODO add your handling code here: + }//GEN-LAST:event_jCheckBox7ActionPerformed + + private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed + JFileChooser chooser = new JFileChooser("."); + //.logファイルだけ読み取れるようにする) + FileFilter filter1 = new ExtensionFileFilter("Nishio Tweet Manager Log(.log)", new String[] { "log" }); + chooser.setFileFilter(filter1); + + int selected = chooser.showOpenDialog(this); + if( selected == JFileChooser.APPROVE_OPTION ) { + File selectedFile = chooser.getSelectedFile(); + String path = selectedFile.getAbsolutePath(); + //絶対パスをセット + jTextField1.setText( path ); + } + }//GEN-LAST:event_jButton1ActionPerformed + + private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton4ActionPerformed + this.setVisible(false); + }//GEN-LAST:event_jButton4ActionPerformed + + private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed + String sourcePath = jTextField1.getText(); + String destPath = jTextField2.getText(); + boolean showUsername = jCheckBox2.isSelected(); + boolean showScreenName = jCheckBox3.isSelected(); + boolean showText = jCheckBox12.isSelected(); + boolean showUpdateTime = jCheckBox4.isSelected(); + boolean showClient = jCheckBox5.isSelected(); + boolean showUserDescription = jCheckBox6.isSelected(); + boolean showFollowing = jCheckBox7.isSelected(); + boolean showFollower = jCheckBox8.isSelected(); + boolean showUpdateCount = jCheckBox9.isSelected(); + boolean showUserURL = jCheckBox10.isSelected(); + boolean showProfileImageURL = jCheckBox11.isSelected(); + try { + //CSV出力 + this.mainAction.outputLogToCSV(sourcePath, destPath, showUsername, showScreenName, + showText, showUpdateTime, showClient, showUserDescription, + showFollowing, showFollower, showUpdateCount, showUserURL, showProfileImageURL); + //ダイアログを消す + this.setVisible(false); + } catch (SAXParseException ex) { + Logger.getLogger(OutputCSVLogDialog.class.getName()).log(Level.SEVERE, null, ex); + JOptionPane.showMessageDialog(null, "ログファイルの解析に失敗しました。正しいデータかどうか確認してください。", + "Parse error", JOptionPane.ERROR_MESSAGE); + } catch (IOException ex) { + Logger.getLogger(OutputCSVLogDialog.class.getName()).log(Level.SEVERE, null, ex); + JOptionPane.showMessageDialog(null, "ログファイルの読み込み、及び出力に失敗しました。", + "output error", JOptionPane.ERROR_MESSAGE); + } + }//GEN-LAST:event_jButton3ActionPerformed + + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton jButton1; + private javax.swing.JButton jButton2; + private javax.swing.JButton jButton3; + private javax.swing.JButton jButton4; + private javax.swing.JCheckBox jCheckBox1; + private javax.swing.JCheckBox jCheckBox10; + private javax.swing.JCheckBox jCheckBox11; + private javax.swing.JCheckBox jCheckBox12; + private javax.swing.JCheckBox jCheckBox2; + private javax.swing.JCheckBox jCheckBox3; + private javax.swing.JCheckBox jCheckBox4; + private javax.swing.JCheckBox jCheckBox5; + private javax.swing.JCheckBox jCheckBox6; + private javax.swing.JCheckBox jCheckBox7; + private javax.swing.JCheckBox jCheckBox8; + private javax.swing.JCheckBox jCheckBox9; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel2; + private javax.swing.JLabel jLabel3; + private javax.swing.JLabel jLabel4; + private javax.swing.JPanel jPanel1; + private javax.swing.JTextField jTextField1; + private javax.swing.JTextField jTextField2; + // End of variables declaration//GEN-END:variables + + private TweetMainAction mainAction = null; +} + +/** + * File Filter + * @author nishio + */ +class ExtensionFileFilter extends FileFilter { + String description; + + String extensions[]; + + public ExtensionFileFilter(String description, String extension) { + this(description, new String[] { extension }); + } + + public ExtensionFileFilter(String description, String extensions[]) { + if (description == null) { + this.description = extensions[0]; + } else { + this.description = description; + } + this.extensions = (String[]) extensions.clone(); + toLower(this.extensions); + } + + private void toLower(String array[]) { + for (int i = 0, n = array.length; i < n; i++) { + array[i] = array[i].toLowerCase(); + } + } + + public String getDescription() { + return description; + } + + public boolean accept(File file) { + if (file.isDirectory()) { + return true; + } else { + String path = file.getAbsolutePath().toLowerCase(); + for (int i = 0, n = extensions.length; i < n; i++) { + String extension = extensions[i]; + if ((path.endsWith(extension) && (path.charAt(path.length() - extension.length() - 1)) == '.')) { + return true; + } + } + } + return false; + } +} + + -- 2.11.0