// encode the response
Wps10Factory wpsf = Wps10Factory.eINSTANCE;
Ows11Factory owsf = Ows11Factory.eINSTANCE;
WPSCapabilitiesType caps = wpsf.createWPSCapabilitiesType();
caps.setVersion("1.0.0");
//TODO: make configurable
caps.setLang( "en" );
//ServiceIdentification
ServiceIdentificationType si = owsf.createServiceIdentificationType();
caps.setServiceIdentification( si );
si.getTitle().add( Ows11Util.languageString( wps.getTitle() ) );
si.getAbstract().add( Ows11Util.languageString( wps.getAbstract() ) );
KeywordsType kw = Ows11Util.keywords( wps.getKeywords( ) ); ;
if ( kw != null ) {
si.getKeywords().add( kw );
}
si.setServiceType( Ows11Util.code( "WPS" ) );
si.getServiceTypeVersion().add( "1.0.0" );
si.setFees( wps.getFees() );
if ( wps.getAccessConstraints() != null ) {
si.getAccessConstraints().add( wps.getAccessConstraints() );
}
//ServiceProvider
ServiceProviderType sp = owsf.createServiceProviderType();
caps.setServiceProvider( sp );
//TODO: set provder name from context
GeoServerInfo geoServer = wps.getGeoServer().getGlobal();
if ( geoServer.getContact().getContactOrganization() != null ) {
sp.setProviderName( geoServer.getContact().getContactOrganization() );
}
else {
sp.setProviderName( "GeoServer" );
}
sp.setProviderSite(owsf.createOnlineResourceType());
sp.getProviderSite().setHref( geoServer.getOnlineResource() );
sp.setServiceContact( responsibleParty( geoServer, owsf ) );
//OperationsMetadata
OperationsMetadataType om = owsf.createOperationsMetadataType();
caps.setOperationsMetadata( om );
OperationType gco = owsf.createOperationType();
gco.setName("GetCapabilities");
gco.getDCP().add( Ows11Util.dcp( "wps", gco.getName(), request ) );
om.getOperation().add( gco );
OperationType dpo = owsf.createOperationType();
dpo.setName( "DescribeProcess");
dpo.getDCP().add( Ows11Util.dcp( "wps", dpo.getName(), request ) );
om.getOperation().add( dpo );
OperationType eo = owsf.createOperationType();
eo.setName( "Execute" );
eo.getDCP().add( Ows11Util.dcp( "wps", eo.getName(), request ) );
om.getOperation().add( eo );
ProcessOfferingsType po = wpsf.createProcessOfferingsType();
caps.setProcessOfferings( po );
for(ProcessFactory pf : Processors.getProcessFactories()) {
for (Name name : pf.getNames()) {
ProcessBriefType p = wpsf.createProcessBriefType();
p.setProcessVersion(pf.getVersion(name));
po.getProcess().add( p );
p.setIdentifier(Ows11Util.code(name));
p.setTitle(Ows11Util.languageString( pf.getTitle(name).toString()));
p.setAbstract(Ows11Util.languageString( pf.getDescription(name).toString()));
}
}
LanguagesType1 languages = wpsf.createLanguagesType1();
caps.setLanguages( languages );
DefaultType2 defaultLanguage = wpsf.createDefaultType2();
languages.setDefault(defaultLanguage);
defaultLanguage.setLanguage("en-US");