package com.github.nyrkovalex.ironadmin.core.defaults; import com.github.nyrkovalex.ironadmin.core.EntityProvider; import com.github.nyrkovalex.ironadmin.core.pages.AbstractPage; import com.github.nyrkovalex.ironadmin.core.pages.AbstractPageBuilder; import com.github.nyrkovalex.ironadmin.core.pages.EntityMeta; import com.github.nyrkovalex.ironadmin.core.pages.Page; import com.github.nyrkovalex.ironadmin.core.pages.PageBuilder; import com.github.nyrkovalex.ironadmin.core.pages.PageMapping; import com.github.nyrkovalex.ironadmin.core.pages.PageRequest; import org.jetbrains.annotations.NotNull; public class DefaultTemplatePage<T> extends AbstractPage<T> implements Page<T> { protected DefaultTemplatePage(@NotNull Class<T> entityClass, @NotNull EntityProvider<T> entityProvider) { super(entityClass, entityProvider); } protected DefaultTemplatePage(@NotNull Class<T> entityClass, @NotNull EntityProvider<T> entityProvider, @NotNull PageMapping pageMapping) { super(entityClass, entityProvider, pageMapping); } protected DefaultTemplatePage(@NotNull Class<T> entityClass, @NotNull EntityProvider<T> entityProvider, @NotNull EntityMeta meta) { super(entityClass, entityProvider, meta); } protected DefaultTemplatePage(@NotNull Class<T> entityClass, @NotNull EntityProvider<T> entityProvider, @NotNull PageMapping url, @NotNull EntityMeta entityMeta) { super(entityClass, entityProvider, url, entityMeta); } public static <E> PageBuilder<E> of(Class<E> entityClass) { return new DefaultPageBuilder<>(entityClass); } @NotNull @Override public DefaultPageContext pageContextForRequest(PageRequest request) { if (request.entityId().isPresent()) { return new EditPageContext<>( provider().one(request.entityId().get()), title(), properties(), idPropertyName(), url()); } return new MainPageContext<>( provider().all(), title(), properties(), idPropertyName(), url()); } public static class DefaultPageBuilder<E> extends AbstractPageBuilder<E> { public DefaultPageBuilder(Class<E> entityClass) { super(entityClass); } @Override public Page<E> build() { return new DefaultTemplatePage<>(entityClass(), entityProvider(), url(), entityMeta()); } } }