From 315cc526cab19e6504eeeee11fb25809ac6ddc9a Mon Sep 17 00:00:00 2001 From: spark_xp Date: Wed, 22 Jun 2011 17:32:08 +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=81=AE=E4=B8=80=E9=83=A8=E3=82=92SQLite=E3=81=AB?= =?utf8?q?=E6=9B=B8=E3=81=8D=E3=81=A0=E3=81=99=E3=83=97=E3=83=AD=E3=82=B0?= =?utf8?q?=E3=83=A9=E3=83=A0=E3=82=92=E5=AE=9F=E8=A3=85?= 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@148 d8c9ecd3-d47d-4367-8645-de82c00e513f --- src/twitter/log/StatusDBObjectConverter.java | 50 ++++++++++++++++++++++++ src/twitter/log/TweetDBObject.java | 7 ++++ src/twitter/log/TwitterLogDao.java | 57 ++++++++++++++++++++++++++++ src/twitter/log/TwitterLogManager.java | 31 ++++++++++++++- 4 files changed, 144 insertions(+), 1 deletion(-) create mode 100644 src/twitter/log/StatusDBObjectConverter.java diff --git a/src/twitter/log/StatusDBObjectConverter.java b/src/twitter/log/StatusDBObjectConverter.java new file mode 100644 index 0000000..5f868fc --- /dev/null +++ b/src/twitter/log/StatusDBObjectConverter.java @@ -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; + } +} diff --git a/src/twitter/log/TweetDBObject.java b/src/twitter/log/TweetDBObject.java index ed8f152..a65ac7e 100644 --- a/src/twitter/log/TweetDBObject.java +++ b/src/twitter/log/TweetDBObject.java @@ -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; + } } diff --git a/src/twitter/log/TwitterLogDao.java b/src/twitter/log/TwitterLogDao.java index 3d5646c..72179f5 100644 --- a/src/twitter/log/TwitterLogDao.java +++ b/src/twitter/log/TwitterLogDao.java @@ -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(); diff --git a/src/twitter/log/TwitterLogManager.java b/src/twitter/log/TwitterLogManager.java index 748c4be..66157d9 100644 --- a/src/twitter/log/TwitterLogManager.java +++ b/src/twitter/log/TwitterLogManager.java @@ -88,7 +88,7 @@ public class TwitterLogManager { * * @param statuses */ - public void add(List statuses) throws IOException { + /*public void add(List 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 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(); + } } /** -- 2.11.0