Разница между db.isopen и db! = Null - PullRequest
1 голос
/ 13 мая 2019

Какая разница между db.isopen и db! = Null или я могу использовать их в комбинации и в каком рекомендуемом логическом порядке?

, например

Database db = null;
    try {
        Session sess = NotesPlatform.getInstance().getSession();
        db = sess.getDatabase(XPagesDataUtil.getServerName(server), database);
        if (!db.isOpen()) {
            try {
                db.open();
            } catch (NotesException ne) {
                if (StringUtil.equals(DominoUtil.LOCAL_CLIENT, server)) {
                    die[0] = new DominoImportException(ne, "Unable to find Views in the database: " + database);
                } else {
                    db = sess.getDatabase(XPagesDataUtil.getServerName(DominoUtil.LOCAL_CLIENT), database);
                    if (!db.isOpen()) {
                        db.open();
                    }
                }
            }
        }

В основном я хочу войти, если пользователи обращаются к базе данных, к которой у них нет доступа по некоторым причинам:

try {
    Database db = null;
    db = Utils.getSession().getDatabase(sName, dbName);
    if (!db.isOpen()){              
        try{
            db.open();              
        }catch(NotesException e){
            OpenLogUtil.logEvent(null, "User " + Utils.getSession().getEffectiveUserName() + " has unsufficient access for db:" + db.getFileName(), Level.INFO, null);
        }               
    }
} catch (Exception e) {
    OpenLogUtil.logErrorEx(e, JSFUtil.getXSPContext().getUrl().toString(), Level.SEVERE, null);
}
//my business logic here

Похоже, комбинация для проверки, существует ли база данных и имеет ли пользователь достаточный доступ к ней, не работает должным образом?

1 Ответ

2 голосов
/ 13 мая 2019

Согласно документации

db.isOpen

проверяет, что БД открыта и готова к использованию в домене Lotus Notes.

db != null

проверяет, готова ли БД для использования в домене Java.

т.е.. Вы не можете использовать db.isOpen, если db равно null

db = sess.getDatabase

гарантирует, что db не будет null, поскольку getDatabase говорит, что не возвращает ноль в случае сбоя, поэтому проверка на ноль не требуется:

Если база данных не может быть открыта и createonfail имеет значение True или опущен, IsOpen является ложным

, поэтому в документах фактически говорится, что проверка на нулевое значение не требуется, так как db.isOpen будет либо true, либо false, в зависимости от того, к базе данных обращались или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...