Skip to content

Commit

Permalink
ttools: add TAP upload match column selection parameter
Browse files Browse the repository at this point in the history
  • Loading branch information
mbtaylor authored and mmpcn committed Nov 27, 2014
1 parent 96fb868 commit 849d47a
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 3 deletions.
17 changes: 15 additions & 2 deletions ttools/src/main/uk/ac/starlink/ttools/cone/TapUploadMatcher.java
Expand Up @@ -38,6 +38,7 @@ public class TapUploadMatcher implements UploadMatcher {
private final String decExpr_;
private final String radiusDegExpr_;
private final boolean isSync_;
private final String[] tapCols_;
private final ServiceFindMode serviceMode_;
private final int pollMillis_ = 10000;

Expand All @@ -59,18 +60,21 @@ public class TapUploadMatcher implements UploadMatcher {
* @param radiusDegExpr ADQL expression (maybe constant) for search
* radius in decimal degrees
* @param isSync true for synchronous, false for asynchronous
* @param tapCols column names from the remote table to be included
* in the output table; if null, all are included
* @param serviceMode type of match
*/
public TapUploadMatcher( URL serviceUrl, String tableName,
String raExpr, String decExpr,
String radiusDegExpr, boolean isSync,
ServiceFindMode serviceMode ) {
String[] tapCols, ServiceFindMode serviceMode ) {
serviceUrl_ = serviceUrl;
tableName_ = tableName;
raExpr_ = raExpr;
decExpr_ = decExpr;
radiusDegExpr_ = radiusDegExpr;
isSync_ = isSync;
tapCols_ = tapCols;
serviceMode_ = serviceMode;
if ( ! Arrays.asList( getSupportedServiceModes() )
.contains( serviceMode ) ) {
Expand Down Expand Up @@ -184,7 +188,16 @@ public String getAdql( long maxrec ) {
}
sbuf.append( nl );
if ( ! serviceMode_.isScoreOnly() ) {
sbuf.append( "r.*, " );
if ( tapCols_ == null ) {
sbuf.append( "r.*, " );
}
else {
for ( String colname : tapCols_ ) {
sbuf.append( "r." )
.append( colname )
.append( ", " );
}
}
}
sbuf.append( "u." )
.append( ID_NAME )
Expand Down
Expand Up @@ -40,6 +40,7 @@ public class TapUploadSkyMatch extends SingleMapperTask {
private final StringParameter taptableParam_;
private final StringParameter taplonParam_;
private final StringParameter taplatParam_;
private final StringMultiParameter tapcolsParam_;
private final ChoiceParameter<UserFindMode> findParam_;
private final IntegerParameter chunkParam_;
private final IntegerParameter maxrecParam_;
Expand Down Expand Up @@ -131,6 +132,19 @@ public TapUploadSkyMatch() {
} );
paramList.add( taplatParam_ );

tapcolsParam_ = new StringMultiParameter( "tapcols", ',' );
tapcolsParam_.setUsage( "<colname,...>" );
tapcolsParam_.setPrompt( "List of columns from TAP table" );
tapcolsParam_.setDescription( new String[] {
"<p>Comma-separated list of column names",
"to retrieve from the remote table.",
"If no value is supplied (the default),",
"all columns from the remote table will be returned.",
"</p>",
} );
tapcolsParam_.setNullPermitted( true );
paramList.add( tapcolsParam_ );

srParam_ = new StringParameter( "sr" );
srParam_.setPrompt( "Search radius expression in degrees" );
srParam_.setUsage( "<expr/deg>" );
Expand Down Expand Up @@ -250,6 +264,10 @@ public TableProducer createProducer( Environment env )
String taptable = taptableParam_.stringValue( env );
String taplonString = taplonParam_.stringValue( env );
String taplatString = taplatParam_.stringValue( env );
String[] tapcols = tapcolsParam_.stringsValue( env );
if ( tapcols != null && tapcols.length == 0 ) {
tapcols = null;
}
final String srString = srParam_.stringValue( env );
UserFindMode userMode = findParam_.objectValue( env );
ServiceFindMode serviceMode = userMode.getServiceMode();
Expand All @@ -259,7 +277,7 @@ public TableProducer createProducer( Environment env )
boolean isSync = syncParam_.booleanValue( env );
TapUploadMatcher umatcher =
new TapUploadMatcher( tapurl, taptable, taplonString, taplatString,
srString, isSync, serviceMode );
srString, isSync, tapcols, serviceMode );
final String adql = umatcher.getAdql( maxrec );
final QuerySequenceFactory qsFact =
new JELQuerySequenceFactory( inlonString, inlatString, "0" );
Expand Down

0 comments on commit 849d47a

Please sign in to comment.