Skip to content
This repository was archived by the owner on Apr 22, 2022. It is now read-only.

Commit d5fd0eb

Browse files
committed
several fixes and improvement of in-place graph creation directive, closes #43
1 parent 2bbe6ab commit d5fd0eb

33 files changed

+790
-461
lines changed

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,8 +176,8 @@
176176
<artifactId>maven-compiler-plugin</artifactId>
177177
<version>2.3.2</version>
178178
<configuration>
179-
<source>1.8</source>
180-
<target>1.8</target>
179+
<source>1.7</source>
180+
<target>1.7</target>
181181
<compilerArguments>
182182
<endorseddirs>${endorsed.dir}</endorseddirs>
183183
</compilerArguments>

src/main/java/eu/geoknow/generator/publish/DataHandler.java

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
import java.io.IOException;
55
import java.io.InputStreamReader;
66
import java.sql.SQLException;
7-
import java.time.LocalDate;
8-
import java.time.LocalDateTime;
7+
import java.text.SimpleDateFormat;
98
import java.util.ArrayList;
9+
import java.util.Date;
10+
import java.util.GregorianCalendar;
1011
import java.util.HashMap;
1112
import java.util.Iterator;
1213
import java.util.UUID;
@@ -39,6 +40,7 @@
3940
import eu.geoknow.generator.users.VirtuosoUserManager;
4041
import eu.geoknow.generator.utils.Utils;
4142

43+
4244
/**
4345
* Class which does the data handling for the REST API.
4446
*
@@ -51,8 +53,14 @@ public class DataHandler {
5153
private static final String jsonResponseFormat = "application/sparql-results+json";
5254
private PublishingConfiguration config;
5355
private String statefulUri;
54-
private LocalDateTime dateTime;
55-
private LocalDate date;
56+
// private LocalDateTime dateTime;
57+
// private LocalDate date;
58+
private Date date;
59+
60+
// 2007-12-03.
61+
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-M-dd");
62+
// 2007-12-03T10:15:30.
63+
SimpleDateFormat dateTimeFormat = new SimpleDateFormat("yy-M-dd'T'HH:mm:ss");
5664
private SecureRdfStoreManagerImpl frameworkRdfStoreManager;
5765

5866
/**
@@ -69,8 +77,9 @@ public DataHandler(PublishingConfiguration config) throws InformationMissingExce
6977
// create current data and date since both are requierd for metadata and
7078
// eventually for the
7179
// stateful graph
72-
this.date = LocalDate.now();
73-
this.dateTime = LocalDateTime.now();
80+
this.date = GregorianCalendar.getInstance().getTime();
81+
// this.date = LocalDate.now();
82+
// this.dateTime = LocalDateTime.now();
7483
try {
7584
frameworkRdfStoreManager = FrameworkConfiguration.getInstance().getSystemRdfStoreManager();
7685
} catch (IOException e) {
@@ -171,13 +180,15 @@ private void createStatefulGraphAndCopyData() throws ClientProtocolException, IO
171180
if (!stateful.endsWith("/")) {
172181
stateful += "/";
173182
}
174-
stateful += this.date.toString();
183+
// stateful += this.date.toString();
184+
stateful += dateFormat.format(this.date);
175185
if (graphExists(stateful)) {
176186
stateful = config.getTargetGraphUri();
177187
if (!stateful.endsWith("/")) {
178188
stateful += "/";
179189
}
180-
stateful += this.dateTime.toString();
190+
// stateful += this.dateTime.toString();
191+
stateful += dateTimeFormat.format(this.date);
181192
}
182193
// create the graph
183194
createGraph(stateful);
@@ -433,7 +444,7 @@ private void addMetadataToTargetGraph() throws ClientProtocolException, IOExcept
433444

434445
query +=
435446
"<" + config.getTargetGraphUri() + "> <" + DCTerms.created.getURI() + "> \""
436-
+ this.dateTime.toString() + "\"^^<" + XSD.dateTime.getURI() + "> .} }";
447+
+ dateTimeFormat.format(this.date) + "\"^^<" + XSD.dateTime.getURI() + "> .} }";
437448
try {
438449
frameworkRdfStoreManager.execute(query, jsonResponseFormat);
439450
} catch (Exception e) {

src/main/java/eu/geoknow/generator/rest/Jobs.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ public Response deleteJob(@CookieParam(value = "user") Cookie userc,
9696
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build();
9797
}
9898
try {
99-
99+
log.debug("delete job" + jobName);
100100
if (jmanager.deleteJob(jobName, user))
101101
return Response.status(Response.Status.NO_CONTENT).build();
102102
else

src/main/java/eu/geoknow/generator/servlets/AuthenticationServlet.java

Lines changed: 22 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import java.net.URLEncoder;
77
import java.util.ArrayList;
88
import java.util.Collection;
9-
import java.util.Locale;
109
import java.util.UUID;
1110

1211
import javax.mail.MessagingException;
@@ -16,9 +15,6 @@
1615
import javax.servlet.http.HttpServlet;
1716
import javax.servlet.http.HttpServletRequest;
1817
import javax.servlet.http.HttpServletResponse;
19-
import javax.ws.rs.core.Response;
20-
21-
import org.apache.log4j.Logger;
2218

2319
import com.fasterxml.jackson.databind.ObjectMapper;
2420

@@ -30,7 +26,6 @@
3026
import eu.geoknow.generator.utils.HttpUtils;
3127
import eu.geoknow.generator.utils.RandomStringGenerator;
3228

33-
3429
/**
3530
* Servlet provides some authentication functions: login, logout, register new user, restore
3631
* password, change password.
@@ -47,9 +42,6 @@ public class AuthenticationServlet extends HttpServlet {
4742
*
4843
*/
4944
private static final long serialVersionUID = 1L;
50-
51-
private static final Logger log = Logger.getLogger(AuthenticationServlet.class);
52-
5345
private FrameworkUserManager frameworkUserManager;
5446

