@Override
  public boolean lockRead(Long connectionId, String objectType, boolean raise) throws Exception {
    // check lock
    synchronized (readLocks) { //aObjectType - [SAPM.SPM]
      String lockStart = objectType + lockSeparate;
      for (int i = 0; i < readLocks.size(); i++) {
        String lockName = readLocks.get(i);
        if (lockName.startsWith(lockStart)) {
          if (raise) {
            throw new Exception("Object " + objectType + " already locked for read by connection " + lockName.substring(lockStart.length(), lockName.length()));
          }
          return false;
        }
      }
      readLocks.add(objectType + lockSeparate + connectionId.toString());
      return true;
    }
  }