@Override public String toString() { return metadata.getIdentifier().toString(); }
@Override public void remove( ResourceMetadata<?> md ) { metadataMap.remove( md.getIdentifier() ); }
private String printDependents( ResourceNode<? extends Resource> node ) { StringBuilder sb = new StringBuilder(); sb.append( " -> { " ); for ( ResourceNode<? extends Resource> n : node.getDependents() ) { sb.append( n.getMetadata().getIdentifier() + printDependents( n ) ); sb.append( " " ); } sb.append( "}" ); return sb.toString(); }
private void scan() { LOG.info( "--------------------------------------------------------------------------------" ); LOG.info( "Scanning resources." ); LOG.info( "--------------------------------------------------------------------------------" ); for ( ResourceManager<? extends Resource> mgr : resourceManagers.values() ) { mgr.find(); Collection<? extends ResourceMetadata<? extends Resource>> mds = mgr.getResourceMetadata(); for ( ResourceMetadata<? extends Resource> md : mds ) { resourceMetadata.put( md.getIdentifier(), md ); if ( states.getState( md.getIdentifier() ) != Deactivated ) { states.setState( md.getIdentifier(), Scanned ); } } } }
/** * @param metadata * a list of prepared metadata objects, never <code>null</code> */ public ResourceGraph( List<ResourceMetadata<? extends Resource>> metadata ) { this(); List<ResourceNode<? extends Resource>> nodes = new ArrayList<ResourceNode<? extends Resource>>(); for ( ResourceMetadata<? extends Resource> md : metadata ) { ResourceNode<? extends Resource> node = new ResourceNode( this, md ); nodes.add( node ); nodeMap.put( md.getIdentifier(), node ); } updateDependencies(); }
/** * @param metadata * may not be <code>null</code> * @return the new node, never <code>null</code> */ public synchronized <T extends Resource> ResourceNode<T> insertNode( ResourceMetadata<T> metadata ) { ResourceNode<T> node = new ResourceNode<T>( this, metadata ); nodeMap.put( metadata.getIdentifier(), node ); updateDependencies(); return node; }
private String printDependencies( ResourceNode<? extends Resource> node ) { if ( !node.areDependenciesAvailable() ) { return "{!} -> "; } StringBuilder sb = new StringBuilder(); sb.append( "{ " ); for ( ResourceNode<? extends Resource> n : node.getDependencies() ) { sb.append( printDependencies( n ) + n.getMetadata().getIdentifier() ); sb.append( " " ); } sb.append( "} -> " ); return sb.toString(); }
/** * A {!} signals that dependencies are unavailable at a specific node. * * @return a string representation of all nodes related to this one */ public String print() { return printDependencies( this ) + metadata.getIdentifier() + printDependents( this ); }
protected void read( List<ResourceLocation<T>> list ) { for ( ResourceLocation<T> loc : list ) { try { ResourceProvider<T> prov = nsToProvider.get( loc.getNamespace() ); if ( prov != null ) { LOG.info( "Scanning resource {} with provider {}.", loc, prov.getClass().getSimpleName() ); ResourceMetadata<T> md = prov.read( workspace, loc ); metadataMap.put( md.getIdentifier(), md ); } else { LOG.warn( "Not scanning resource {}, no provider found for namespace {}.", loc, loc.getNamespace() ); } } catch ( Exception e ) { LOG.error( "Unable to scan resource {}: {}.", loc.getIdentifier(), e.getLocalizedMessage() ); LOG.trace( "Stack trace:", e ); } } }
@Override public ProcessProvider build() { try { XMLStreamReader xmlStream = XMLInputFactory.newInstance().createXMLStreamReader( metadata.getLocation().getAsStream() ); while ( xmlStream.getEventType() != XMLStreamConstants.END_DOCUMENT ) { if ( xmlStream.isStartElement() && "Process".equals( xmlStream.getLocalName() ) ) { return new StyleProcessProvider( xmlStream.getAttributeValue( null, "id" ), metadata ); } else { xmlStream.next(); } } } catch ( Exception e ) { throw new ResourceInitException( "Error parsing style process provider configuration '" + metadata.getIdentifier() + "': " + e.getMessage(), e ); } throw new ResourceInitException( "Could not parse style process configuration." ); }
@Override public <T extends Resource> void add( ResourceLocation<T> location ) { LOG.info( "Scanning {}", location.getIdentifier() ); ResourceManager<T> mgr = (ResourceManager) resourceManagers.get( location.getIdentifier().getProvider() ); ResourceMetadata<T> md = mgr.add( location ); resourceMetadata.put( md.getIdentifier(), md ); }
@Override public RemoteOWS build() { WMTSClient client = null; try { client = createClient(); } catch ( Exception e ) { String msg = "Could not create WMTS client for Remote WMTS store config at '" + metadata.getIdentifier() + "': " + e.getLocalizedMessage(); throw new ResourceInitException( msg, e ); } return new RemoteWMTS( client, metadata ); }
private void removeMetadataFromResourceManager( ResourceIdentifier<?> id ) { for ( ResourceManager<?> mgr : getResourceManagers() ) { for ( ResourceMetadata<?> md : mgr.getResourceMetadata() ) { if ( md.getIdentifier() == id ) { mgr.remove (md); return; } } } }
private void watchTimeout( final OWS ows, final String requestName ) { if ( requestWatchdog != null ) { final String serviceId = ows.getMetadata().getIdentifier().getId(); requestWatchdog.watchCurrentThread( serviceId, requestName ); } }
public void transform() throws TransformerException, XMLStreamException { OwsManager mgr = workspace.getResourceManager( OwsManager.class ); List<OWS> wmss = mgr.getByOWSClass( WMSController.class ); for ( OWS ows : wmss ) { ResourceMetadata<? extends Resource> md = ows.getMetadata(); ResourceIdentifier<? extends Resource> id = md.getIdentifier(); File loc = md.getLocation().resolveToFile( id.getId() + ".xml" ); ByteArrayOutputStream bos = new ByteArrayOutputStream(); transformer.transform( new StreamSource( loc ), new StreamResult( bos ) ); ThemeXmlStreamEncoder.writeOut( bos ); WorkspaceUtils.activateSynthetic( workspace, ThemeProvider.class, id.getId(), new String( bos.toByteArray(), Charset.forName( "UTF-8" ) ) ); } }
@Override public MetadataStore<? extends MetadataRecord> build() { try { ConnectionProvider prov = workspace.getResource( ConnectionProviderProvider.class, cfg.getJDBCConnId() ); SQLDialect dialect = prov.getDialect(); return new ISOMetadataStore( cfg, dialect, metadata, workspace ); } catch ( Exception e ) { String msg = Messages.getMessage( "ERROR_IN_CONFIG_FILE", metadata.getIdentifier(), e.getMessage() ); throw new ResourceInitException( msg, e ); } }
private void checkBase( long x, long y, File file ) { if ( baseStoreId != null && !file.exists() ) { file.getParentFile().mkdirs(); TileStore store = workspace.getResource( TileStoreProvider.class, baseStoreId ); TileDataSet set = store.getTileDataSet( baseDataSetId ); TileDataLevel lev = set.getTileDataLevel( metadata.getIdentifier() ); Tile tile = lev.getTile( x, y ); TileStoreTransaction ta = workspace.getResource( TileStoreProvider.class, tsMetadata.getIdentifier().getId() ).acquireTransaction( myId ); ta.put( metadata.getIdentifier(), tile, x, y ); } }
@Override public <T extends Resource> void destroy( ResourceIdentifier<T> id ) { ResourceNode<T> node = graph.getNode( id ); if ( node == null ) { return; } for ( ResourceNode<? extends Resource> n : node.getDependents() ) { destroy( n.getMetadata().getIdentifier() ); } T res = (T) resources.get( id ); if ( res != null ) { LOG.info( "Shutting down {}.", id ); res.destroy(); } states.setState( id, null ); removeMetadataFromResourceManager( id ); resources.remove( id ); errors.clear( id ); }
@Override public void init( DeegreeServicesMetadataType serviceMetadata, DeegreeServiceControllerType mainConfig, Object controllerConf ) { WmtsBuilder builder = new WmtsBuilder( workspace, (DeegreeWMTS) controllerConf ); this.metadataUrlTemplate = builder.getMetadataUrlTemplate(); dispatcher = new WmtsRequestDispatcher( (DeegreeWMTS) controllerConf, serviceMetadata, workspace, builder, getMetadata().getIdentifier().getId(), getMetadata().getLocation() ); }
@Override public ResourceBuilder<OWS> prepare() { try { DeegreeWCS cfg = (DeegreeWCS) JAXBUtils.unmarshall( "org.deegree.services.jaxb.wcs", provider.getSchema(), location.getAsStream(), workspace ); for ( org.deegree.services.jaxb.wcs.ServiceConfiguration.Coverage cov : cfg.getServiceConfiguration().getCoverage() ) { String id = cov.getCoverageStoreId(); dependencies.add( new DefaultResourceIdentifier<Coverage>( CoverageProvider.class, id ) ); } OWSMetadataProviderManager mmgr = workspace.getResourceManager( OWSMetadataProviderManager.class ); for ( ResourceMetadata<OWSMetadataProvider> md : mmgr.getResourceMetadata() ) { ResourceIdentifier<OWSMetadataProvider> mdId = md.getIdentifier(); if ( mdId.getId().equals( getIdentifier().getId() + "_metadata" ) ) { softDependencies.add( mdId ); } } return new WcsBuilder( this, workspace, cfg ); } catch ( Exception e ) { throw new ResourceInitException( e.getLocalizedMessage(), e ); } }