package org.jvalue.ods.processor.adapter; import com.google.inject.assistedinject.Assisted; import com.google.inject.name.Named; import org.jvalue.ods.api.sources.DataSource; import org.jvalue.ods.processor.specification.Argument; import org.jvalue.ods.processor.specification.CreationMethod; import org.jvalue.ods.api.processors.ProcessorType; public interface SourceAdapterFactory { static final String NAME_JSON_SOURCE_ADAPTER = "JsonSourceAdapter", NAME_CSV_SOURCE_ADAPTER = "CsvSourceAdapter", NAME_XML_SOURCE_ADAPTER = "XmlSourceAdapter", NAME_OSM_SOURCE_ADAPTER = "OsmSourceAdapter", NAME_PEGEL_PORTAL_MV_SOURCE_ADAPTER = "PegelPortalMvSourceAdapter", NAME_PEGEL_BRANDENBURG = "PegelBrandenburg"; static final String ARGUMENT_SOURCE_URL = "sourceUrl", ARGUMENT_CSV_FORMAT = "csvFormat"; @CreationMethod(name = NAME_JSON_SOURCE_ADAPTER, filterType = ProcessorType.SOURCE_ADAPTER) @Named(NAME_JSON_SOURCE_ADAPTER) public SourceAdapter createJsonSourceAdapter( DataSource source, @Argument(ARGUMENT_SOURCE_URL) String sourceUrl); @CreationMethod(name = NAME_CSV_SOURCE_ADAPTER, filterType = ProcessorType.SOURCE_ADAPTER) @Named(NAME_CSV_SOURCE_ADAPTER) public SourceAdapter createCsvSourceAdapter( DataSource source, @Argument(ARGUMENT_SOURCE_URL) @Assisted(ARGUMENT_SOURCE_URL) String sourceUrl, @Argument(ARGUMENT_CSV_FORMAT) @Assisted(ARGUMENT_CSV_FORMAT) String csvFormat); @CreationMethod(name = NAME_XML_SOURCE_ADAPTER, filterType = ProcessorType.SOURCE_ADAPTER) @Named(NAME_XML_SOURCE_ADAPTER) public SourceAdapter createXmlSourceAdapter( DataSource source, @Argument(ARGUMENT_SOURCE_URL) String sourceUrl); @CreationMethod(name = NAME_OSM_SOURCE_ADAPTER, filterType = ProcessorType.SOURCE_ADAPTER) @Named(NAME_OSM_SOURCE_ADAPTER) public SourceAdapter createOsmSourceAdapter( DataSource source, @Argument(ARGUMENT_SOURCE_URL) String sourceUrl); @CreationMethod(name = NAME_PEGEL_PORTAL_MV_SOURCE_ADAPTER, filterType = ProcessorType.SOURCE_ADAPTER) @Named(NAME_PEGEL_PORTAL_MV_SOURCE_ADAPTER) public SourceAdapter createPegelPortalMvSourceAdapter( DataSource source, @Argument(ARGUMENT_SOURCE_URL) String sourceUrl); @CreationMethod(name = NAME_PEGEL_BRANDENBURG, filterType = ProcessorType.SOURCE_ADAPTER) @Named(NAME_PEGEL_BRANDENBURG) public SourceAdapter createPegelBrandenburgAdapter( DataSource source, @Argument(ARGUMENT_SOURCE_URL) String sourceUrl); }