/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package edu.isi.karma.imp.json; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import org.json.XML; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import edu.isi.karma.imp.Import; import edu.isi.karma.rep.Worksheet; import edu.isi.karma.rep.Workspace; import edu.isi.karma.rep.metadata.WorksheetProperties.Property; import edu.isi.karma.rep.metadata.WorksheetProperties.SourceTypes; import edu.isi.karma.util.FileUtil; import edu.isi.karma.util.JSONUtil; import edu.isi.karma.webserver.KarmaException; /** * * @author mielvandersande */ public class XMLImport extends Import { Import jsonImport; File jsonFile; private static Logger logger = LoggerFactory.getLogger(XMLImport.class); public XMLImport(File xmlFile, String worksheetName, Workspace workspace, String encoding, int maxNumLines, JSONArray columnsJson) { super(worksheetName, workspace, encoding); try { String fileContents = FileUtil.readFileContentsToString(xmlFile, encoding); JSONObject jsonObj = XML.toJSONObject(fileContents); Object json = JSONUtil.createJson(jsonObj.toString()); jsonImport = new JsonImport(json,this.getFactory(), this.getWorksheet(), workspace, maxNumLines); } catch (JSONException ex) { logger.error("Error in populating the worksheet with XML", ex); } catch (IOException ex) { logger.error("Error in reading the XML file", ex); } } public Import duplicate() throws IOException { return jsonImport.duplicate(); } @Override public Worksheet generateWorksheet() throws JSONException, IOException, KarmaException, ClassNotFoundException { jsonImport.generateWorksheet(); getWorksheet().getMetadataContainer().getWorksheetProperties().setPropertyValue(Property.sourceType, SourceTypes.XML.toString()); if (jsonFile != null) jsonFile.delete(); return jsonImport.getWorksheet(); } }