// ============================================================================ // // 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 net.sourceforge.sqlexplorer.dataset.mapdb; import java.util.Iterator; import java.util.List; import java.util.Map; import net.sourceforge.sqlexplorer.Messages; import net.sourceforge.sqlexplorer.dataset.DataSetRow; import org.talend.cwm.indicator.DataValidation; /** * created by talend on Aug 28, 2014 Detailled comment * */ public class MapDBkeyListDataSet extends TalendDataSet { protected Map<List<Object>, Long> dataMap = null; protected int currentIndex = 0; protected Iterator<List<Object>> iterator = null; /** * DOC talend MapDBValueListDataSet constructor comment. * * @param columnLabels * @param imputDBMap */ public MapDBkeyListDataSet(String[] columnLabels, Map<List<Object>, Long> imputDBMap, Long size, DataValidation dataItemValidator, int pageSize) { super(columnLabels, new Comparable[0][0], pageSize); dataMap = imputDBMap; iterator = imputDBMap.keySet().iterator(); rowSize = size; dataValidator = dataItemValidator; } /* * (non-Javadoc) * * @see net.sourceforge.sqlexplorer.dataset.DataSet#getRowCount() */ @Override public int getRowCount() { return (int) rowSize; } /* * (non-Javadoc) * * @see net.sourceforge.sqlexplorer.dataset.DataSet#getRow(int) */ @Override public DataSetRow getRow(int index) { DataSetRow returnDataSetRow = null; if (iterator == null) { return super.getRow(index); } else { if (index < 0 || index >= rowSize) { throw new IndexOutOfBoundsException(Messages.getString("DataSet.errorIndexOutOfRange") + index); } if (currentIndex > index) { iterator = dataMap.keySet().iterator(); currentIndex = 0; } findNextOne(index); List<Object> valueList = iterator.next(); currentIndex++; Object[] row = ((Object[]) valueList.get(0)); Comparable[] comparable = new Comparable[valueList.size()]; for (int i = 0; i < valueList.size(); i++) { comparable[i] = (Comparable) row[i]; } returnDataSetRow = new DataSetRow(this, comparable); return returnDataSetRow; } } /** * DOC talend Comment method "findNextOne". * * @param index */ protected void findNextOne(int index) { while (currentIndex < index) { iterator.next(); currentIndex++; } } }