115 lines
3.2 KiB
Java
115 lines
3.2 KiB
Java
package org.gcube.portlets.user.statisticalalgorithmsimporter.server.file;
|
|
|
|
import java.io.BufferedReader;
|
|
import java.io.FileInputStream;
|
|
import java.io.FileNotFoundException;
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
import java.io.InputStreamReader;
|
|
import java.io.Reader;
|
|
import java.util.ArrayList;
|
|
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage.FilesStorage;
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.code.CodeData;
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterServiceException;
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.session.ProjectSession;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
/**
|
|
* CodeFileReader
|
|
*
|
|
* Read code and convert it in ArrayList
|
|
*
|
|
* @author giancarlo email: <a
|
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
|
*
|
|
*/
|
|
public class CodeReader {
|
|
private Logger logger = LoggerFactory.getLogger(CodeReader.class);
|
|
private ArrayList<CodeData> code;
|
|
|
|
public CodeReader(CodeFileUploadSession codeFileUploadSession)
|
|
throws StatAlgoImporterServiceException {
|
|
|
|
try {
|
|
if (codeFileUploadSession == null
|
|
|| codeFileUploadSession.getCodeFile() == null) {
|
|
throw new StatAlgoImporterServiceException(
|
|
"CodeFileUploadSession is invalid");
|
|
}
|
|
|
|
code = new ArrayList<CodeData>();
|
|
FileInputStream fio = new FileInputStream(
|
|
codeFileUploadSession.getCodeFile());
|
|
|
|
InputStreamReader isr = new InputStreamReader(fio);
|
|
|
|
BufferedReader br = new BufferedReader((Reader) isr);
|
|
|
|
String s;
|
|
int i = 1;
|
|
while ((s = br.readLine()) != null) {
|
|
CodeData codeData = new CodeData(i, s);
|
|
code.add(codeData);
|
|
i++;
|
|
}
|
|
fio.close();
|
|
logger.trace("CodeList size: " + code.size());
|
|
|
|
} catch (FileNotFoundException e) {
|
|
logger.error("File Not Found: " + e.getLocalizedMessage());
|
|
e.printStackTrace();
|
|
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
|
|
|
|
} catch (IOException e) {
|
|
logger.error("IOException: " + e.getLocalizedMessage());
|
|
e.printStackTrace();
|
|
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
|
|
}
|
|
|
|
}
|
|
|
|
|
|
public CodeReader(ProjectSession projectSession, String user)
|
|
throws StatAlgoImporterServiceException {
|
|
try {
|
|
|
|
if (projectSession == null || projectSession.getMainCode() == null
|
|
|| projectSession.getMainCode().getItemId() == null) {
|
|
throw new StatAlgoImporterServiceException(
|
|
"MainCodeSession is invalid");
|
|
}
|
|
|
|
String itemId = projectSession.getMainCode().getItemId();
|
|
|
|
code = new ArrayList<CodeData>();
|
|
FilesStorage filesStorage = new FilesStorage();
|
|
InputStream is = filesStorage.retrieveItemOnWorkspace(user, itemId);
|
|
|
|
InputStreamReader isr = new InputStreamReader(is);
|
|
|
|
BufferedReader br = new BufferedReader((Reader) isr);
|
|
|
|
String s;
|
|
int i = 1;
|
|
while ((s = br.readLine()) != null) {
|
|
CodeData codeData = new CodeData(i, s);
|
|
code.add(codeData);
|
|
i++;
|
|
}
|
|
is.close();
|
|
logger.trace("Code size: " + code.size());
|
|
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
new StatAlgoImporterServiceException(e.getLocalizedMessage());
|
|
}
|
|
}
|
|
|
|
public ArrayList<CodeData> getCodeList() {
|
|
return code;
|
|
}
|
|
|
|
}
|