Skip to content
Snippets Groups Projects
Commit 07b21f45 authored by Robert Butora's avatar Robert Butora
Browse files

appends service descriptor to VOTable (replaces file_/cutout_/merge_url...

appends service descriptor to VOTable (replaces file_/cutout_/merge_url columns) also removes subsurveyId (from request used only in legacy)
parent eb6bce48
No related branches found
No related tags found
No related merge requests found
...@@ -64,6 +64,12 @@ class Subsurvey ...@@ -64,6 +64,12 @@ class Subsurvey
try try
{ {
// FIXME parser not robust:
// * eats space-character also within the field: , hu ha , --> "huha" not "hu ha"
// * double quote used inside string not escaped: ,"blabla 25\" res",
// * last record (line) is missing if that line is not closed with EOL
// * UTF-8 or US-ASACII ?
// * else ? how to validate/verify correctness
CSVReaderHeaderAware csvReader = new CSVReaderHeaderAware(new FileReader(csvFilename)); CSVReaderHeaderAware csvReader = new CSVReaderHeaderAware(new FileReader(csvFilename));
......
...@@ -59,7 +59,7 @@ class Dataset ...@@ -59,7 +59,7 @@ class Dataset
} }
public Dataset(List<Dataset> datasetList, SubsurveyId subsurveyId, String mergeUrlRoot, String mergeQueryString) public Dataset(List<Dataset> datasetList, /*SubsurveyId subsurveyId,*/ String mergeUrlRoot, String mergeQueryString)
{ {
this.subsurvey_id = datasetList.get(0).subsurvey_id; // mergeabiity condition is more then 1 element in list this.subsurvey_id = datasetList.get(0).subsurvey_id; // mergeabiity condition is more then 1 element in list
this.overlapCode = 5; // 5: exact match --> legacy used 0 here FIXME 5 will not be correct on edges of Subsurvey coverage this.overlapCode = 5; // 5: exact match --> legacy used 0 here FIXME 5 will not be correct on edges of Subsurvey coverage
......
...@@ -13,7 +13,7 @@ class SearchOutputData ...@@ -13,7 +13,7 @@ class SearchOutputData
public static SearchOutputData marshall(Dataset[] datasetArr, public static SearchOutputData marshall(Dataset[] datasetArr,
SubsurveyId subsurveyId, Subsurvey[] dbSubsurveys, /*SubsurveyId subsurveyId,*/ Subsurvey[] dbSubsurveys,
String mergeUrlRoot, String mergeQueryString) String mergeUrlRoot, String mergeQueryString)
{ {
SearchOutputData sod = new SearchOutputData(); SearchOutputData sod = new SearchOutputData();
...@@ -22,13 +22,13 @@ class SearchOutputData ...@@ -22,13 +22,13 @@ class SearchOutputData
sod.versionString = "Search (pgSphere) version " + Version.asString; sod.versionString = "Search (pgSphere) version " + Version.asString;
sod.datacubeCount = datasetArr.length; sod.datacubeCount = datasetArr.length;
sod.subsurveyArr = groupBySubsurveys(datasetArr, subsurveyId, dbSubsurveys, mergeUrlRoot, mergeQueryString); sod.subsurveyArr = groupBySubsurveys(datasetArr, /*subsurveyId,*/ dbSubsurveys, mergeUrlRoot, mergeQueryString);
return sod; return sod;
} }
// assumes datasetArr is already ordered by subsurveys // assumes datasetArr is already ordered by subsurveys
private static Subsurvey[] groupBySubsurveys(Dataset[] datasetArr, private static Subsurvey[] groupBySubsurveys(Dataset[] datasetArr,
SubsurveyId subsurveyId, Subsurvey[] dbSubsurveys, /*SubsurveyId subsurveyId,*/ Subsurvey[] dbSubsurveys,
String mergeUrlRoot, String mergeQueryString) String mergeUrlRoot, String mergeQueryString)
{ {
List<Subsurvey> subsurveyList = new ArrayList<Subsurvey>(); List<Subsurvey> subsurveyList = new ArrayList<Subsurvey>();
...@@ -45,7 +45,7 @@ class SearchOutputData ...@@ -45,7 +45,7 @@ class SearchOutputData
{ {
if( false )//Dataset.areDatasetsMergeable(datasetList) ) if( false )//Dataset.areDatasetsMergeable(datasetList) )
{ {
Dataset mergedDataset = new Dataset(datasetList, subsurveyId, mergeUrlRoot, mergeQueryString); Dataset mergedDataset = new Dataset(datasetList, /*subsurveyId,*/ mergeUrlRoot, mergeQueryString);
datasetList.add(mergedDataset); datasetList.add(mergedDataset);
} }
...@@ -64,7 +64,7 @@ class SearchOutputData ...@@ -64,7 +64,7 @@ class SearchOutputData
if( false )//Dataset.areDatasetsMergeable(datasetList) ) if( false )//Dataset.areDatasetsMergeable(datasetList) )
{ {
Dataset mergedDataset = new Dataset(datasetList, subsurveyId, mergeUrlRoot, mergeQueryString); Dataset mergedDataset = new Dataset(datasetList, /*subsurveyId,*/ mergeUrlRoot, mergeQueryString);
datasetList.add(mergedDataset); datasetList.add(mergedDataset);
} }
......
...@@ -23,6 +23,7 @@ final class XmlSerializer ...@@ -23,6 +23,7 @@ final class XmlSerializer
public static void serializeToVoTable( public static void serializeToVoTable(
PrintWriter writer, String charEncoding, PrintWriter writer, String charEncoding,
SearchOutputData searchOutputData, SearchOutputData searchOutputData,
String cutoutUrl, String mergeUrl,
boolean showDuration, long startTime_msec) throws IOException boolean showDuration, long startTime_msec) throws IOException
{ {
StarTable dstable = makeSearchResultsTable( searchOutputData.subsurveyArr ); StarTable dstable = makeSearchResultsTable( searchOutputData.subsurveyArr );
...@@ -39,12 +40,22 @@ final class XmlSerializer ...@@ -39,12 +40,22 @@ final class XmlSerializer
out.write("<?xml-stylesheet type='text/xsl' href='VOTable2XHTML.xsl'?>"); out.write("<?xml-stylesheet type='text/xsl' href='VOTable2XHTML.xsl'?>");
out.write( "<VOTABLE version='1.1'>" ); out.write( "<VOTABLE version='1.1'>" );
out.write( "<RESOURCE>" ); out.write( "<RESOURCE type=\"results\">" );
out.write( "<DESCRIPTION> " + searchOutputData.versionString + " </DESCRIPTION>" ); out.write( "<DESCRIPTION> " + searchOutputData.versionString + " </DESCRIPTION>" );
VOSerializer.makeSerializer( DataFormat.TABLEDATA, dstable ).writeInlineTableElement( out ); VOSerializer.makeSerializer( DataFormat.TABLEDATA, dstable ).writeInlineTableElement( out );
out.write( "</RESOURCE>" ); out.write( "</RESOURCE>" );
out.write( "<RESOURCE type=\"meta\" utype=\"adhoc:service\" name=\"CutoutService\" >" );
out.write( "<DESCRIPTION> VLKB cutout service </DESCRIPTION>");
out.write( "<PARAM name=\"standardID\" datatype=\"char\" arraysize=\"*\" value=\"ivo://ivoa.net/std/SODA#sync-1.0\" />");
out.write( "<PARAM name=\"accessURL\" datatype=\"char\" arraysize=\"*\" value=\"" + cutoutUrl + "\" />");
out.write( "<GROUP name=\"inputParams\">");
out.write( "<PARAM name=\"ID\" datatype=\"char\" arraysize=\"*\" value=\"\" ref=\"primaryID\" />"); // FIXME results table obs_publisher_did FIELD must have attrib: ID="primaryID"
out.write( "</GROUP>");
out.write( "</RESOURCE>" );
out.write( "</VOTABLE>" ); out.write( "</VOTABLE>" );
out.flush(); out.flush();
} }
......
...@@ -103,7 +103,7 @@ public class FormatResponseFilter implements Filter ...@@ -103,7 +103,7 @@ public class FormatResponseFilter implements Filter
// VLKB: reconstruct cutout/merge queryStrings and overlap code // VLKB: reconstruct cutout/merge queryStrings and overlap code
Map<String, String[]> params = request.getParameterMap(); Map<String, String[]> params = request.getParameterMap();
SubsurveyId subsurveyId = new SubsurveyId(params); SubsurveyId subsurveyId = new SubsurveyId(params); // for legacy-only Input
Pos pos = Pos.parsePos(params, DEFAULT_SKY_SYSTEM); Pos pos = Pos.parsePos(params, DEFAULT_SKY_SYSTEM);
Band band = Band.parseBand(params, DEFAULT_SPEC_SYSTEM); Band band = Band.parseBand(params, DEFAULT_SPEC_SYSTEM);
String queryStringBase = toQueryString(pos, band); String queryStringBase = toQueryString(pos, band);
...@@ -117,7 +117,7 @@ public class FormatResponseFilter implements Filter ...@@ -117,7 +117,7 @@ public class FormatResponseFilter implements Filter
queryStringBase); queryStringBase);
SearchOutputData searchOutputData = SearchOutputData.marshall(datasetArr, SearchOutputData searchOutputData = SearchOutputData.marshall(datasetArr,
subsurveyId, /*subsurveyId,*/
dbSubsurveyArr, dbSubsurveyArr,
settings.serviceUrls.mergeUrl(), settings.serviceUrls.mergeUrl(),
queryStringBase); queryStringBase);
...@@ -159,7 +159,9 @@ public class FormatResponseFilter implements Filter ...@@ -159,7 +159,9 @@ public class FormatResponseFilter implements Filter
searchOutputData,showDuration,startTime_msec); searchOutputData,showDuration,startTime_msec);
else else
XmlSerializer.serializeToVoTable(responseWriter, RESPONSE_ENCODING, XmlSerializer.serializeToVoTable(responseWriter, RESPONSE_ENCODING,
searchOutputData,showDuration,startTime_msec); searchOutputData,
settings.serviceUrls.cutoutUrl(),settings.serviceUrls.mergeUrl(),
showDuration,startTime_msec);
} }
else else
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment