let GeoJsonDataSource = require('./geoJsonVectorSource');
let EsriJsonDataSource = require('./esriJsonVectorSource');
let FileEsriJsonDataSource = require('./fileEsriJsonVectorSource');
let EmptyVectorSource = require('./emptyVectorSource');
let GeoImageSource = require('./geoImageSource');
const dict = {
geoJsonVectorSource: GeoJsonDataSource,
esriJsonVectorSource: EsriJsonDataSource,
fileEsriJsonVectorSource: FileEsriJsonDataSource,
emptyVectorSource: EmptyVectorSource,
geoImage: GeoImageSource
};
/**
* Класс DataSource - фабрика, предназначенная для создания источника данных конкретного типа
*/
class DataSourceFabric {
constructor(params) {
let type = params.dataSourceType || "geoJsonVectorSource";
let sourceClass = dict[type];
let sourceObject = new sourceClass(params);
this.source = sourceObject.getSource();
this.sourceObject = sourceObject;
this.type = type;
}
/**
* Возвращает текущий источник данных
* @return {ol.source.Source}
*/
getSource() {
return this.source;
}
getDescriptor() {
return this;
}
/**
* Применяет новый источник данных
* @param {ol.source.Source) source
*/
setSource(source) {
this.source = source;
}
/**
* Выполнить транзакцию
* @param params
*/
transact(params) {
this.sourceObject.transact(params);
}
}
module.exports = DataSourceFabric;