use of com.joliciel.jochre.security.User in project jochre by urieli.
the class UpdateDocumentController method doAfterCompose.
@Override
public void doAfterCompose(Window window) throws Exception {
super.doAfterCompose(window);
Session session = Sessions.getCurrent();
User user = (User) session.getAttribute(LoginController.SESSION_JOCHRE_USER);
if (user == null)
Executions.sendRedirect("login.zul");
DocumentDao documentDao = DocumentDao.getInstance(jochreSession);
List<Author> authors = documentDao.findAuthors();
List<Comboitem> authorItems = cmbAuthors.getItems();
for (Author author : authors) {
Comboitem item = new Comboitem(author.getFullName());
item.setValue(author.getId());
authorItems.add(item);
}
lstAuthors.setItemRenderer(new AuthorListItemRenderer());
winUpdateDocument.addEventListener("onModalOpen", new UpdateDocumentControllerModalListener());
}
use of com.joliciel.jochre.security.User in project jochre by urieli.
the class ImageController method doAfterCompose.
@Override
public void doAfterCompose(Window window) throws Exception {
super.doAfterCompose(window);
Session session = Sessions.getCurrent();
currentUser = (User) session.getAttribute(LoginController.SESSION_JOCHRE_USER);
if (currentUser == null)
Executions.sendRedirect("login.zul");
// comp.setVariable(comp.getId() + "Ctrl", this, true);
hebrewAccentsSpan.setContent("var hebrewAccents=\"" + HEBREW_ACCENTS + "\";");
rowGrid.setRowRenderer(new ImageGridRowRenderer());
HttpServletRequest request = (HttpServletRequest) Executions.getCurrent().getNativeRequest();
imageId = Integer.parseInt(request.getParameter("imageId"));
GraphicsDao graphicsDao = GraphicsDao.getInstance(jochreSession);
currentImage = graphicsDao.loadJochreImage(imageId);
docId = currentImage.getPage().getDocumentId();
currentImageOwner = (currentUser.getRole().equals(UserRole.ADMIN) || currentImage.getOwner().equals(currentUser));
if (!currentImageOwner) {
btnSave.setVisible(false);
btnSave2.setVisible(false);
btnSaveAndExit.setVisible(false);
btnSaveAndExit2.setVisible(false);
cmbStatus.setVisible(false);
lblImageStatus.setVisible(true);
} else {
btnSave.setVisible(true);
btnSave2.setVisible(true);
btnSaveAndExit.setVisible(true);
btnSaveAndExit2.setVisible(true);
cmbStatus.setVisible(true);
lblImageStatus.setVisible(false);
}
if (currentUser.getRole().equals(UserRole.ADMIN)) {
cmbOwner.setVisible(true);
lblOwner.setVisible(false);
SecurityDao securityDao = SecurityDao.getInstance(jochreSession);
List<User> users = securityDao.findUsers();
List<Comboitem> cmbOwnerItems = cmbOwner.getItems();
Comboitem selectedUser = null;
for (User user : users) {
Comboitem item = new Comboitem(user.getFullName());
item.setValue(user);
if (currentImage.getOwner().equals(user))
selectedUser = item;
cmbOwnerItems.add(item);
}
cmbOwner.setSelectedItem(selectedUser);
} else {
cmbOwner.setVisible(false);
lblOwner.setVisible(true);
lblOwner.setValue(currentImage.getOwner().getFullName());
}
String pageTitle = Labels.getLabel("image.title");
winJochreImage.getPage().setTitle(pageTitle);
String windowTitle = Labels.getLabel("image.winJochreImage.title", new Object[] { currentImage.getPage().getDocument().getName(), currentImage.getPage().getIndex() });
winJochreImage.setTitle(windowTitle);
List<Comboitem> cmbStatusItems = cmbStatus.getItems();
Comboitem selectedItem = null;
List<ImageStatus> imageStatuses = new ArrayList<ImageStatus>();
if (currentUser.getRole().equals(UserRole.ADMIN)) {
for (ImageStatus imageStatus : ImageStatus.values()) {
imageStatuses.add(imageStatus);
}
} else if (currentImage.getImageStatus().equals(ImageStatus.AUTO_NEW) || currentImage.getImageStatus().equals(ImageStatus.AUTO_VALIDATED)) {
imageStatuses.add(ImageStatus.AUTO_NEW);
imageStatuses.add(ImageStatus.AUTO_VALIDATED);
} else {
// a bit dangerous - leaving the image as "training" and allowing
// modifications, but oh well!
imageStatuses.add(currentImage.getImageStatus());
}
for (ImageStatus imageStatus : imageStatuses) {
String statusLabel = Labels.getLabel("ImageStatus." + imageStatus.getCode());
Comboitem item = new Comboitem(statusLabel);
item.setValue(imageStatus.getId());
if (currentImage.getImageStatus().equals(imageStatus))
selectedItem = item;
cmbStatusItems.add(item);
}
cmbStatus.setSelectedItem(selectedItem);
lblImageStatus.setValue(Labels.getLabel("ImageStatus." + currentImage.getImageStatus().getCode()));
reloadRowGrid();
}
use of com.joliciel.jochre.security.User in project jochre by urieli.
the class ImageController method save.
void save() {
try {
Comboitem selectedItem = cmbStatus.getSelectedItem();
ImageStatus imageStatus = ImageStatus.forId((Integer) selectedItem.getValue());
currentImage.setImageStatus(imageStatus);
if (currentUser.getRole().equals(UserRole.ADMIN)) {
User owner = (User) cmbOwner.getSelectedItem().getValue();
currentImage.setOwner(owner);
}
GraphicsDao graphicsDao = GraphicsDao.getInstance(jochreSession);
graphicsDao.saveJochreImage(currentImage);
for (Paragraph paragraph : currentImage.getParagraphs()) {
LOG.trace("Paragraph " + paragraph.getIndex() + ", " + paragraph.getRows().size() + " rows");
for (RowOfShapes row : paragraph.getRows()) {
List<List<String>> letterGroups = this.getLetterGroups(row);
LOG.trace("Row " + row.getIndex() + ", " + row.getGroups().size() + " groups, " + letterGroups.size() + " letter groups");
Iterator<List<String>> iLetterGroups = letterGroups.iterator();
for (GroupOfShapes group : row.getGroups()) {
LOG.trace("Group " + group.getIndex() + " text : " + group.getWord());
boolean hasChange = false;
List<String> letters = null;
if (iLetterGroups.hasNext())
letters = iLetterGroups.next();
else
letters = new ArrayList<String>();
LOG.trace("Found " + letters.size() + " letters in text");
Iterator<String> iLetters = letters.iterator();
for (Shape shape : group.getShapes()) {
String currentLetter = shape.getLetter();
if (currentLetter == null)
currentLetter = "";
String newLetter = "";
if (iLetters.hasNext())
newLetter = iLetters.next();
if (newLetter.startsWith("[") && newLetter.endsWith("]")) {
newLetter = newLetter.substring(1, newLetter.length() - 1);
}
LOG.trace("currentLetter: " + currentLetter + ", newLetter: " + newLetter);
if (!currentLetter.equals(newLetter)) {
LOG.trace("newLetter: " + newLetter);
shape.setLetter(newLetter);
shape.save();
hasChange = true;
}
}
if (hasChange)
LOG.trace("Group text after : " + group.getWord());
}
// next group
}
// next row
}
// next paragraph
Messagebox.show(Labels.getLabel("button.saveComplete"));
} catch (Exception e) {
LOG.error("Failure in save", e);
throw new RuntimeException(e);
}
}
use of com.joliciel.jochre.security.User in project jochre by urieli.
the class LoginController method onClick$btnLogin.
@Listen("onClick = #btnLogin")
public void onClick$btnLogin(Event event) {
try {
LOG.debug("onClick$btnLogin");
Session session = Sessions.getCurrent();
SecurityDao securityDao = SecurityDao.getInstance(jochreSession);
User user = null;
try {
user = securityDao.findUser(txtUserName.getValue());
} catch (EntityNotFoundException enfe) {
LOG.debug("Unknown user: " + txtUserName.getValue());
lblError.setVisible(true);
}
if (user != null) {
boolean success = user.login(txtPassword.getValue());
if (!success) {
LOG.debug("Login failed");
lblError.setVisible(true);
Parameters parameters = securityDao.loadParameters();
Date lastFailedLoginAttempt = parameters.getLastFailedLoginAttempt();
Date now = new Date();
long diff = now.getTime() - lastFailedLoginAttempt.getTime();
LOG.debug("time since last failed login: " + diff);
} else {
LOG.debug("Login success");
session.setAttribute(SESSION_JOCHRE_USER, user);
Executions.sendRedirect("docs.zul");
}
}
} catch (Exception e) {
LOG.error("Failure in onClick$btnLogin", e);
throw new RuntimeException(e);
}
}
use of com.joliciel.jochre.security.User in project jochre by urieli.
the class MenuController method doAfterCompose.
@Override
public void doAfterCompose(Panel panel) throws Exception {
super.doAfterCompose(panel);
LOG.debug("MenuController");
Session session = Sessions.getCurrent();
User currentUser = (User) session.getAttribute(LoginController.SESSION_JOCHRE_USER);
if (currentUser != null) {
lblName.setValue(currentUser.getFirstName() + " " + currentUser.getLastName());
toolbar1.setVisible(true);
} else {
lblName.setValue("");
toolbar1.setVisible(false);
}
lblCorpusName.setValue(JochreProperties.getInstance().getJochreSession().getConfig().getConfig("jochre.web").getString("corpus-name"));
}
Aggregations