Advertisement
Guest User

Untitled

a guest
Dec 16th, 2016
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.03 KB | None | 0 0
  1. public class DataServer extends UnicastRemoteObject implements RMIServer {
  2.  
  3. public static int rmiRegistry;
  4. public static PreparedStatement mysql;
  5. public static ResultSet resultSet;
  6. public static Connection conn = null;
  7.  
  8. public DataServer() throws RemoteException {
  9. super();
  10. }
  11.  
  12. public static void load_config() {
  13. String file = "DataServerConfig.txt";
  14. String line;
  15. StringTokenizer tokenizer;
  16. System.out.println("Uploding DataServer configurations...");
  17. try {
  18. FileReader inputFile = new FileReader(file);
  19. BufferedReader buffer = new BufferedReader(inputFile);
  20. for (int i = 0; i < 1; i++) {
  21. line = buffer.readLine();
  22. tokenizer = new StringTokenizer(line, "=");
  23. line = tokenizer.nextToken();
  24. if (line.equals("RMI Registry")) {
  25. rmiRegistry = Integer.parseInt(tokenizer.nextToken());
  26. }
  27. }
  28. } catch (FileNotFoundException e) {
  29. System.out.println("File " + file + " not found");
  30. System.exit(0);
  31. } catch (IOException e) {
  32. }
  33. System.out.println("DataServerConfig.txt successfully uploaded.");
  34. }
  35.  
  36. @Override
  37. public boolean userRegistration(Info info) throws RemoteException {
  38. System.out.println("Register Client");
  39. try {
  40. User user = (User) info.getUser();
  41. mysql = conn.prepareStatement("INSERT INTO users(USERNAME, PASSWORD,ADMIN, LOG) VALUES (?,?,?,?);");
  42. mysql.setString(1, user.getUsername());
  43. mysql.setString(2, user.getPassword());
  44. mysql.setBoolean(3, user.getAdmin());
  45. mysql.setBoolean(4, user.getLog());
  46. mysql.executeUpdate();
  47. conn.commit();
  48. } catch (SQLException e) {
  49. System.out.println("False");
  50. return false;
  51. }
  52. System.out.println("True");
  53. return true;
  54. }
  55.  
  56. @Override
  57. public boolean createAuction(Info info) {
  58. System.out.println("Create auction");
  59.  
  60. try {
  61. Leilao leilao = (Leilao) info.getAuction();
  62. mysql = conn.prepareStatement("INSERT INTO leilao(IDLEILAO, USER,CODIGO,TITULO,DESCRICAO,AMOUNT,FIM,DATA,VENCEDOR) VALUES (null,?,?,?,?,?,false,?,null);");
  63. mysql.setString(1, leilao.getUser().getUsername());
  64. mysql.setInt(2, leilao.getCodigoBarras());
  65. mysql.setString(3, leilao.getTitulo());
  66. mysql.setString(4, leilao.getDetalhes());
  67. mysql.setInt(5, leilao.getPrecoMaximo());
  68.  
  69. //FALTA TERMINAR DATA - ainda não passa data
  70. /*DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  71. Date myDate = formatter.parse(leilao.getData().toString());
  72. java.sql.Date sqlDate = new java.sql.Date(myDate.getTime());*/
  73.  
  74. mysql.setDate(6, null);
  75. mysql.executeUpdate();
  76. conn.commit();
  77.  
  78. } catch (SQLException e) {
  79. return false;
  80. } /*catch (ParseException ex) {
  81. Logger.getLogger(DataServer.class.getName()).log(Level.SEVERE, null, ex);
  82. return false;
  83. }*/
  84. System.out.println("True");
  85. return true;
  86. }
  87.  
  88. @Override
  89. public boolean userLogin(Info info) throws RemoteException {
  90. System.out.println("Login Client ");
  91. System.out.println("Resquest for User: " + info.getUser().getUsername());
  92. try {
  93. User user = (User) info.getUser();
  94. mysql = conn.prepareStatement("SELECT password FROM users WHERE username=?;");
  95. mysql.setString(1, user.getUsername());
  96. resultSet = mysql.executeQuery();
  97. while (resultSet.next()) {
  98. if (resultSet.getString(1).equals(info.getUser().getPassword())) {
  99. System.out.println("True");
  100. conn.commit();
  101. mysql = conn.prepareStatement("UPDATE users SET log=? WHERE username=?;");
  102. mysql.setBoolean(1,true);
  103. mysql.setString(2, user.getUsername());
  104. mysql.executeUpdate();
  105. conn.commit();
  106. return true;
  107. }
  108. }
  109. conn.commit();// Usamos commit, mas não era necessario visto que o select sem "FOR UPDATE" não bloquei a transação
  110. } catch (SQLException e) {
  111. System.out.println("False");
  112. return false;
  113. }
  114.  
  115. return false;
  116. }
  117. @Override
  118. public boolean userLogout(Info info) throws RemoteException{
  119. System.out.println(info.getUser().getUsername()+" loged out.");
  120. try{
  121. mysql = conn.prepareStatement("UPDATE users SET log=? WHERE username=?;");
  122. mysql.setBoolean(1,false);
  123. mysql.setString(2,info.getUser().getUsername());
  124. mysql.executeUpdate();
  125. conn.commit();
  126. System.out.println("True");
  127. return true;
  128. }catch(SQLException e){
  129. System.out.println("False");
  130. }
  131. return false;
  132. }
  133. @Override
  134. public boolean editCode(Info info) throws RemoteException{
  135. System.out.println("Edit auction code");
  136. System.out.println("Resquest code change for ID_Auction: " + info.getID());
  137. try{
  138. mysql = conn.prepareStatement("UPDATE leilao SET codigo=? WHERE idleilao=?;");
  139. mysql.setInt(1,info.getCodigoBarras());
  140. mysql.setInt(2,info.getID());
  141. mysql.executeUpdate();
  142. conn.commit();
  143. System.out.println("True");
  144. return true;
  145. }catch(SQLException e){
  146. System.out.println("False");
  147. }
  148. return false;
  149. }
  150. @Override
  151. public boolean editTitle(Info info) throws RemoteException{
  152. System.out.println("Edit auction title");
  153. System.out.println("Resquest code change for ID_Auction: " + info.getID());
  154. try{
  155. mysql = conn.prepareStatement("UPDATE leilao SET titulo=? WHERE idleilao=?;");
  156. mysql.setString(1,info.getTitle());
  157. mysql.setInt(2,info.getID());
  158. mysql.executeUpdate();
  159. conn.commit();
  160. System.out.println("True");
  161. return true;
  162. }catch(SQLException e){
  163. System.out.println("False");
  164. }
  165. return false;
  166. }
  167. @Override
  168. public Leilao getAuctionByID(Info info) throws RemoteException{
  169. User user = new User();
  170. System.out.println("Searching auction");
  171. System.out.println("Request details of ID_Auction: "+info.getCodigoBarras());
  172. try{
  173. mysql = conn.prepareStatement("SELECT user, codigo, titulo, descricao, amount, fim, data, vencedor FROM leilao WHERE idleilao=?;");
  174. mysql.setInt(1,info.getCodigoBarras());
  175. ResultSet rs = mysql.executeQuery();
  176. rs.next();
  177. user.setUsername(rs.getString(1));
  178. User user1 = new User();
  179. if(rs.getString(8)!=null){
  180. user1.setUsername(rs.getString(8));
  181. }else{
  182. user1=null;
  183. }
  184. Leilao leilao = new Leilao(user, rs.getInt(2), rs.getString(3), rs.getString(4),rs.getInt(5),rs.getBoolean(6),null,user1);
  185. mysql = conn.prepareStatement("SELECT username, amount FROM bid WHERE id=?;");
  186. mysql.setInt(1,info.getCodigoBarras());
  187. ResultSet rslt = mysql.executeQuery();
  188. while(rslt.next()){
  189. Bid bid;
  190. bid = new Bid(rslt.getString(1),rslt.getInt(2));
  191. leilao.addBid(bid);
  192. }
  193. mysql = conn.prepareStatement("SELECT username, message FROM comentario WHERE id=?;");
  194. mysql.setInt(1,info.getCodigoBarras());
  195. ResultSet rslt1 = mysql.executeQuery();
  196. while(rslt1.next()){
  197. Comentario coment;
  198. coment = new Comentario(rslt1.getString(1),rslt1.getString(2));
  199. leilao.addComentario(coment);
  200. }
  201. conn.commit();
  202. System.out.println("True");
  203. return leilao;
  204. }catch(SQLException e){
  205. System.out.println("False");
  206. return null;
  207. }
  208. }
  209. @Override
  210. public boolean editDescription(Info info) throws RemoteException{
  211. System.out.println("Edit auction description");
  212. System.out.println("Request description change for ID_Auction" + info.getID());
  213. try{
  214. mysql = conn.prepareStatement("UPDATE leilao SET descricao=? WHERE idleilao=?;");
  215. mysql.setString(1,info.getTitle());
  216. mysql.setInt(2,info.getID());
  217. mysql.executeUpdate();
  218. conn.commit();
  219. System.out.println("True");
  220. return true;
  221. }catch(SQLException e){
  222. System.out.println("False");
  223. }
  224. return false;
  225. }
  226. public boolean editAmount(Info info) throws RemoteException{
  227. System.out.println("Edit auction amount");
  228. System.out.println("Request amount change for ID_Auction" + info.getID());
  229. try{
  230. mysql = conn.prepareStatement("UPDATE leilao SET amount=? WHERE idleilao=?;");
  231. mysql.setInt(1,info.getCodigoBarras());
  232. mysql.setInt(2,info.getID());
  233. mysql.executeUpdate();
  234. conn.commit();
  235. System.out.println("True");
  236. return true;
  237. }catch(SQLException e){
  238. System.out.println("False");
  239. }
  240. return false;
  241. }
  242.  
  243. public static void main(String[] args) throws SQLException {
  244. load_config();
  245. //Leilao leilao = new Leilao(null,123,"bananas","da madeira",69,false,null, null);
  246. //System.out.println(leilao.toString());
  247. conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/sd", "root", "grifo");
  248. try {
  249. conn.setAutoCommit(false);
  250. } catch (SQLException ex) {
  251. conn.rollback();
  252. // não sei se funciona assim
  253. }
  254. try {
  255. Registry createRMIRegistry = LocateRegistry.createRegistry(rmiRegistry);
  256. DataServer dataserver = new DataServer();
  257. createRMIRegistry.rebind("rmi", dataserver);
  258. } catch (RemoteException e) {
  259. //System.out.println("Error executing remote method in DataServer: "+ e);
  260. int ola = 0;
  261. while (ola == 0) {
  262. try {
  263. Registry createRMIRegistry = LocateRegistry.createRegistry(rmiRegistry);
  264. DataServer dataserver = new DataServer();
  265. createRMIRegistry.rebind("rmi", dataserver);
  266. ola = 1;
  267. } catch (RemoteException e1) {
  268.  
  269. }
  270.  
  271. }
  272.  
  273. }
  274. System.out.println("\n\nData Server is ready for business!!!");
  275. }
  276. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement