package org.epics.archiverappliance.mgmt.bpl; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; import org.epics.archiverappliance.common.BPLAction; import org.epics.archiverappliance.config.ConfigService; import org.epics.archiverappliance.config.PVTypeInfo; import org.epics.archiverappliance.utils.ui.JSONEncoder; import org.epics.archiverappliance.utils.ui.MimeTypeConstants; /** * Export the archiving configuration (PVTypeInfo's) for this instance as a JSON file. * Used for export and import of configuration. * @author mshankar * */ public class ExportConfigForThisInstance implements BPLAction { private static Logger logger = Logger.getLogger(ExportConfigForThisInstance.class.getName()); @Override public void execute(HttpServletRequest req, HttpServletResponse resp,ConfigService configService) throws IOException { String identity = configService.getMyApplianceInfo().getIdentity(); logger.info("Exporting config for this instance" + identity); resp.setContentType(MimeTypeConstants.APPLICATION_JSON); try(PrintWriter out = resp.getWriter()) { out.println("["); JSONEncoder<PVTypeInfo> typeInfoEncoder = JSONEncoder.getEncoder(PVTypeInfo.class); boolean first = true; for(String pvName : configService.getPVsForThisAppliance()) { PVTypeInfo typeInfo = configService.getTypeInfoForPV(pvName); if(typeInfo != null) { if(first) { first = false; } else { out.println(","); } typeInfoEncoder.encodeAndPrint(typeInfo, out); } else { logger.error("Not exporting configuration for pv " + pvName + " in appliance " + identity); } } out.println("]"); } catch(Exception ex) { throw new IOException(ex); } } }