Skip to content
Snippets Groups Projects
Commit 5bbfe9e6 authored by tudtianus's avatar tudtianus
Browse files

feat: connect Journal to DB

parent ba23e070
No related branches found
No related tags found
No related merge requests found
package unipotsdam.gf.core.database.mysql;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import unipotsdam.gf.config.GFDatabaseConfig;
import java.sql.*;
......@@ -7,6 +9,7 @@ import java.util.Date;
public class MysqlConnect {
private final Logger log = LoggerFactory.getLogger(MysqlConnect.class);
public Connection conn = null;
private static String createConnectionString() {
......@@ -25,7 +28,7 @@ public class MysqlConnect {
} catch (ClassNotFoundException ex) {
System.out.println(ex); //logger?
}
conn = DriverManager.getConnection(createConnectionString());
conn = DriverManager.getConnection(MysqlConnect.createConnectionString());
} catch (SQLException ex) {
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
......@@ -40,17 +43,17 @@ public class MysqlConnect {
if (conn != null) {
conn.close();
}
} catch (final SQLException e) {
} catch (SQLException e) {
throw new Error("could not close mysql");
}
}
private PreparedStatement addParameters(final String statement, final Object[] args) {
private PreparedStatement addParameters(String statement, Object[] args) {
try {
final PreparedStatement ps = conn.prepareStatement(statement);
PreparedStatement ps = conn.prepareStatement(statement);
if (args != null) {
for (int i = 0; i < args.length; i++) {
final Object arg = args[i];
Object arg = args[i];
setParam(ps, arg, i + 1);
}
}
......@@ -62,7 +65,7 @@ public class MysqlConnect {
}
public VereinfachtesResultSet issueSelectStatement(final String statement, final Object... args) {
public VereinfachtesResultSet issueSelectStatement(String statement, Object... args) {
try {
PreparedStatement ps = addParameters(statement, args);
ResultSet queryResult = ps.executeQuery();
......@@ -74,17 +77,18 @@ public class MysqlConnect {
}
public void otherStatements(final String statement) {
public void otherStatements(String statement) {
try {
this.conn.createStatement().execute(statement);
conn.createStatement().execute(statement);
} catch (SQLException ex) {
System.out.println(ex);
}
}
public Integer issueUpdateStatement(final String statement, final Object... args) {
public Integer issueUpdateStatement(String statement, Object... args) {
PreparedStatement ps = addParameters(statement, args);
log.debug("Statement:" + ps.toString());
try {
return ps.executeUpdate();
} catch (SQLException ex) {
......@@ -94,7 +98,7 @@ public class MysqlConnect {
}
public void issueInsertOrDeleteStatement(final String statement, final Object... args) {
public void issueInsertOrDeleteStatement(String statement, Object... args) {
PreparedStatement ps = addParameters(statement, args);
try {
ps.execute();
......@@ -103,7 +107,7 @@ public class MysqlConnect {
}
}
private void setParam(final PreparedStatement ps, final Object arg, final int i) throws SQLException {
private void setParam(PreparedStatement ps, Object arg, int i) throws SQLException {
if (arg instanceof String) {
ps.setString(i, (String) arg);
} else if (arg instanceof Integer) {
......@@ -123,7 +127,7 @@ public class MysqlConnect {
} else if (arg instanceof Character) {
ps.setString(i, arg.toString());
} else if (arg instanceof Date) {
final java.sql.Date d = new java.sql.Date(((Date) arg).getTime());
java.sql.Date d = new java.sql.Date(((Date) arg).getTime());
ps.setDate(i, d);
} else if (arg == null) {
ps.setNull(i, Types.NULL);
......
......@@ -23,8 +23,8 @@ public class JournalDAOImpl implements JournalDAO {
connection.connect();
// build and execute request
String request = "INSERT INTO journals (`id`, `timestamp`, `author`, `project`, `text`, `visibility`,`category`, `open` ) VALUES (?,?,?,?,?,?,?,?);";
connection.issueInsertOrDeleteStatement(request, uuid, journal.getTimestamp(), journal.getStudentIdentifier().getStudentId(),
String request = "INSERT INTO journals (`id`, `author`, `project`, `text`, `visibility`,`category`, `open` ) VALUES (?,?,?,?,?,?,?);";
connection.issueInsertOrDeleteStatement(request, uuid, journal.getStudentIdentifier().getStudentId(),
journal.getStudentIdentifier().getProjectId(), journal.getEntryMD(), journal.getVisibility(), journal.getCategory(), true);
//close connection
......@@ -205,7 +205,7 @@ public class JournalDAOImpl implements JournalDAO {
String category = rs.getString("category");
boolean open = rs.getBoolean("open");
return new Journal(id, new StudentIdentifier(student, project), text, timestamp, JournalUtils.stringToVisibility(visibility), JournalUtils.stringToCategory(category), open);
return new Journal(id, new StudentIdentifier(project, student), text, timestamp, JournalUtils.stringToVisibility(visibility), JournalUtils.stringToCategory(category), open);
}
}
......@@ -15,7 +15,7 @@ public class JournalServiceImpl implements JournalService {
@Override
public Journal getJournal(String id) {
return null;
return journalDAO.getJournal(id);
}
@Override
......@@ -76,7 +76,7 @@ public class JournalServiceImpl implements JournalService {
@Override
public void closeJournal(String journal) {
journalDAO.closeJournal(journal);
}
......
......@@ -94,7 +94,7 @@ public class JournalView {
//TODO token
URI location;
try {
location = new URI("../pages/eportfolio.jsp");
location = new URI("../pages/eportfolio.jsp?token=test");
log.debug("<<< createJournal: redirect to " + location.toString());
return Response.temporaryRedirect(location).build();
......@@ -139,7 +139,7 @@ public class JournalView {
journalService.closeJournal(journal);
//TODO token
try {
URI location = new URI("../pages/eportfolio.jsp?");
URI location = new URI("../pages/eportfolio.jsp?token=test");
log.debug("<<< closeJournal: redirect to " +location.toString());
return Response.temporaryRedirect(location).build();
......
......@@ -17,18 +17,20 @@ $(document).ready(function() {
var journalID = getQueryVariable("journal");
console.log(journalID);
if(journalID){
$.ajax({
url: "../rest/journal/"+journalID
}).then(function(data) {
$('#editor').append(data.entryMD);
//TODO preselet in select tags
new InscrybMDE({
element: document.getElementById("editor"),
spellChecker: false,
forceSync: true,
});
$('#journalid').val(journalID);
console.log(data);
});
......@@ -38,6 +40,8 @@ $(document).ready(function() {
spellChecker: false,
forceSync: true,
});
$('#journalid').val("0");
}
......
//TODO Get student and project form context
$(document).ready(function() {
$('#editDescriptionLink').on('click', function(){
$('#editDescriptionLink').on('click', function () {
/*TODO getJournal*/
location.href="editDescription.jsp?project=0&token="+getUserTokenFromUrl();
location.href = "editDescription.jsp?project=0&token=" + getUserTokenFromUrl();
});
$('#createJournalLink').on('click', function(){
location.href="createJournal.jsp?token="+getUserTokenFromUrl();
$('#createJournalLink').on('click', function () {
location.href = "createJournal.jsp?token=" + getUserTokenFromUrl();
});
$.ajax({
......@@ -36,6 +36,13 @@ $(document).ready(function() {
});
$(document).on("click", ".open-CloseJournalDialog", function () {
var journalID = $(this).data('id');
console.log("on:" + $(this).data('id'));
$('#journalID-input').val(journalID);
});
function timestampToDateString(timestamp) {
var date = new Date(timestamp);
return date.toLocaleString("de-DE");
......@@ -58,28 +65,38 @@ function filterJournals() {
function loadJournals(data) {
for (var journal in data) {
$('.journal').append(
'<div class="journal-container">' +
'<div class="journal-avatar">' +
'getBild' +
'</div>' +
'<div class="journal-date"> ' +
timestampToDateString(data[journal].timestamp) +
'</div>' +
'<div class="journal-name">' +
data[journal].creator +
'</div>' +
'<div class="journal-category">' +
data[journal].category +
'</div>' +
'<div class="journal-edit" align="right">' +
'<a class="btn btn-default btn-sm" href="createJournal.jsp?token='+getUserTokenFromUrl()+'&journal=' + data[journal].id + '"><i class="fa fa-pencil"></i> Bearbeiten</a>' +
'<a class="btn btn-default btn-sm" data-toggle="modal" data-target="#closeJournalModal"><i class="fa fa-check-square" aria-hidden="true"></i>Abschlie&szlig;en</a>' +
'</div>' +
'<div class="journal-text">' +
data[journal].entryHTML +
'</div>' +
'</div><br><br>')
var journalString = '<div class="journal-container">' +
'<div class="journal-avatar">' +
'getBild' +
'</div>' +
'<div class="journal-date"> ' +
timestampToDateString(data[journal].timestamp) +
'</div>' +
'<div class="journal-name">' +
// TODO id to name
data[journal].studentIdentifier.studentId +
'</div>' +
'<div class="journal-category">' +
data[journal].category +
'</div>' +
'<div class="journal-edit" align="right">';
//TODO userToken...
if (data[journal].studentIdentifier.studentId == "0" && data[journal].open) {
journalString = journalString +
'<a class="btn btn-default btn-sm" href="createJournal.jsp?token=' + getUserTokenFromUrl() + '&journal=' + data[journal].id + '"><i class="fa fa-pencil"></i> Bearbeiten</a>' +
'<a class="open-CloseJournalDialog btn btn-default btn-sm" data-toggle="modal" data-id ='
+ data[journal].id +
' data-target ="#closeJournalModal" > <i class="fa fa-check-square" aria-hidden = "true" ></i> Abschlie&szlig;en</a> '
}
journalString = journalString + '</div>' +
'<div class="journal-text">' +
data[journal].entryHTML +
'</div>' +
'</div><br><br>';
$('.journal').append(journalString)
}};
......@@ -88,7 +105,7 @@ function linkLoeschen(name) {
$.ajax({
type: "POST",
url: "../rest/projectdescription/deleteLink",
data: JSON.stringify(name),
data: JSON.stringify(eval(name)),
contentType: "application/json; charset=utf-8",
crossDomain: true,
dataType: "json",
......@@ -100,36 +117,22 @@ function linkLoeschen(name) {
}
function closeJournal(journal) {
console.log("löschen" + journal);
function closeJournal() {
var journalID = $('#journalID-input').val();
console.log("schließe:=" + journalID);
$.ajax({
type: "POST",
url: "../rest/journal/close",
data: JSON.stringify(journal),
data: journalID,
contentType: "application/json; charset=utf-8",
crossDomain: true,
dataType: "json",
success: function (data, status, jqXHR) {
alert(success);
}
});
}
function closeJournal(description) {
console.log("löschen" + description);
$.ajax({
type: "POST",
url: "../rest/projectdescription/close",
data: JSON.stringify(description),
contentType: "application/json; charset=utf-8",
crossDomain: true,
dataType: "json",
success: function (data, status, jqXHR) {
alert(success);
}
});
});
filterJournals();
}
\ No newline at end of file
<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="menu"%>
<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="menu" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tagebucheintrag erstellen</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="../assets/css/styles.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/inscrybmde@1.11.3/dist/inscrybmde.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/inscrybmde@1.11.3/dist/inscrybmde.min.js"></script>
<script src="../assets/js/utility.js"></script>
<link rel="stylesheet" href="../assets/fonts/font-awesome.min.css">
<link rel="stylesheet" href="../assets/css/Community-ChatComments.css">
<link rel="stylesheet" href="../assets/css/Sidebar-Menu-1.css">
<link rel="stylesheet" href="../assets/css/Sidebar-Menu.css">
<link rel="stylesheet" type="text/css" href="../assets/css/create-journal.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tagebucheintrag erstellen</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="../assets/css/styles.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/inscrybmde@1.11.3/dist/inscrybmde.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/inscrybmde@1.11.3/dist/inscrybmde.min.js"></script>
<script src="../assets/js/utility.js"></script>
<link rel="stylesheet" href="../assets/fonts/font-awesome.min.css">
<link rel="stylesheet" href="../assets/css/Community-ChatComments.css">
<link rel="stylesheet" href="../assets/css/Sidebar-Menu-1.css">
<link rel="stylesheet" href="../assets/css/Sidebar-Menu.css">
<link rel="stylesheet" type="text/css" href="../assets/css/create-journal.css">
</head>
<body>
<div id="wrapper">
<menu:menu></menu:menu>
<menu:menu></menu:menu>
<div class="page-content-wrapper">
<div class="container-fluid">
<h1 id="projectId">project1
<a href="#">
<div class="page-content-wrapper">
<div class="container-fluid">
<h1 id="projectId">project1
<a href="#">
<span class="glyphicon glyphicon-envelope"
style="font-size:27px;margin-top:-17px;margin-left:600px;"></span>
</a>
<a href="#">
<span class="glyphicon glyphicon-cog" style="font-size:29px;margin-left:5px;margin-top:-25px;"></span>
</a></h1>
</div>
<div>
<table>
<tr>
<td id="yourContent">
<h1> Tagebucheintrag erstellen </h1>
<form id="journalform" class="form-journal" method="POST" action="../rest/journal/save" >
<input type="hidden" name="student" value="0">
<input type="hidden" name="project" value="0">
<div class="journal-form-container">
<div class = "journal-form-visibility">
Sichtbarkeit:
<select id="visibility" name="visibility" form="journalform">
<option value="ALL"> Alle </option>
<option value="GROUP"> Gruppe </option>
<option value="DOZENT"> Dozent </option>
<option value="NONE"> Nur Ich </option>
</select>
</div>
<div class = "journal-form-category">
Kategorie:
<select name="category" form="journalform">
<option value="TITEL"> Titel </option>
<option value="RECHERCHE"> Recherche </option>
<option value="LITERATURVERZEICHNIS"> Literaturverzeichnis </option>
<option value="FORSCHUNGSFRAGE"> Forschungsfrage </option>
<option value="UNTERSUCHUNGSKONZEPT"> Untersuchungskonzept </option>
<option value="METHODIK"> Methodik </option>
<option value="DURCHFUEHRUNG"> Durchführung </option>
<option value="AUSWERTUNG"> Auswertung </option>
</select>
</div>
<div class ="journal-form-editor">
<textarea id = "editor" name="text" form="journalform" >
style="font-size:27px;margin-top:-17px;margin-left:600px;"></span>
</a>
<a href="#">
<span class="glyphicon glyphicon-cog"
style="font-size:29px;margin-left:5px;margin-top:-25px;"></span>
</a></h1>
</div>
<div>
<table>
<tr>
<td id="yourContent">
<h1> Tagebucheintrag erstellen </h1>
<form id="journalform" class="form-journal" method="POST" action="../rest/journal/save">
<input type="hidden" name="student" value="0">
<input type="hidden" name="project" value="0">
<input type="hidden" id="journalid" name="id">
<div class="journal-form-container">
<div class="journal-form-visibility">
Sichtbarkeit:
<select id="visibility" name="visibility" form="journalform">
<option value="ALL"> Alle</option>
<option value="GROUP"> Gruppe</option>
<option value="DOZENT"> Dozent</option>
<option value="NONE"> Nur Ich</option>
</select>
</div>
<div class="journal-form-category">
Kategorie:
<select name="category" form="journalform">
<option value="TITEL"> Titel</option>
<option value="RECHERCHE"> Recherche</option>
<option value="LITERATURVERZEICHNIS"> Literaturverzeichnis</option>
<option value="FORSCHUNGSFRAGE"> Forschungsfrage</option>
<option value="UNTERSUCHUNGSKONZEPT"> Untersuchungskonzept</option>
<option value="METHODIK"> Methodik</option>
<option value="DURCHFUEHRUNG"> Durchführung</option>
<option value="AUSWERTUNG"> Auswertung</option>
</select>
</div>
<div class="journal-form-editor">
<textarea id="editor" name="text" form="journalform">
</textarea>
</div>
</div>
<div class="journal-form-buttons">
<input class="btn btn-default btn-sm" type="submit">
<a id="backLink" class="btn btn-default btn-sm"> Zur&uuml;ck </a>
</div>
<div class="journal-form-buttons">
<input class="btn btn-default btn-sm" type="submit">
<a id="backLink" class="btn btn-default btn-sm"> Zur&uuml;ck </a>
</div>
</div>
</form>
</div>
</form>
</td>
</tr>
</table>
</div>
</div>
</td>
</tr>
</table>
</div>
</div>
</div>
<script src="../assets/js/jquery.min.js"></script>
<script src="../assets/bootstrap/js/bootstrap.min.js"></script>
<script src="../assets/js/Sidebar-Menu.js"></script>
<script src="../assets/js/createJournal.js"></script>
<script src="../assets/js/createJournal.js"></script>
</body>
</html>
\ No newline at end of file
......@@ -124,11 +124,14 @@
<h4 class="modal-title">Tagebucheintrag schließen</h4>
</div>
<div class="modal-body">
<input type="hidden" name="journalID" id="journalID-input" value=""/>
Tagebucheintrag schließen? Dieser Eintrag kann nach Bestätigung nicht mehr bearbeitet werden.
</div>
<div class="modal-footer">
<div class="btn-group">
<button type="button" class="btn btn-primary mr-auto">Ja</button>
<button type="button" class="btn btn-primary mr-auto" data-dismiss="modal" onclick="closeJournal()">
Ja
</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">Nein</button>
</div>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment