package jp.aegif.nemaki.bjornloka.proxy; import java.net.MalformedURLException; import org.ektorp.CouchDbConnector; import org.ektorp.CouchDbInstance; import org.ektorp.http.HttpClient; import org.ektorp.http.StdHttpClient; import org.ektorp.impl.StdCouchDbInstance; public class EktorpFactory implements CouchFactory{ private static final EktorpFactory instance = new EktorpFactory(); private EktorpFactory(){ } public static EktorpFactory getInstance(){ return EktorpFactory.instance; } @Override public EktorpProxy createProxy(String url, String repositoryId){ CouchDbInstance dbInstance = createCouchDbInstance(url); CouchDbConnector connector = createConnector(dbInstance, repositoryId); return new EktorpProxy(dbInstance, connector); } private static CouchDbInstance createCouchDbInstance(String url){ HttpClient httpClient; try { httpClient = new StdHttpClient.Builder().url(url) .maxConnections(1000).socketTimeout(100000000).build(); return new StdCouchDbInstance(httpClient); } catch (MalformedURLException e) { System.err.println("URL is not well-formed!: " + url); e.printStackTrace(); } return null; } private static CouchDbConnector createConnector(CouchDbInstance dbInstance, String repositoryId){ CouchDbConnector connector = dbInstance.createConnector(repositoryId, true); return connector; } @Override public boolean initRepository(String url, String repositoryId, boolean force) { CouchDbInstance dbInstance = createCouchDbInstance(url); //Initialize database if(dbInstance.checkIfDbExists(repositoryId)){ if(!force){ //System.err.println("Repository already exist. Do nothing."); return false; } dbInstance.deleteDatabase(repositoryId); } dbInstance.createDatabase(repositoryId); return true; } }