package org.jvalue.ods.data; import com.fasterxml.jackson.databind.JsonNode; import com.google.inject.Inject; import org.jvalue.commons.utils.Assert; import org.jvalue.commons.utils.Cache; import org.jvalue.ods.api.sources.DataSource; import org.jvalue.ods.api.views.DataView; import org.jvalue.ods.db.DataRepository; import org.jvalue.ods.db.DataViewRepository; import org.jvalue.ods.db.RepositoryFactory; import java.util.List; public final class DataViewManager extends AbstractDataSourcePropertyManager<DataView, DataViewRepository> { @Inject DataViewManager( Cache<DataViewRepository> viewRepositoryCache, RepositoryFactory repositoryFactory) { super(viewRepositoryCache, repositoryFactory); } public List<JsonNode> executeView(DataRepository dataRepository, DataView view, String argument) { Assert.assertNotNull(dataRepository, view); return dataRepository.executeQuery(view, argument); } @Override protected void doAdd(DataSource source, DataRepository dataRepository, DataView dataView) { dataRepository.addView(dataView); } @Override protected void doRemove(DataSource source, DataRepository dataRepository, DataView dataView) { dataRepository.removeView(dataView); } @Override protected void doRemoveAll(DataSource source) { } @Override protected DataViewRepository createNewRepository(String sourceId, RepositoryFactory repositoryFactory) { return repositoryFactory.createDataViewRepository(sourceId); } }