// Path: src/main/java/com/lowereast/guiceymongo/guice/GuiceyMongo.java
// public final class GuiceyMongo {
// 	private GuiceyMongo() {}
// 
// 	public static Builders.Configuration configure(String configurationName) {
// 		return new BuilderImpls.Configuration(configurationName);
// 	}
// 	
// 	public static Builders.Connection configureConnection(String connectionName) {
// 		return new BuilderImpls.Connection(connectionName);
// 	}
// 	
// 	public static Module chooseConfiguration(final String configurationName) {
// 		return new Module() {
// 			public void configure(Binder binder) {
// 				GuiceyMongoUtil.setCurrentConfiguration(binder.skipSources(GuiceyMongo.class), configurationName);
// 			}
// 		};
// 	}
// 	
// 	@SuppressWarnings("unchecked")
// 	public static Module javascriptProxy(Class<?> proxyInterface, String databaseKey) {
// 		return new JavascriptProxy(proxyInterface, databaseKey);
// 	}
// }


import com.google.inject.Guice;
import com.google.inject.Inject;
import com.google.inject.Injector;
import com.lowereast.guiceymongo.guice.GuiceyMongo;
import com.lowereast.guiceymongo.guice.annotation.GuiceyMongoCollection;
import com.mongodb.DBCollection;
/**
 *      Copyright (C) 2010 Lowereast Software
 *
 *   Licensed under the Apache License, Version 2.0 (the "License");
 *   you may not use this file except in compliance with the License.
 *   You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *   Unless required by applicable law or agreed to in writing, software
 *   distributed under the License is distributed on an "AS IS" BASIS,
 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *   See the License for the specific language governing permissions and
 *   limitations under the License.
 */


public class CollectionConfigurationExample {
	@Inject
	CollectionConfigurationExample(@GuiceyMongoCollection(Collections.Data) DBCollection collection) {
		System.out.println(collection.getDB() + " : " + collection);
	}
	
	public static void main(String[] args) {
		Injector injector = Guice.createInjector(
				// create the test configuration
				GuiceyMongo.configure(Configurations.Test)
					.mapDatabase(Databases.Main).to("test_db")
					// collection names are global, you just need to assign the collection to a database
					.mapCollection(Collections.Data).to("data").inDatabase(Databases.Main),
				
				// choose the configuration to use
// Path: src/main/java/com/lowereast/guiceymongo/guice/GuiceyMongo.java
// public final class GuiceyMongo {
// 	private GuiceyMongo() {}
// 
// 	public static Builders.Configuration configure(String configurationName) {
// 		return new BuilderImpls.Configuration(configurationName);
// 	}
// 	
// 	public static Builders.Connection configureConnection(String connectionName) {
// 		return new BuilderImpls.Connection(connectionName);
// 	}
// 	
// 	public static Module chooseConfiguration(final String configurationName) {
// 		return new Module() {
// 			public void configure(Binder binder) {
// 				GuiceyMongoUtil.setCurrentConfiguration(binder.skipSources(GuiceyMongo.class), configurationName);
// 			}
// 		};
// 	}
// 	
// 	@SuppressWarnings("unchecked")
// 	public static Module javascriptProxy(Class<?> proxyInterface, String databaseKey) {
// 		return new JavascriptProxy(proxyInterface, databaseKey);
// 	}
// }


// Path: src/examples/CollectionConfigurationExample.java
import com.google.inject.Guice;
import com.google.inject.Inject;
import com.google.inject.Injector;
import com.lowereast.guiceymongo.guice.GuiceyMongo;
import com.lowereast.guiceymongo.guice.annotation.GuiceyMongoCollection;
import com.mongodb.DBCollection;

/**
 *      Copyright (C) 2010 Lowereast Software
 *
 *   Licensed under the Apache License, Version 2.0 (the "License");
 *   you may not use this file except in compliance with the License.
 *   You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *   Unless required by applicable law or agreed to in writing, software
 *   distributed under the License is distributed on an "AS IS" BASIS,
 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *   See the License for the specific language governing permissions and
 *   limitations under the License.
 */


public class CollectionConfigurationExample {
	@Inject
	CollectionConfigurationExample(@GuiceyMongoCollection(Collections.Data) DBCollection collection) {
		System.out.println(collection.getDB() + " : " + collection);
	}
	
	public static void main(String[] args) {
		Injector injector = Guice.createInjector(
				// create the test configuration
				GuiceyMongo.configure(Configurations.Test)
					.mapDatabase(Databases.Main).to("test_db")
					// collection names are global, you just need to assign the collection to a database
					.mapCollection(Collections.Data).to("data").inDatabase(Databases.Main),
				
				// choose the configuration to use
				GuiceyMongo.chooseConfiguration(Configurations.Test)