// ============================================================================
//
// Copyright (C) 2006-2016 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.dataprofiler.common.ui.pagination.pageloder;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.eclipse.nebula.widgets.pagination.collections.PageResult;
import org.talend.cwm.indicator.ColumnFilter;
import org.talend.cwm.indicator.DataValidation;
import org.talend.dataquality.indicators.mapdb.AbstractDB;
/**
* created by talend on Aug 15, 2014 Detailled comment
*
*/
public class MapDBPageListHelper {
public static <T> PageResult<Object[]> createPage(AbstractDB<T> db, Map<Long, T> indexMap, DataValidation dataValidator,
long fromIndex, long toIndex, long totalSize) {
List<Object[]> content = db.subList(fromIndex, toIndex, indexMap, dataValidator);
long elementSize = content.size();
long pageSize = toIndex - fromIndex;
long realTotalSize = totalSize;
if (pageSize > elementSize) {
realTotalSize = toIndex - pageSize + elementSize;
}
return new PageResult<Object[]>(content, realTotalSize);
}
public static <T> PageResult<Object[]> createPage(AbstractDB<T> db, Map<Long, T> indexMap, ColumnFilter filter,
long fromIndex, long toIndex, long totalSize) {
List<Object[]> content;
if (db == null) {
content = new ArrayList<Object[]>();
} else {
content = db.subList(fromIndex, toIndex, indexMap);
if (filter != null) {
content = filter.filterArray(content);
}
}
return new PageResult<Object[]>(content, totalSize);
}
}