Изменение формата временной метки в Apache Directory Studio

Я пытался понять это некоторое время, и это сводит меня с ума. У меня есть несколько атрибутов в моем LDAP, которые являются отметками времени/даты. Некоторые из них отображаются в z-времени, например 20170426221554Z, в то время как другие отображаются в более удобочитаемой форме Apr 26, 2017 4:15:54 PM MDT (20170426221554Z). Я просмотрел настройки, меню справки и множество мест в Интернете, и я не могу понять, как изменить формат на что-то более читабельное. Кто-нибудь может помочь?


person user2328273    schedule 27.04.2017    source источник


Ответы (1)


Глядя на код Apache Directory Studio, вы не можете изменить формат времени через пользовательский интерфейс.

Атрибуты, определенные как Generalized Times (синтаксис OID 1.3.6.1.4.1.1466.115.121.1.24), отображаются с использованием форматов времени по умолчанию для вашей локали. Если значение недопустимо, отображается необработанная строка.

Выдержка из org.apache.directory.studio.valueeditors.time.GeneralizedTimeValueEditor:

public String getDisplayValue(IValue value) {
    String displayValue = super.getDisplayValue(value);
    if (!showRawValues()) {
        DateFormat targetFormat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.LONG);
        try {
            GeneralizedTime generalizedTime = new GeneralizedTime(displayValue);
            Date date = generalizedTime.getCalendar().getTime();
            displayValue = targetFormat.format(date) + " (" + displayValue + ")"; //$NON-NLS-1$ //$NON-NLS-2$
        } catch (ParseException pe) {
            // show the raw value in that case
        }
    }
    return displayValue;
}

Если атрибут не является обобщенным временем, он будет отображаться по-другому (т. е. строка каталога, синтаксис OID 1.3.6.1.4.1.1466.115.121.1.15, отображается как строка)

Вы можете проверить синтаксис атрибута в Apache Directory Studio (я использую версию 2.0.0.v20161101-M12), щелкнув атрибут правой кнопкой мыши и выбрав свойства, а затем атрибут. Информация о синтаксисе примерно на полпути вниз. Свойства атрибута

В качестве альтернативы можно выполнить поиск по базе: ou-schema и отфильтровать по вашим атрибутам, например:

(&
    (objectClass=metaAttributeType)
    (|
        (m-name=loginTime)
        (m-name=modifyTimestamp)
    )
)

перечислит атрибуты.

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

person nxb    schedule 06.05.2017
comment
Я не уверен. Например, loginTime и modifyTimestamp имеют значение 20170509174757Z. Это то, что отображается в данных, когда я щелкаю правой кнопкой мыши по атрибуту и ​​выбираю свойства. Однако modifyTimestamp отображается в удобочитаемой форме 9 мая 2017 г., 11:47:57 MDT (20170509174757Z). Оба ничего не показывают для синтаксиса (или чего-либо еще в этом отношении) в разделе атрибутов свойств. - person user2328273; 09.05.2017
comment
В моей настройке ldap нет атрибута loginTime, поэтому я не могу его проверить. Поиск с помощью base: ou=schema и filter: (&(objectClass=metaAttributeType)(|(m-name=loginTime)(m-name=modifyTimestamp))) и должен вывести два атрибута, а затем вы можете сравнить определения. - person nxb; 11.05.2017
comment
Вот скриншоты свойств: imgur.com/a/vtmku Все еще озадачен, почему они отображаются по-разному. - person user2328273; 15.05.2017
comment
Я не знаю, почему вы не можете видеть информацию о синтаксисе. Альтернативный способ найти определения атрибутов — запустить поиск с использованием фильтра, который я указал в ответе выше. Это будет работать, только если в корне вашей базы данных LDAP есть видимая запись ou=schema. Я предполагал, что вы используете ApacheDS для доступа к серверу Apache LDAP, если это другой сервер, это также может быть проблемой. - person nxb; 18.05.2017