statistical-algorithms-impo.../src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/file/CodeReader.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;
}
}