package org.gcube.portlets.user.dataminermanager.server.util; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.util.ArrayList; import java.util.Collections; import java.util.List; import net.sf.csv4j.CSVReader; import org.apache.log4j.Logger; import org.gcube.application.framework.core.session.ASLSession; import org.gcube.portlets.user.dataminermanager.server.storage.StorageUtil; import org.gcube.portlets.user.dataminermanager.shared.data.ColumnItem; import org.gcube.portlets.user.dataminermanager.shared.data.TableItemSimple; import org.gcube.portlets.user.dataminermanager.shared.exception.ServiceException; import org.gcube.portlets.widgets.wsexplorer.shared.Item; /** * * @author Giancarlo Panichi email: g.panichi@isti.cnr.it * */ public class TableReader { private static Logger logger = Logger.getLogger(TableReader.class); private ASLSession aslSession; private Item item; public TableReader(ASLSession aslSession, Item item) { this.aslSession = aslSession; this.item= item; } public TableItemSimple getTableItemSimple() throws ServiceException { InputStream is = StorageUtil.getInputStreamForItemOnWorkspace( aslSession.getUsername(), item.getId()); Reader fileReader = new InputStreamReader(is); CSVReader csvReader = new CSVReader(fileReader); List firstLine = getFirstLine(csvReader, false); ArrayList columns = new ArrayList(firstLine); String publicLink=StorageUtil.getPublicLink(aslSession.getUsername(), item.getId()); TableItemSimple tableItemSimple=new TableItemSimple(publicLink,item.getName(), item.getType().name()); ArrayList columnItemList=new ArrayList(); for(int i=0; i getFirstLine(CSVReader csvReader, boolean includeComment) throws ServiceException { try { logger.trace("getFirstLine includeComment: " + includeComment); List header = csvReader.readLine(includeComment); return header == null ? Collections. emptyList() : header; } catch (Throwable e) { logger.error("Error reading csv file: " + e.getLocalizedMessage()); e.printStackTrace(); throw new ServiceException(e.getLocalizedMessage()); } } }