/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package edu.isi.karma.imp;
import java.io.IOException;
import org.json.JSONException;
import edu.isi.karma.rep.RepFactory;
import edu.isi.karma.rep.Worksheet;
import edu.isi.karma.rep.Workspace;
import edu.isi.karma.webserver.KarmaException;
/**
*
* This abstract class in an interface to all classes with import functionality
*
* @author mielvandersande
*/
public abstract class Import {
private final RepFactory factory;
private Worksheet worksheet;
protected Workspace workspace;
public static int MAX_WORKSHEET_NAME_LEN = 100;
public Import(String worksheetName, Workspace workspace, String encoding) {
this.factory = workspace.getFactory();
if(worksheetName.length() > MAX_WORKSHEET_NAME_LEN)
worksheetName = worksheetName.substring(0, MAX_WORKSHEET_NAME_LEN) + "...";
this.worksheet = factory.createWorksheet(worksheetName, workspace, encoding);
this.workspace = workspace;
this.worksheet.setImportMethod(this);
}
public Import(RepFactory factory, Worksheet worksheet) {
this.factory = factory;
this.worksheet = worksheet;
this.worksheet.setImportMethod(this);
}
public RepFactory getFactory() {
return factory;
}
public Worksheet getWorksheet() {
return worksheet;
}
public void createWorksheet(String worksheetName, Workspace workspace, String encoding) {
this.worksheet = factory.createWorksheet(worksheetName, workspace, encoding);
this.worksheet.setImportMethod(this);
}
/*
* Generate worksheet from data
*/
public abstract Worksheet generateWorksheet() throws JSONException, IOException, KarmaException, ClassNotFoundException;
public abstract Import duplicate() throws IOException;
}