/* * Copyright 2013 GiavaCms.org. * * Licensed under the Eclipse Public License version 1.0, available at * http://www.eclipse.org/legal/epl-v10.html */ package org.giavacms.common.model; import java.util.ArrayList; import java.util.List; import javax.naming.NamingException; import org.giavacms.common.repository.Repository; /** * @author fiorenzo pizza * * @param <T> */ public class LocalDataModel<T> extends PagedListDataModel<T> { private Search<T> search; private Repository<T> repository; private List<DataProcessor<T>> processors = new ArrayList<DataProcessor<T>>(); /** * @param pageSize * @param search * @param repository */ public LocalDataModel(int pageSize, Search<T> search, Repository<T> repository) { super(pageSize); this.search = search; this.repository = repository; } /** * @param startRow * @param pageSize */ public DataPage<T> fetchPage(int startRow, int pageSize) { try { return getDataPage(startRow, pageSize); } catch (NamingException e) { e.printStackTrace(); } return null; } /** * @param startRow * @param pageSize * @return * @throws NamingException */ private DataPage<T> getDataPage(int startRow, int pageSize) throws NamingException { List<T> data = repository.getList(search, startRow, pageSize); // --- aggiunta per permettere elaborazioni personalizzate sul dm prima // di mostrarlo nella view ---- for (DataProcessor<T> processor : processors) { processor.process(data, search); } // --- fine --------------------------------------------------------- DataPage<T> dataPage = new DataPage<T>(repository.getListSize(search), startRow, data); return dataPage; } /** * @param processor */ public void addProcessor(DataProcessor<T> processor) { if (processor != null) this.processors.add(processor); } }