package edu.isi.karma.controller.update; import java.io.File; import java.io.PrintWriter; import org.json.JSONException; import org.json.JSONStringer; import org.json.JSONWriter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import edu.isi.karma.util.EncodingDetector; import edu.isi.karma.view.VWorkspace; public class ImportPropertiesUpdate extends AbstractUpdate { private String commandId; private String encoding; private File jsonFile; private int maxNumLines; public enum JsonKeys { commandId, fileName } private static Logger logger = LoggerFactory .getLogger(ImportPropertiesUpdate.class.getSimpleName()); public ImportPropertiesUpdate(File jsonFile, String encoding, int maxNumLines, String id) { this.jsonFile = jsonFile; this.encoding = encoding; this.maxNumLines = maxNumLines; this.commandId = id; } @Override public void generateJson(String prefix, PrintWriter pw, VWorkspace vWorkspace) { logger.info("Got encoding: " + encoding); try { if(encoding == null) { encoding = EncodingDetector.detect(jsonFile); } JSONStringer jsonStr = new JSONStringer(); JSONWriter writer = jsonStr.object() .key(JsonKeys.commandId.name()).value(commandId) .key(GenericJsonKeys.updateType.name()).value("ImportPropertiesUpdate") .key(JsonKeys.fileName.name()).value(jsonFile.getName()) .key("encoding").value(encoding) .key("maxNumLines").value(maxNumLines) ; writer.endObject(); pw.println(jsonStr.toString()); } catch (JSONException e) { logger.error("Error occured while writing to JSON", e); } } }