docs: public int checkSecurity(String strClassResource)
      {
          int iLevel = Constants.LOGIN_USER;
          try {
              iLevel = Integer.parseInt(this.getProperty(Params.SECURITY_LEVEL)); // This is my current login level
          } catch (NumberFormatException ex) {
          }
          String strSecurityMap = this.getProperty(Params.SECURITY_MAP);
          if (strSecurityMap == null)
          {
              this.setProperty(Params.SECURITY_MAP, Constants.BLANK); // This flag say I'm already signed on
              // Note, even if the username is null, I need to log in.
              String strUser = this.getProperty(Params.USER_ID);
              if (strUser == null)
                  strUser = this.getProperty(Params.USER_NAME);
              if (this.login(null, strUser, this.getProperty(Params.PASSWORD), null) != Constants.NORMAL_RETURN)       // Get the security access information.
                  if (this.login(null, strUser, null, null) != Constants.NORMAL_RETURN)       // Get the security access information.
                      this.login(null, null, null, null);  // Last chance = anonymous login
              strSecurityMap = this.getProperty(Params.SECURITY_MAP);
          }
          
          int iAccessAllowed = this.checkSecurity(strClassResource, strSecurityMap, Constants.WRITE_ACCESS, iLevel);
          
          if ((iAccessAllowed != Constants.NORMAL_RETURN) && (iAccessAllowed != Constants.CREATE_USER_REQUIRED))
          {
              if (("1"/*DBConstants.ANON_USER_ID*/.equals(this.getProperty(Params.USER_ID)))
                      || (this.getProperty(Params.USER_ID) == null))
              {
                  if (this.checkSecurity(strClassResource, strSecurityMap, Constants.WRITE_ACCESS, Constants.LOGIN_USER) == Constants.NORMAL_RETURN)
                      iAccessAllowed = Constants.LOGIN_REQUIRED;
                  else
                      iLevel = Constants.LOGIN_USER;  // See if authentication would get them what they need.
              }
              if (iLevel == Constants.LOGIN_USER)
              {
                  if (this.checkSecurity(strClassResource, strSecurityMap, Constants.WRITE_ACCESS, Constants.LOGIN_AUTHENTICATED) == Constants.NORMAL_RETURN)
                      iAccessAllowed = Constants.AUTHENTICATION_REQUIRED;
              }
              if ((iAccessAllowed == Constants.ACCESS_DENIED) ||
              		((iLevel == Constants.LOGIN_USER) && (iAccessAllowed == Constants.LOGIN_REQUIRED) || (iAccessAllowed == Constants.AUTHENTICATION_REQUIRED)))
              {   // Can they get read access with this security?
                  if (this.checkSecurity(strClassResource, strSecurityMap, Constants.READ_ACCESS, iLevel) == Constants.NORMAL_RETURN)
                      iAccessAllowed = Constants.READ_ACCESS;     // At this level, they are allowed read access
                  else if (iLevel == Constants.LOGIN_AUTHENTICATED)   // If they can't access at authentication level, try login level.
                      iAccessAllowed = this.checkSecurity(strClassResource, strSecurityMap, Constants.WRITE_ACCESS, Constants.LOGIN_USER);
              }
          }
          return iAccessAllowed;
      }