Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public void saveEntry(Entry entry)
- {
- if (!tableExists(entry.getFormid()))
- {
- if (entry.getForm() == null)
- throw new RuntimeException("Could not save entry of '" + entry.getUUID() + "' of form '" + entry.getFormid() + "' because of unkown table information. (form == null)");
- else
- createTable(entry.getForm());
- }
- else
- {
- addCollums(entry.getForm());
- }
- try
- {
- connect();
- int valuesStart = 3 + 1; // + 1 for index starting at 1
- int updateStart = valuesStart + entry.getAnswers().size() + 1; // + 1 for validated
- String columns = "(`uuid`, `name`, `validated`";
- String values = "(?,?,?";
- String update = "`validated` = ?";
- if(!entry.getValidator().isEmpty())
- update += ",`date` = CURRENT_TIMESTAMP";
- for(Answer answer : entry.getAnswers())
- {
- columns += ",`" + answer.getId() + "`";
- values += ",?";
- update += ",`" + answer.getId() + "` = ?";
- }
- columns += ")";
- values += ")";
- String query = "INSERT INTO `forms_"+ entry.getFormid() +"` " + columns + " VALUES " + values + " ON DUPLICATE KEY UPDATE " + update + ";";
- PreparedStatement statement = connection.prepareStatement(query);
- statement.setString(1, entry.getUUID().toString());
- statement.setString(2, entry.getName());
- statement.setString(3, entry.getValidator());
- statement.setString(valuesStart + entry.getAnswers().size(), entry.getValidator());
- for(int i = 0; i < entry.getAnswers().size(); i++)
- {
- Answer answer = entry.getAnswers().get(i);
- if(answer.getValue() instanceof Boolean)
- {
- statement.setBoolean(i + valuesStart, (Boolean) answer.getValue());
- statement.setBoolean(i + updateStart, (Boolean) answer.getValue());
- }
- else
- {
- statement.setString(i + valuesStart, (String) answer.getValue());
- statement.setString(i + updateStart, (String) answer.getValue());
- }
- }
- statement.executeUpdate();
- statement.close();
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement