package husacct.control.task.resources;
import husacct.ServiceProvider;
import java.io.File;
import java.io.FileOutputStream;
import java.util.HashMap;
import org.apache.log4j.Logger;
import org.jdom2.Document;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;
public class XmlResource implements IResource{
private boolean doCompress = false;
private Logger logger = Logger.getLogger(XmlResource.class);
@Override
public Document load(HashMap<String, Object> dataValues) {
File file = (File) dataValues.get("file");
SAXBuilder sax = new SAXBuilder();
Document doc = new Document();
try {
doc = sax.build(file);
}
catch (Exception e) {
if(ServiceProvider.getInstance().getControlService().isGuiEnabled()) {
ServiceProvider.getInstance().getControlService().showErrorMessage("Unable to open file: " + e.getMessage());
} else {
logger.error("Unable to open file: " + e.getMessage());
}
}
return doc;
}
@Override
public boolean save(Document doc, HashMap<String, Object> dataValues, HashMap<String, Object> config) {
this.doCompress = (boolean)config.get("doCompress");
File file = (File) dataValues.get("file");
try {
FileOutputStream outputStream = new FileOutputStream(file);
XMLOutputter xout;
if(doCompress) {
logger.info(" Compress");
xout = new XMLOutputter(Format.getCompactFormat());
}
else {
xout = new XMLOutputter(Format.getPrettyFormat());
}
xout.output(doc, outputStream);
outputStream.close();
return true;
} catch (Exception e){
if(ServiceProvider.getInstance().getControlService().isGuiEnabled()) {
ServiceProvider.getInstance().getControlService().showErrorMessage("Unable to open file: " + e.getMessage());
} else {
logger.error("Unable to save file: " + e.getMessage());
}
}
return false;
}
@Override
public boolean save(Document doc, HashMap<String, Object> dataValues) {
HashMap<String,Object> config = new HashMap<String, Object>();
config.put("doCompress", true);
save(doc, dataValues, config);
return false;
}
}