--- /dev/null
+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;
+ }
+}
private long replyUserID;
private String text;
private String created;
+ private String description;
private long userFavorite;
private long followers;
private long friend;
public TweetDBObject() {
}
+ public void setDescription(String description) {
+ this.description = description;
+ }
+ public String getDescription() {
+ return description;
+ }
}
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;
}
}
+ /**
+ * 新規データの挿入
+ * @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();
*
* @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()) {
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();
+ }
}
/**