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("");
}
}
}