/******************************************************************************* * Copyleft 2013 Massimiliano Leone - massimiliano.leone@iubris.net . * * AbstractUlyssesModule.java is part of 'Ulysses'. * * 'Ulysses' is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * 'Ulysses' is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with 'Ulysses'; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ******************************************************************************/ package net.iubris.ulysses._di._roboguice.module; import java.util.List; import net.iubris.diane._roboguice.module.AbstractDianeModule; import net.iubris.diane.aware.cache.states.three.SearchingByCacheBehaviour; import net.iubris.diane.aware.cache.states.three.ThreeStateCacheAware; import net.iubris.diane.aware.location.state.three.base.annotation.DistanceMaximumThreshold; import net.iubris.diane.searcher.location.aware.cache.LocalizedSearcherCacheAwareStrictChecking; import net.iubris.diane.searcher.location.aware.full.LocalizedSearcherCacheNetworkAwareStrictChecking; import net.iubris.diane.searcher.location.aware.network.LocalizedSearcherNetworkAwareStrictChecking; import net.iubris.ulysses.engine.searcher.aware.cache.UlyssesThreeStateCacheAware; import net.iubris.ulysses.engine.searcher.aware.cache.config.DefaultSearchingByCacheBehaviour; import net.iubris.ulysses.engine.searcher.aware.full.DefaultUlyssesSearcher; import net.iubris.ulysses.engine.searcher.aware.full.UlyssesSearcher; import net.iubris.ulysses.engine.searcher.location.aware.cache.DefaultUlyssesLocalizedSearcherCacheAware; import net.iubris.ulysses.engine.searcher.location.aware.cache.UlyssesLocalizedSearcherCacheAware; import net.iubris.ulysses.engine.searcher.location.aware.full.DefaultUlyssesLocalizedSearcher; import net.iubris.ulysses.engine.searcher.location.aware.full.UlyssesLocalizedSearcher; import net.iubris.ulysses.engine.searcher.location.aware.network.DefaultUlyssesLocalizedSearcherNetworkAware; import net.iubris.ulysses.engine.searcher.location.aware.network.UlyssesLocalizedSearcherNetworkAware; import net.iubris.ulysses.model.Place; import com.google.inject.TypeLiteral; public abstract class AbstractUlyssesModule extends AbstractDianeModule { // private final SocratesToUlyssesModule socratesToUlyssesModule; // // public AbstractUlyssesModule(SocratesToUlyssesModule socratesToUlyssesModule) { // this.socratesToUlyssesModule = socratesToUlyssesModule; // } @Override protected void configure() { super.configure(); install ( getSocratesToUlyssesModule() ); bindUlyssesSearcher(); bindUlyssesLocalizedSearcher(); bindUlyssesLocalizedSearcherCacheAware(); bindUlyssesLocalizedSearcherNetworkAware(); bindPersister(); } protected void bindUlyssesSearcher() { bind(UlyssesSearcher.class).to(DefaultUlyssesSearcher.class); } protected void bindUlyssesLocalizedSearcher() { bind(UlyssesLocalizedSearcher.class).to(DefaultUlyssesLocalizedSearcher.class); } protected void bindUlyssesLocalizedSearcherCacheAware() { bind(UlyssesLocalizedSearcherCacheAware.class).to(DefaultUlyssesLocalizedSearcherCacheAware.class); } protected void bindUlyssesLocalizedSearcherNetworkAware() { bind(UlyssesLocalizedSearcherNetworkAware.class).to(DefaultUlyssesLocalizedSearcherNetworkAware.class); } // for Diane @Override protected void bindLocalizedSearcherCacheAwareStrictChecking() { bind(new TypeLiteral<LocalizedSearcherCacheAwareStrictChecking<List<Place>>>(){}).to(DefaultUlyssesLocalizedSearcherCacheAware.class); } @Override protected void bindLocalizedSearcherNetworkAwareStrictChecking() { bind(new TypeLiteral<LocalizedSearcherNetworkAwareStrictChecking<List<Place>>>(){}).to(DefaultUlyssesLocalizedSearcherNetworkAware.class); } @Override protected void bindLocalizedSearcherCacheNetworkAwareStrictChecking() { bind(new TypeLiteral<LocalizedSearcherCacheNetworkAwareStrictChecking<List<Place>>>(){}).to(DefaultUlyssesLocalizedSearcher.class); } @Override protected void bindDistanceMaximumThreshold() { bind(Integer.class).annotatedWith(DistanceMaximumThreshold.class).toInstance(Integer.valueOf(100)); } @Override protected void bindThreeStateCacheAware() { bind(ThreeStateCacheAware.class).to(UlyssesThreeStateCacheAware.class); } @Override protected void bindSearchByCacheBehaviourForThreeStateCacheAware() { bind(SearchingByCacheBehaviour.class).to(DefaultSearchingByCacheBehaviour.class); } protected abstract SocratesToUlyssesModule getSocratesToUlyssesModule(); protected abstract void bindPersister(); /*protected void bindPersister() { bind(Persister.class).to(OrmlitePersister.class); }*/ }