Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.oic.event; import com.oic.net.WebSocketListener; import com.oic.utils.DatabaseConnection; import com.oic.utils.Validators; import java.sql.Connection; import java.sql.Date; import java.sql.PreparedStatement; import java.sql.SQLException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.logging.Level; import java.util.logging.Logger; import org.json.simple.JSONObject; /** * * @author b2020 */ public class SetProfile implements ActionEventImpl { private static final Logger LOG = Logger.getLogger(SetProfile.class.getName()); @Override public void ActionEvent(JSONObject json, WebSocketListener webSocket) { JSONObject responseJSON = new JSONObject(); responseJSON.put("method", "setprofile"); if (!validation(json, webSocket)) { return; } Connection con = DatabaseConnection.getConnection(); PreparedStatement ps; try { con = DatabaseConnection.getConnection(); con.setAutoCommit(false); String sql = "UPDATE user SET studentnumber = ?, name = ?, avatarid = ?, grade = ?, sex = ?, birth = ?, comment = ? " + "WHERE userid = ?"; ps = con.prepareStatement(sql); ps.setString(1, json.get("studentid").toString()); ps.setString(2, json.get("username").toString()); ps.setInt(3, Integer.parseInt(json.get("avatarid").toString())); ps.setInt(4, Integer.parseInt(json.get("grade").toString())); ps.setInt(5, Integer.parseInt(json.get("gender").toString())); ps.setDate(6, toDate(json.get("birthday").toString())); ps.setString(7, json.get("comment").toString()); ps.setLong(8, webSocket.getCharacter().getUserId()); ps.executeUpdate(); ps.close(); sql = "UPDATE setting SET privategrade = ?, privatesex = ?, privatebirth =? WHERE userid = ?"; ps = con.prepareStatement(sql); ps.setInt(1, Integer.parseInt(json.get("vgrade").toString())); ps.setInt(2, Integer.parseInt(json.get("vgender").toString())); ps.setInt(3, Integer.parseInt(json.get("vbirthday").toString())); ps.setLong(4, webSocket.getCharacter().getUserId()); ps.executeUpdate(); ps.close(); con.commit(); //TODO responseJSON.put("status", 0); } catch (Exception e) { try { con.rollback(); } catch (SQLException sq) { LOG.warning("[setProfile]Error Rolling back."); } e.printStackTrace(); responseJSON.put("status", 1); } finally { try { con.setAutoCommit(true); } catch (SQLException ex) { Logger.getLogger(SetProfile.class.getName()).log(Level.WARNING, "Error going back to AutoCommit mode", ex); } } webSocket.sendJson(responseJSON); } private boolean validation(JSONObject json, WebSocketListener webSocket) { Validators v = new Validators(json); v.add("studentid", v.studentId()); v.add("username", v.required()); v.add("avatarid", v.integerType()); v.add("grade", v.integerType()); v.add("gender", v.integerType()); v.add("birthday", v.birthday()); v.add("comment", v.required()); v.add("vgrade", v.required()); v.add("vgender", v.required()); v.add("vbirthday", v.required()); if (v.validate()) { return true; } else { JSONObject responseJSON = v.getError(); responseJSON.put("status", "1"); webSocket.sendJson(responseJSON); return false; } } private Date toDate(String date) throws ParseException { Date data; SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); java.util.Date d = format.parse(date); Calendar cal = Calendar.getInstance(); cal.setTime(d); cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); data = new Date(cal.getTimeInMillis()); return data; } }