You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.4 KiB
Java
75 lines
2.4 KiB
Java
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: <a
|
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
|
*
|
|
*/
|
|
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<String> firstLine = getFirstLine(csvReader, false);
|
|
ArrayList<String> columns = new ArrayList<String>(firstLine);
|
|
|
|
String publicLink=StorageUtil.getPublicLink(aslSession.getUsername(), item.getId());
|
|
|
|
TableItemSimple tableItemSimple=new TableItemSimple(publicLink,item.getName(), item.getType().name());
|
|
ArrayList<ColumnItem> columnItemList=new ArrayList<ColumnItem>();
|
|
for(int i=0; i<columns.size(); i++){
|
|
ColumnItem columnItem=new ColumnItem(i, columns.get(i));
|
|
columnItemList.add(columnItem);
|
|
}
|
|
tableItemSimple.setColumns(columnItemList);
|
|
return tableItemSimple;
|
|
|
|
}
|
|
|
|
public List<String> getFirstLine(CSVReader csvReader, boolean includeComment)
|
|
throws ServiceException {
|
|
try {
|
|
logger.trace("getFirstLine includeComment: " + includeComment);
|
|
|
|
List<String> header = csvReader.readLine(includeComment);
|
|
return header == null ? Collections.<String> emptyList() : header;
|
|
|
|
} catch (Throwable e) {
|
|
logger.error("Error reading csv file: " + e.getLocalizedMessage());
|
|
e.printStackTrace();
|
|
throw new ServiceException(e.getLocalizedMessage());
|
|
}
|
|
}
|
|
|
|
}
|