use of org.olat.course.db.CourseDBEntry in project openolat by klemens.
the class GetUserCourseDBFunction method call.
/**
* @see org.olat.course.condition.interpreter.AbstractFunction#call(java.lang.Object[])
*/
@Override
public Object call(Object[] inStack) {
/*
* argument check
*/
if (inStack.length > 2) {
return handleException(new ArgumentParseException(ArgumentParseException.NEEDS_FEWER_ARGUMENTS, name, "", "error.fewerargs", "solution.providetwo.attrvalue"));
} else if (inStack.length < 1) {
return handleException(new ArgumentParseException(ArgumentParseException.NEEDS_MORE_ARGUMENTS, name, "", "error.moreargs", "solution.providetwo.attrvalue"));
}
/*
* argument type check
*/
if (!(inStack[0] instanceof String)) {
return handleException(new ArgumentParseException(ArgumentParseException.WRONG_ARGUMENT_FORMAT, name, "", "error.argtype.attributename", "solution.example.name.infunction"));
}
CourseEditorEnv cev = getUserCourseEnv().getCourseEditorEnv();
if (cev != null) {
// return emtyp string to continue with condition evaluation test
return defaultValue();
}
CourseDBManager courseDbManager = CoreSpringFactory.getImpl(CourseDBManager.class);
Identity ident = getUserCourseEnv().getIdentityEnvironment().getIdentity();
String category = null;
String key = null;
if (inStack.length == 1) {
category = null;
key = (String) inStack[1];
} else if (inStack.length == 2) {
category = (String) inStack[0];
key = (String) inStack[1];
}
Long courseId = getUserCourseEnv().getCourseEnvironment().getCourseResourceableId();
Object value;
try {
CourseDBEntry entry = courseDbManager.getValue(courseId, ident, category, key);
if (entry == null) {
return defaultValue();
}
value = entry.getValue();
if (value == null) {
return defaultValue();
}
} catch (Exception e) {
log.error("", e);
return defaultValue();
}
return value.toString();
}
use of org.olat.course.db.CourseDBEntry in project openolat by klemens.
the class CourseDBTest method createEntry_get.
@Test
public void createEntry_get() throws IOException, URISyntaxException {
String category = createRndCategory();
String key = "getit";
String value = "get a value";
CourseDBEntry entry = courseDbManager.setValue(course, auth, category, key, value);
dbInstance.commitAndCloseSession();
Assert.assertNotNull(entry);
RestConnection conn = new RestConnection();
Assert.assertTrue(conn.login(auth.getName(), JunitTestHelper.PWD));
UriBuilder uri = getUriBuilder(course.getResourceableId(), category).path("values").path(key);
HttpGet get = conn.createGet(uri.build(), MediaType.APPLICATION_JSON, true);
HttpResponse response = conn.execute(get);
assertEquals(200, response.getStatusLine().getStatusCode());
KeyValuePair savedEntry = conn.parse(response, KeyValuePair.class);
conn.shutdown();
Assert.assertNotNull(savedEntry);
Assert.assertEquals(key, savedEntry.getKey());
Assert.assertEquals(value, savedEntry.getValue());
}
use of org.olat.course.db.CourseDBEntry in project openolat by klemens.
the class CourseDBTest method createEntry_post.
@Test
public void createEntry_post() throws IOException, URISyntaxException {
RestConnection conn = new RestConnection();
Assert.assertTrue(conn.login(auth.getName(), JunitTestHelper.PWD));
String category = createRndCategory();
String key = "postit";
String value = "create the value by POST";
UriBuilder uri = getUriBuilder(course.getResourceableId(), category).path("values").path(key);
HttpPost put = conn.createPost(uri.build(), MediaType.APPLICATION_JSON);
conn.addEntity(put, new BasicNameValuePair("val", value));
HttpResponse response = conn.execute(put);
assertEquals(200, response.getStatusLine().getStatusCode());
EntityUtils.consume(response.getEntity());
conn.shutdown();
CourseDBEntry entry = courseDbManager.getValue(course, auth, category, key);
Assert.assertNotNull(entry);
Assert.assertEquals(key, entry.getName());
Assert.assertEquals(value, entry.getValue());
Assert.assertEquals(category, entry.getCategory());
}
use of org.olat.course.db.CourseDBEntry in project openolat by klemens.
the class CourseDbWebService method getValue.
/**
* Retrieve a value of an authenticated user.
* @response.representation.200.qname {http://www.example.com}keyValuePair
* @response.representation.200.mediaType application/xml, application/json
* @response.representation.200.doc The value in the course
* @response.representation.200.example {@link org.olat.restapi.support.vo.Examples#SAMPLE_KEYVALUEVO}
* @response.representation.404.doc The entry cannot be found
* @param courseId The course resourceable's id
* @param category The name of the database
* @parma name The name of the key value pair
* @param request The HTTP request
* @return
*/
@GET
@Path("values/{name}")
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Response getValue(@PathParam("courseId") Long courseId, @PathParam("category") String category, @PathParam("name") String name, @Context HttpServletRequest request) {
ICourse course = loadCourse(courseId);
UserRequest ureq = RestSecurityHelper.getUserRequest(request);
CourseDBEntry entry = CoreSpringFactory.getImpl(CourseDBManager.class).getValue(course, ureq.getIdentity(), category, name);
if (entry == null) {
return Response.serverError().status(Status.NOT_FOUND).build();
}
Object value = entry.getValue();
KeyValuePair pair = new KeyValuePair(name, value == null ? "" : value.toString());
return Response.ok(pair).build();
}
use of org.olat.course.db.CourseDBEntry in project openolat by klemens.
the class CourseDbWebService method getValuePlain.
/**
* Retrieve a value of an authenticated user.
* @response.representation.200.qname {http://www.example.com}keyValuePair
* @response.representation.200.mediaType text/plain, text/html
* @response.representation.200.doc A value of the course
* @response.representation.200.example Green
* @response.representation.404.doc The entry cannot be found
* @param courseId The course resourceable's id
* @param category The name of the database
* @param name The name of the key value pair
* @param request The HTTP request
* @return
*/
@GET
@Path("values/{name}")
@Produces({ MediaType.TEXT_PLAIN, MediaType.TEXT_HTML })
public Response getValuePlain(@PathParam("courseId") Long courseId, @PathParam("category") String category, @PathParam("name") String name, @Context HttpServletRequest request) {
ICourse course = loadCourse(courseId);
UserRequest ureq = RestSecurityHelper.getUserRequest(request);
CourseDBEntry entry = CoreSpringFactory.getImpl(CourseDBManager.class).getValue(course, ureq.getIdentity(), category, name);
if (entry == null) {
return Response.serverError().status(Status.NOT_FOUND).build();
}
Object value = entry.getValue();
String val = value == null ? "" : value.toString();
return Response.ok(val).build();
}
Aggregations