5547
@Override
@@ -76,10 +68,6 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
7668
throws ServletException, IOException {
7769
String mode = request.getParameter("mode");
7870

79-
String language = request.getParameter("lang");
80-
if (language == null)
81-
language = "en";
82-
Locale locale = new Locale(language);
8371

8472
PrintWriter out = response.getWriter();
8573

@@ -90,16 +78,16 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
9078
// check username and password
9179
boolean correctCredentials = false;
9280
try {
93-
94-
correctCredentials = frameworkUserManager.checkPassword(username, password);
81+
if (username != null && !username.isEmpty())
82+
correctCredentials = frameworkUserManager.checkPassword(username, password);
9583
} catch (Exception e) {
9684
e.printStackTrace();
9785
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
9886
return;
9987
}
10088

10189
if (!correctCredentials) {
102-
response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
90+
response.sendError(HttpServletResponse.SC_OK);
10391
return;
10492
}
10593

@@ -122,8 +110,6 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
122110
userProfile = frameworkUserManager.getUserProfile(username);
123111
// send request with session token and user profile
124112

125-
log.debug(userProfile.getRole().getName());
126-
127113
ObjectMapper objectMapper = new ObjectMapper();
128114
String responseStr = objectMapper.writeValueAsString(userProfile);
129115

@@ -142,7 +128,8 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
142128
String username = request.getParameter("username");
143129
// remove user session tokens
144130
try {
145-
frameworkUserManager.removeAllSessionTokens(username);
131+
if (username != null && !username.isEmpty())
132+
frameworkUserManager.removeAllSessionTokens(username);
146133
// remove session token from cookies
147134
Cookie tokenCookie = new Cookie("token", "");
148135
Cookie userCookie = new Cookie("user", "");
@@ -157,32 +144,33 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
157144
} else if ("create".equals(mode)) {
158145

159146
String username = request.getParameter("username");
160-
String email = request.getParameter("email");
147+
String emailTo = request.getParameter("email");
161148
// check if user already exists
162149
boolean userExists = false;
163150
try {
164-
userExists = frameworkUserManager.checkUserExists(username, email);
151+
userExists = frameworkUserManager.checkUserExists(username, emailTo);
165152
} catch (Exception e) {
166153
e.printStackTrace();
167154
}
168155
if (userExists) {
169-
response.setStatus(Response.Status.CONFLICT.ordinal());
170-
out.print("User already exists");
156+
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
157+
response.setHeader("content-type", "application/json");
158+
out.print("{\"code\" : \"1\", \"message\" : \"User already exists\"}");
171159
return;
172160
}
173161
// create user
174162
String password = new RandomStringGenerator().generateBasic(6);
175163

176164
try {
177-
frameworkUserManager.createUser(username, password, email);
165+
frameworkUserManager.createUser(username, password, emailTo);
178166

179167

180168
EmailSender emailSender = FrameworkConfiguration.getInstance().getDefaultEmailSender();
181-
182-
emailSender.send(email, "GeoKnow registration", "Your login: " + username + ", password: "
183-
+ password);
169+
emailSender.send(emailTo, "GeoKnow registration", "Your login: " + username
170+
+ ", password: " + password);
184171
String responseStr =
185-
"{\"message\" : \"Your password will be sent to your e-mail address " + email + " \"}";
172+
"{\"message\" : \"Your password will be sent to your e-mail address " + emailTo
173+
+ " \"}";
186174
response.getWriter().print(responseStr);
187175

188176
} catch (MessagingException e) {
@@ -204,13 +192,13 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
204192
try {
205193
valid = frameworkUserManager.checkToken(username, token);
206194
if (!valid) {
207-
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "invalid token " + token
195+
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "invalid token " + token
208196
+ " for user " + username);
209197
} else {
210198
// check old password
211199
boolean isCorrect = frameworkUserManager.checkPassword(username, oldPassword);
212200
if (!isCorrect) {
213-
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
201+
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
214202
out.print("{\"code\" : \"2\", \"message\" : \"Incorrect old password\"}");
215203
return;
216204
}
@@ -221,12 +209,11 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
221209
// send new password to user
222210
UserProfile userProfile = frameworkUserManager.getUserProfile(username);
223211
if (userProfile == null) {
224-
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "User profile "
225-
+ username + " not found");
212+
response.sendError(HttpServletResponse.SC_NOT_FOUND, "User profile " + username
213+
+ " not found");
226214
return;
227215
}
228216
FrameworkConfiguration frameworkConfiguration = FrameworkConfiguration.getInstance();
229-
230217
EmailSender emailSender = frameworkConfiguration.getDefaultEmailSender();
231218
emailSender.send(userProfile.getEmail(), "GeoKnow change password",
232219
"Your password was changed. Your login: " + username + ", new password: "
@@ -248,7 +235,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
248235
try {
249236
userProfile = frameworkUserManager.getUserProfile(username);
250237
if (userProfile == null) {
251-
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
238+
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
252239
out.print("{\"code\" : \"3\", \"message\" : \"User doesn't exists\"}");
253240
return;
254241
}
@@ -258,9 +245,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
258245

259246
// send new password to user
260247
FrameworkConfiguration frameworkConfiguration = FrameworkConfiguration.getInstance();
261-
262248
EmailSender emailSender = frameworkConfiguration.getDefaultEmailSender();
263-
264249
emailSender.send(userProfile.getEmail(), "GeoKnow registration", "Your login: " + username
265250
+ ", password: " + password);
266251
String responseStr =
@@ -292,7 +277,9 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
292277
accounts.add(p.getAccountURI());
293278
String responseStr = new ObjectMapper().writeValueAsString(accounts);
294279
response.getWriter().print(responseStr);
280+
295281
} else {
282+
296283
// throw new ServletException("Unexpected mode: " + mode);
297284
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Unexpected mode: " + mode);
298285

src/main/java/eu/geoknow/generator/users/FrameworkUserManager.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -336,8 +336,8 @@ public void setPassword(String usernameOrEmail, String password) throws Exceptio
336336
+ "> {?account gkg:passwordSha1Hash \"" + DigestUtils.sha1Hex(password) + "\"} } "
337337
+ " WHERE { " + " {GRAPH <" + frameworkConfig.getAccountsGraph()
338338
+ "> {?account foaf:accountName \"" + usernameOrEmail
339-
+ "\" . OPTIONAL { ?account gkg:passwordSha1Hash ?o . } } } " + " UNION " + " GRAPH <"
340-
+ frameworkConfig.getAccountsGraph() + "> { ?account foaf:mbox <mailto:"
339+
+ "\" . OPTIONAL { ?account gkg:passwordSha1Hash ?o . } } } " + " UNION { "
340+
+ " GRAPH <" + frameworkConfig.getAccountsGraph() + "> { ?account foaf:mbox <mailto:"
341341
+ usernameOrEmail + "> . OPTIONAL { ?account gkg:passwordSha1Hash ?o . } } } " + " }";
342342
// TODO: replace 2 queries with this query when OntoQuad will support
343343
// DELETE {...} INSERT {...} WHERE {...} queries
@@ -351,6 +351,8 @@ public void setPassword(String usernameOrEmail, String password) throws Exceptio
351351
// " UNION "
352352
// + " { ?account foaf:mbox <mailto:" + usernameOrEmail
353353
// + "> . OPTIONAL { ?account gkg:passwordSha1Hash ?o . } } " + " }";
354+
log.debug(deleteQuery);
355+
log.debug(insertQuery);
354356
rdfStoreManager.execute(deleteQuery, jsonResponseFormat);
355357
rdfStoreManager.execute(insertQuery, jsonResponseFormat);
356358

@@ -374,6 +376,7 @@ public boolean checkPassword(String usernameOrEmail, String password) throws Exc
374376
+ "\" . ?account gkg:passwordSha1Hash ?passwordHash . } " + " UNION "
375377
+ " {?account foaf:mbox <mailto:" + usernameOrEmail
376378
+ "> . ?account gkg:passwordSha1Hash ?passwordHash . } " + "}";
379+
log.debug(query);
377380
String result = rdfStoreManager.execute(query, jsonResponseFormat);
378381
ObjectMapper mapper = new ObjectMapper();
379382
JsonNode rootNode = mapper.readTree(result);
@@ -382,6 +385,7 @@ public boolean checkPassword(String usernameOrEmail, String password) throws Exc
382385
return false;
383386
JsonNode bindingNode = bindingsIter.next();
384387
String correctPasswordHash = bindingNode.path("passwordHash").path("value").textValue();
388+
log.debug(DigestUtils.sha1Hex(password) + " vs " + correctPasswordHash);
385389
return DigestUtils.sha1Hex(password).equals(correctPasswordHash);
386390
}
387391

0 commit comments

Comments
 (0)