All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.n2oapp.framework.api.register.DynamicMetadataProvider Maven / Gradle / Ivy

There is a newer version: 7.28.1
Show newest version
package net.n2oapp.framework.api.register;

import net.n2oapp.framework.api.metadata.SourceMetadata;
import net.n2oapp.framework.api.metadata.global.dao.query.N2oQuery;
import net.n2oapp.framework.api.metadata.global.dao.object.N2oObject;
import net.n2oapp.framework.api.metadata.global.view.fieldset.N2oFieldSet;
import net.n2oapp.framework.api.metadata.global.view.page.N2oPage;
import net.n2oapp.framework.api.metadata.global.view.widget.N2oWidget;

import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Optional;

/**
 * Поставщик динамических метаданных
 */
public interface DynamicMetadataProvider {

    /**
     * Уникальный код поставщика
     */
    String getCode();

    /**
     * Получение метаданых по контексту
     * @param context контекст
     * @return список полученных метаданных
     */
     List read(String context);

    default  T read(String context, Class metadataClass) {
        List list = read(context);
        Optional metadata = list.stream().filter(t -> t.getClass().isAssignableFrom(metadataClass)).findFirst();
        return metadata.orElse(null);
    }

    default Collection> getMetadataClasses() {
        return Arrays.asList(N2oObject.class, N2oQuery.class, N2oPage.class, N2oWidget.class, N2oFieldSet.class);
    }

    /**
     * Кэшировать ли результаты провайдера
     * @return true кэшировать
     */
    default boolean cache(String params) {
        return false;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy