package com.farsunset.ichat.dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.farsunset.ichat.dao.BaseDao;
import com.farsunset.ichat.dao.UserDao;
import com.farsunset.ichat.model.User;
public class UserDaoImpl implements UserDao {
private Connection conn = null;
private PreparedStatement ps = null;
private ResultSet rs = null;
@Override
public User login(String account, String password) {
// TODO Auto-generated method stub
conn = BaseDao.getConnection();
String sql = "select * from user where account=? and password=?";
User user = null;
try {
ps = conn.prepareStatement(sql);
ps.setString(1, account);
ps.setString(2, password);
rs = ps.executeQuery();
while (rs.next()) {
user = new User();
user.setId(rs.getInt("id"));
user.setAccount(rs.getString("account"));
user.setUserName(rs.getString("username"));
user.setPassword(rs.getString("password"));
System.out.println(user.toString());
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
BaseDao.closeAll(conn, ps, rs);
}
return user;
}
@Override
public List<User> getFriend(int id) {
// TODO Auto-generated method stub
conn = BaseDao.getConnection();
String sql = "select * from user join friend_map on user.id=friend_map.friend_id where friend_map.user_id=?";
List<User> list = new ArrayList<User>();
try {
ps = conn.prepareStatement(sql);
ps.setInt(1, id);
rs = ps.executeQuery();
while (rs.next()) {
User user = new User();
user.setId(rs.getInt("id"));
user.setAccount(rs.getString("account"));
user.setUserName(rs.getString("username"));
user.setPassword(rs.getString("password"));
list.add(user);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
BaseDao.closeAll(conn, ps, rs);
}
return list;
}
@Override
public List<User> getAllUser() {
// TODO Auto-generated method stub
conn = BaseDao.getConnection();
String sql = "select * from user";
List<User> list = new ArrayList<User>();
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while (rs.next()) {
User user = new User();
user.setId(rs.getInt("id"));
user.setAccount(rs.getString("account"));
user.setUserName(rs.getString("username"));
user.setPassword(rs.getString("password"));
list.add(user);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
BaseDao.closeAll(conn, ps, rs);
}
return list;
}
@Override
public User getUserById(int id) {
// TODO Auto-generated method stub
conn = BaseDao.getConnection();
String sql = "select * from user where id=?";
User user = null;
try {
ps = conn.prepareStatement(sql);
ps.setInt(1, id);
rs = ps.executeQuery();
while (rs.next()) {
user = new User();
user.setId(rs.getInt("id"));
user.setAccount(rs.getString("account"));
user.setUserName(rs.getString("username"));
user.setPassword(rs.getString("password"));
System.out.println(user.toString());
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
BaseDao.closeAll(conn, ps, rs);
}
return user;
}
@Override
public User register(String userName, String password) {
// TODO Auto-generated method stub
conn = BaseDao.getConnection();
String sql = "insert into user (account,username,password) values (?,?,?)";
User user = null;
int result;
try {
String account = String.valueOf(System.currentTimeMillis());
ps = conn.prepareStatement(sql);
ps.setString(1, account);
ps.setString(2, userName);
ps.setString(3, password);
result = ps.executeUpdate();
if (result > 0) {
user = new User();
user.setAccount(account);
user.setUserName(userName);
user.setPassword(password);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
BaseDao.closeAll(conn, ps, rs);
}
return user;
}
@Override
public boolean addFriend(int userId, int friendId) {
// TODO Auto-generated method stub
conn = BaseDao.getConnection();
String sql = "insert into friend_map (user_id,friend_id) values (?,?)";
int result1;
int result2;
boolean falg = false;
try {
conn.setAutoCommit(false);
ps = conn.prepareStatement(sql);
ps.setInt(1, userId);
ps.setInt(2, friendId);
result1 = ps.executeUpdate();
ps.setInt(1, friendId);
ps.setInt(2, userId);
result2 = ps.executeUpdate();
if (result1 > 0 && result2 > 0) {
falg = true;
}
conn.commit();
} catch (SQLException e) {
try {
conn.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.printStackTrace();
} finally {
try {
conn.setAutoCommit(true);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
BaseDao.closeAll(conn, ps, rs);
}
return falg;
}
}