import java.util.logging.Logger; import java.io.PrintWriter; import vo.parameter.*; public final class XmlSerializer { private static final Logger LOGGER = Logger.getLogger("XmlSerializer"); private XmlSerializer() {} // disables instatiation public static void serializeToLegacyCutResults(PrintWriter writer, String charEncoding, DataLink dataLink, boolean showDuration, long startTime_msec) { LOGGER.info("trace"); writer.println(""); writer.println(""); writer.println(" " + dataLink.description + " "); serialize(writer, dataLink.inputs); if(dataLink.cut != null) writer.println(" " + dataLink.cut + " "); if(dataLink.accessUrl != null) { writer.println(" " + dataLink.accessUrl + " "); writer.println(" " + dataLink.contentLength + " "); } if(dataLink.nullVals != null) writer.println(serialize(dataLink.nullVals )); writer.println(" " + dataLink.versionString + " "); writer.println(" " + dataLink.datacubeCount + " "); if(showDuration) writer.println(""+(System.currentTimeMillis() - startTime_msec)+""); writer.println(""); } public static void serializeToLegacyCutResult(PrintWriter writer, String charEncoding, CutResult cutResult, String accessUrl, String id, Pos pos, Band band, Time time, Pol pol, String pixels, boolean countNullValues, boolean showDuration, long startTime_msec) { LOGGER.info("trace serialize for accessUrl: " + ((accessUrl==null)? "null":accessUrl)); writer.println(""); writer.println(""); writer.println(" SODA cutout from: " + (id==null?"null":id) + " "); Coord coord = new Coord(pos, band, time, pol, pixels);// pixels-input Inputs inputs = new Inputs(id, coord, countNullValues); serialize(writer, inputs); // pixels-output if(cutResult.pixels != null) writer.println(" " + cutResult.pixels + " "); if(accessUrl != null) { writer.println(" " + accessUrl + " "); writer.println(" " + cutResult.fileSize + " "); } if(cutResult.nullValueCount != null) writer.println(serialize(cutResult.nullValueCount )); writer.println(" " + Version.asString + " "); writer.println(" 1 "); if(showDuration) writer.println(""+(System.currentTimeMillis() - startTime_msec)+""); writer.println(""); } public static String serialize(NullValueCount nullVals) { StringBuilder xml = new StringBuilder(); xml.append(""); xml.append(" Undefined pixel count "); xml.append("" + nullVals.percent + ""); xml.append(""); xml.append("" + nullVals.nullCount + ""); xml.append("" + nullVals.totalCount + ""); xml.append(""); xml.append(""); return xml.toString(); } public static String serialize(Coord coord) { StringBuilder xml = new StringBuilder(); xml.append(""+coord.skySystem+""); /* reconstruct VLKB-legacy param values from SODA-params */ if(coord.shape != null) { switch(coord.shape) { case "CIRCLE" : xml.append(""+coord.pos.circle.lon+""); xml.append(""+coord.pos.circle.lat+""); xml.append(""+coord.pos.circle.radius+""); break; case "RECT" : xml.append("" + String.valueOf((coord.pos.range.lon1 + coord.pos.range.lon2)/2.0) + ""); xml.append("" + String.valueOf((coord.pos.range.lat1 + coord.pos.range.lat2)/2.0) + ""); xml.append("
" + String.valueOf(coord.pos.range.lon2 - coord.pos.range.lon1) + "
"); xml.append("" + String.valueOf(coord.pos.range.lat2 - coord.pos.range.lat1) + ""); break; default: xml.append(" unknown shape: "+ coord.shape +" "); } } if(coord.band != null) { xml.append("" + String.valueOf(coord.band.getMin()) +""); xml.append("" + String.valueOf(coord.band.getMax()) +""); xml.append("" + coord.specSystem + ""); } return xml.toString(); } public static String serialize(AuthPolicy auth) { StringBuilder xml = new StringBuilder(); xml.append("" + auth.getAccessPolicy() + ""); String ug = auth.getUserGroupsAsString(" "); if(auth.getUserName() != null) xml.append("" + auth.getUserName() + ""); if(ug != null) xml.append("" + ug + ""); return xml.toString(); } public static void serialize(PrintWriter writer, Inputs inputs) { if(inputs != null) { writer.println(""); if(inputs.pubdid != null) writer.println(""+inputs.pubdid+""); if(inputs.coord != null) writer.println(serialize(inputs.coord)); if(inputs.countNullValues) writer.println(" set "); if(inputs.auth != null) writer.println(serialize(inputs.auth)); writer.println(""); } } }