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

org.thymeleaf.dialect.springdata.PaginationSummaryAttrProcessor Maven / Gradle / Ivy

package org.thymeleaf.dialect.springdata;

import java.util.Locale;

import org.springframework.data.domain.Page;
import org.thymeleaf.context.ITemplateContext;
import org.thymeleaf.dialect.springdata.util.Messages;
import org.thymeleaf.dialect.springdata.util.PageUtils;
import org.thymeleaf.engine.AttributeName;
import org.thymeleaf.model.IProcessableElementTag;
import org.thymeleaf.processor.element.AbstractAttributeTagProcessor;
import org.thymeleaf.processor.element.IElementTagStructureHandler;
import org.thymeleaf.templatemode.TemplateMode;

final class PaginationSummaryAttrProcessor extends AbstractAttributeTagProcessor {
	private static final String DEFAULT_MESSAGE_KEY = "pagination.summary";
	private static final String NO_VALUES_MESSAGE_KEY = "pagination.summary.empty";
	private static final String ATTR_NAME = "pagination-summary";
	public static final int PRECEDENCE = 900;
	private static final String BUNDLE_NAME = "PaginationSummary";
	
	protected PaginationSummaryAttrProcessor(final String dialectPrefix) {
		super(TemplateMode.HTML, dialectPrefix, null, false, ATTR_NAME, true, PRECEDENCE, true);
	}

	@Override
	protected void doProcess(ITemplateContext context,
			IProcessableElementTag tag, AttributeName attributeName,
			String attributeValue, IElementTagStructureHandler structureHandler) {
		
		// Compose message with parameters:
		// {0} first reg. position
		// {1} latest page reg. position
		// {2} total elements
		// pagination.summary=Showing {0} to {1} of {2} entries
		
		Locale locale = context.getLocale();
		Page page = PageUtils.findPage(context);
		int firstItem = PageUtils.getFirstItemInPage(page);
		int latestItem = PageUtils.getLatestItemInPage(page);
		int totalElements = (int) page.getTotalElements();
		boolean isEmpty = page.getTotalElements() == 0;

		String messageKey = isEmpty ? NO_VALUES_MESSAGE_KEY : DEFAULT_MESSAGE_KEY;
		String message = Messages.getMessage(BUNDLE_NAME, messageKey, locale, firstItem, latestItem, totalElements);

		structureHandler.setBody(message, false);
	}
	
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy