OSDN Git Service

ログファイルの一部をSQLiteに書きだすプログラムを実装
authorspark_xp <spark_xp@d8c9ecd3-d47d-4367-8645-de82c00e513f>
Wed, 22 Jun 2011 17:32:08 +0000 (17:32 +0000)
committerspark_xp <spark_xp@d8c9ecd3-d47d-4367-8645-de82c00e513f>
Wed, 22 Jun 2011 17:32:08 +0000 (17:32 +0000)
git-svn-id: http://svn.sourceforge.jp/svnroot/nt-manager/NishioTweetManager/trunk@148 d8c9ecd3-d47d-4367-8645-de82c00e513f

src/twitter/log/StatusDBObjectConverter.java [new file with mode: 0644]
src/twitter/log/TweetDBObject.java
src/twitter/log/TwitterLogDao.java
src/twitter/log/TwitterLogManager.java

diff --git a/src/twitter/log/StatusDBObjectConverter.java b/src/twitter/log/StatusDBObjectConverter.java
new file mode 100644 (file)
index 0000000..5f868fc
--- /dev/null
@@ -0,0 +1,50 @@
+package twitter.log;
+
+import java.text.SimpleDateFormat;
+
+import twitter4j.Status;
+import twitter4j.User;
+
+public class StatusDBObjectConverter {
+
+       // 時間
+       private static final String DATE_PATTERN = "yyyy-MM-dd HH:mm:ss";
+       
+       /**
+        * StatusからDBに保存するためのオブジェクトに変換
+        * @param s
+        * @param following 自分がフォローしている相手かどうか
+        * @return
+        */
+       public static TweetDBObject convertStatusToDBObject(Status s, boolean following) {
+               TweetDBObject result = new TweetDBObject();
+               
+               result.setId( s.getId() );
+               result.setFollowing(following + "");
+               
+               String date = null;
+               if (s.getCreatedAt() != null) {
+                       SimpleDateFormat sdf = new SimpleDateFormat(DATE_PATTERN);
+                       date = sdf.format(s.getCreatedAt());
+               }
+               result.setDate( date );
+               
+               result.setReplyStatusID( s.getInReplyToStatusId() );
+               result.setReplyUserID( s.getInReplyToUserId() );
+               result.setText( s.getText() );
+               
+               //ユーザ情報
+               User u = s.getUser();
+               if( u != null ) {
+                       
+                       String userCreated = null;
+                       if (u.getCreatedAt() != null) {
+                               SimpleDateFormat sdf = new SimpleDateFormat(DATE_PATTERN);
+                               userCreated = sdf.format(s.getCreatedAt());
+                       }
+                       result.setCreated( userCreated );
+                       
+               }
+               return result;
+       }
+}
index ed8f152..a65ac7e 100644 (file)
@@ -10,6 +10,7 @@ public class TweetDBObject {
        private long replyUserID;
        private String text;
        private String created;
+       private String description;
        private long userFavorite;
        private long followers;
        private long friend;
@@ -268,4 +269,10 @@ public class TweetDBObject {
        
        public TweetDBObject() {
        }
+       public void setDescription(String description) {
+               this.description = description;
+       }
+       public String getDescription() {
+               return description;
+       }
 }
index 3d5646c..72179f5 100644 (file)
@@ -4,6 +4,11 @@ import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.SQLException;
 import java.sql.Statement;
+import java.util.List;
+
+import org.apache.commons.dbutils.QueryRunner;
+import org.apache.commons.dbutils.ResultSetHandler;
+import org.apache.commons.dbutils.handlers.BeanListHandler;
 
 import twitter.manage.TweetConfiguration;
 
@@ -107,6 +112,58 @@ public class TwitterLogDao {
                }
        }
        
+       /**
+        * 新規データの挿入
+        * @param o
+        * @throws SQLException 
+        */
+       public void insert( TweetDBObject o ) throws SQLException {
+               Connection con = DriverManager.getConnection(DATABASE_CONNECTION);              
+               QueryRunner qr = new QueryRunner();
+               //データ挿入
+               try {
+                       qr.update(con, insertDataSql, 
+                                       o.getId(),
+                                       o.getFollowing(),
+                                       o.getDate(),
+                                       o.getReplyStatusID(),
+                                       o.getReplyUserID(),
+                                       o.getText(),
+                                       o.getCreated(),
+                                       o.getDescription(),
+                                       o.getUserFavorite(),
+                                       o.getFollowers(),
+                                       o.getFriend(),
+                                       o.getUserId(),
+                                       o.getLang(),
+                                       o.getLocation(),
+                                       o.getName(),
+                                       o.getProfileBackgroundColor(),
+                                       o.getProfileBackgroundImageURL(),
+                                       o.getProfileImageURL(),
+                                       o.getProfileSidebarBorderColor(),
+                                       o.getProfileSidebarFillColor(),
+                                       o.getProfileTextColor(),
+                                       o.getScreenName(),
+                                       o.getStatusesCount(),
+                                       o.getTimeZone(),
+                                       o.getUrl(),
+                                       o.getUtc(),
+                                       o.getContributorsEnable(),
+                                       o.getGeoEnable(),
+                                       o.getProfileBackgroundTiled(),
+                                       o.getIsProtected(),
+                                       o.getVerified(),
+                                       o.getSource(),
+                                       o.getFavorite(),
+                                       o.getRetweet(),
+                                       o.getTruncated() );
+               }catch(SQLException e) {
+                       //挿入ではなく更新にする
+               }
+               con.close();
+       }
+       
        public static void main(String[] args) {
                TwitterLogDao dao = new TwitterLogDao();
                dao.connectDB();
index 748c4be..66157d9 100644 (file)
@@ -88,7 +88,7 @@ public class TwitterLogManager {
         * 
         * @param statuses
         */
-       public void add(List<Status> statuses) throws IOException {
+       /*public void add(List<Status> statuses) throws IOException {
                // ログディレクトリを作成
                File logDir = new File("./" + LOG_DIRECTORY);
                if (!logDir.exists()) {
@@ -129,6 +129,35 @@ public class TwitterLogManager {
                bw.close();
                osw.close();
                fos.close();
+       }*/
+       
+       /**
+        * ログをファイルに保存する
+        * 
+        * @param statuses
+        */
+       public void add(List<Status> statuses) throws IOException {
+               // ログディレクトリを作成
+               File logDir = new File("./" + LOG_DIRECTORY);
+               if (!logDir.exists()) {
+                       // ディレクトリが存在しないので作成する
+                       if (logDir.mkdir() == false) {
+                               throw new IOException(LOG_DIRECTORY + "ディレクトリを作成できませんでした.");
+                       }
+               }
+               //sql関係
+               TwitterLogDao dao = new TwitterLogDao();
+               try {
+                       dao.connectDB();
+                       dao.createTable();
+                       for(Status s : statuses ) {
+                               TweetDBObject o = StatusDBObjectConverter.convertStatusToDBObject(s, true);
+                               dao.insert( o );
+                       }
+                       dao.closeDB();
+               }catch(Exception e) {
+                       e.printStackTrace();
+               }
        }
 
        /**