A parameter section would look like this:
<parameter>
<name>algorithm</name>
<label>Algorithm</label>
<description>Algorithm to be used</description>
<dataType>String</dataType>
<defaultValue>split</defaultValue>
<valueSet>split,mono</valueSet>
</parameter>
This would result in a parameter where the user can select between split and mono, and split will be the default selection.
You can then get the value by
context.getParameter(‘algorithm’)
Regarding the elevation handling:
When you retrieve values from the dem you get via the DEMFactory the dem will be downloaded. But not the whole dataset only the tiles which are necessary.
Yes, ‘SRTM 3Sec’ should be usable. You can see what’s possible when you open the GUI for the ‘Raster\DEM Tools\Add Elevation Band’. The name is what is written before the braces.
To get the unknown classes you need to use jpy.get_type().
Most common classes are preloaded in __init__.py of snappy. There you can find examples of usages of this method.
In these two posts are also some examples:
For DEMFactory you would do:
dem_factory = jpy.get_type('org.esa.snap.dem.dataio.DEMFactory')
dem = demFactory.createElevationModel('SRTM 3Sec', 'NEAREST_NEIGHBOUR')
elev = dem.getElevation(GeoPos(lat, lon))