/** * Copyright (c) 2013-2016, The SeedStack authors <http://seedstack.org> * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ package org.seedstack.seed.core.internal.data; import com.google.inject.PrivateModule; import com.google.inject.TypeLiteral; import org.seedstack.seed.DataManager; import java.util.Map; /** * Guice module for configuring SEED core data infrastructure. */ class DataModule extends PrivateModule { private final Map<String, Map<String, DataExporterDefinition<Object>>> allDataExporters; private final Map<String, Map<String, DataImporterDefinition<Object>>> allDataImporters; DataModule(Map<String, Map<String, DataExporterDefinition<Object>>> allDataExporters, Map<String, Map<String, DataImporterDefinition<Object>>> allDataImporters) { this.allDataExporters = allDataExporters; this.allDataImporters = allDataImporters; } @Override protected void configure() { bind(new TypeLiteral<Map<String, Map<String, DataExporterDefinition<Object>>>>() {}).toInstance(allDataExporters); bind(new TypeLiteral<Map<String, Map<String, DataImporterDefinition<Object>>>>() {}).toInstance(allDataImporters); bind(DataManager.class).to(DataManagerImpl.class); // Bind importers for (Map<String, DataImporterDefinition<Object>> dataImporterDefinitionMap : allDataImporters.values()) { for (DataImporterDefinition<Object> dataImporterDefinition : dataImporterDefinitionMap.values()) { bind(dataImporterDefinition.getDataImporterClass()); } } // Bind exporters for (Map<String, DataExporterDefinition<Object>> dataExporterDefinitionMap : allDataExporters.values()) { for (DataExporterDefinition<Object> dataExporterDefinition : dataExporterDefinitionMap.values()) { bind(dataExporterDefinition.getDataExporterClass()); } } expose(DataManager.class); } }