Search in sources :

Example 1 with RecordLockedException

use of org.openforis.collect.persistence.RecordLockedException in project collect by openforis.

the class RecordLockManager method isLockAllowed.

public synchronized boolean isLockAllowed(User user, int recordId, String sessionId, boolean forceUnlock) throws RecordLockedException, MultipleEditException {
    RecordLock uLock = getLockBySessionId(sessionId);
    if (uLock != null) {
        throw new MultipleEditException("User is editing another record: " + uLock.getRecordId());
    }
    RecordLock lock = getLock(recordId);
    if (lock == null || (forceUnlock && isForceUnlockAllowed(user, lock))) {
        return true;
    } else if (lock.getUser().getId().equals(user.getId())) {
        throw new RecordLockedByActiveUserException(user.getUsername());
    } else {
        String lockingUserName = lock.getUser().getUsername();
        throw new RecordLockedException("Record already locked", lockingUserName);
    }
}
Also used : RecordLockedException(org.openforis.collect.persistence.RecordLockedException) RecordLock(org.openforis.collect.model.RecordLock) RecordLockedByActiveUserException(org.openforis.collect.persistence.RecordLockedByActiveUserException) MultipleEditException(org.openforis.collect.persistence.MultipleEditException)

Example 2 with RecordLockedException

use of org.openforis.collect.persistence.RecordLockedException in project collect by openforis.

the class RecordManager method delete.

@Transactional(readOnly = false, propagation = REQUIRED)
public void delete(int recordId) throws RecordPersistenceException {
    if (isLockingEnabled() && lockManager.isLocked(recordId)) {
        RecordLock lock = lockManager.getLock(recordId);
        User lockUser = lock.getUser();
        throw new RecordLockedException(lockUser.getUsername());
    } else {
        recordDao.delete(recordId);
    }
}
Also used : User(org.openforis.collect.model.User) RecordLockedException(org.openforis.collect.persistence.RecordLockedException) RecordLock(org.openforis.collect.model.RecordLock) Transactional(org.springframework.transaction.annotation.Transactional)

Aggregations

RecordLock (org.openforis.collect.model.RecordLock)2 RecordLockedException (org.openforis.collect.persistence.RecordLockedException)2 User (org.openforis.collect.model.User)1 MultipleEditException (org.openforis.collect.persistence.MultipleEditException)1 RecordLockedByActiveUserException (org.openforis.collect.persistence.RecordLockedByActiveUserException)1 Transactional (org.springframework.transaction.annotation.Transactional)1