use of org.openforis.collect.web.session.SessionState in project collect by openforis.
the class SessionController method initialize.
@RequestMapping(value = "initialize", method = POST)
@ResponseBody
public UserForm initialize(HttpServletRequest request) {
SessionState sessionState = sessionManager.getSessionState();
User user = sessionState.getUser();
sessionState.setLocale(request.getLocale());
return new UserController.UserForm(user);
}
use of org.openforis.collect.web.session.SessionState in project collect by openforis.
the class UnlockController method clearActiveRecord.
@RequestMapping(value = "/clearActiveRecord.htm", method = RequestMethod.POST)
@ResponseBody
public String clearActiveRecord(HttpServletRequest request) {
try {
HttpSession session = request.getSession();
if (session != null) {
SessionState sessionState = (SessionState) session.getAttribute(SessionState.SESSION_ATTRIBUTE_NAME);
if (sessionState != null) {
CollectRecord activeRecord = sessionState.getActiveRecord();
if (activeRecord != null) {
Integer recordId = activeRecord.getId();
if (recordId != null) {
recordManager.releaseLock(recordId);
}
// clear session state
sessionState.setActiveRecord(null);
}
}
}
return "ok";
} catch (Exception e) {
LOG.error(e);
throw new RuntimeException(e);
}
}
use of org.openforis.collect.web.session.SessionState in project collect by openforis.
the class ValidationController method validationReport.
@RequestMapping(value = "/validationReport", method = RequestMethod.GET)
public void validationReport(HttpServletRequest request, HttpServletResponse response, @RequestParam(required = false) String surveyName, @RequestParam(required = false) Integer rootEntityId, @RequestParam(required = false, defaultValue = "en_US") String locale, String[] recordKeys, @RequestParam(required = false) Date modifiedSince) throws IOException {
ServletOutputStream outputStream = response.getOutputStream();
try {
if (surveyName == null || rootEntityId == null || locale == null) {
outputStream.println("Wrong parameters: please specify 'surveyName' (name of the survey), 'rootEntityId' (root entity id) and 'locale' string rappresentation of locale");
return;
}
CollectSurvey survey = surveyManager.get(surveyName);
if (survey == null) {
print(outputStream, "Survey not found");
return;
}
response.setContentType("text/csv");
String outputFileName = String.format("%s_validation_report_%s.csv", surveyName, Dates.formatDateTime(new Date()));
response.setHeader("Content-Disposition", "attachment; fileName=" + outputFileName);
SessionState sessionState = getSessionState(request);
User user = sessionState.getUser();
String sessionId = sessionState.getSessionId();
RecordFilter recordFilter = new RecordFilter(survey, rootEntityId);
recordFilter.setKeyValues(recordKeys);
recordFilter.setModifiedSince(modifiedSince);
if (user.getRole() == UserRole.ENTRY_LIMITED) {
recordFilter.setOwnerId(user.getId());
}
ValidationReportProcess process = new ValidationReportProcess(outputStream, recordManager, messageContextHolder, ReportType.CSV, user, sessionId, recordFilter, true, LocaleUtils.toLocale(locale));
process.init();
process.call();
} catch (Exception e) {
// outputStream.println("ERROR - Validation of records not completed: " + e.getMessage());
LOG.error("ERROR - Validation of records not completed: " + e.getMessage(), e);
throw new RuntimeException(e);
}
}
use of org.openforis.collect.web.session.SessionState in project collect by openforis.
the class SessionListener method sessionDestroyed.
@Override
public void sessionDestroyed(HttpSessionEvent se) {
SessionManager sessionManager = getSessionManager(se);
try {
SessionState sessionState = sessionManager.getSessionState();
User user = null;
if (sessionState != null) {
user = sessionState.getUser();
if (user != null) {
sessionManager.sessionDestroyed();
}
}
if (LOG.isInfoEnabled()) {
String message = "Session destroyed: " + se.getSession().getId();
if (user != null) {
message += " username: " + user.getUsername();
}
LOG.info(message);
}
} catch (InvalidSessionException e) {
// ignore it, session was anonymous
}
}
use of org.openforis.collect.web.session.SessionState in project collect by openforis.
the class RecordController method updateOwner.
@RequestMapping(value = "survey/{surveyId}/data/update/records/{recordId}", method = POST, produces = APPLICATION_JSON_VALUE)
@ResponseBody
public Response updateOwner(@PathVariable("surveyId") int surveyId, @PathVariable("recordId") int recordId, @RequestBody Map<String, String> body) throws RecordLockedException, MultipleEditException {
String ownerIdStr = body.get("ownerId");
Integer ownerId = ownerIdStr == null ? null : Integer.parseInt(ownerIdStr);
CollectSurvey survey = surveyManager.getById(surveyId);
SessionState sessionState = sessionManager.getSessionState();
recordManager.assignOwner(survey, recordId, ownerId, sessionState.getUser(), sessionState.getSessionId());
return new Response();
}
Aggregations