package jp.aegif.nemaki.bjornloka.proxy; import java.net.MalformedURLException; import java.net.URL; import java.util.List; import org.apache.commons.collections.CollectionUtils; import com.cloudant.client.api.CloudantClient; import com.cloudant.client.api.Database; public class CloudantFactory implements CouchFactory{ private static final CloudantFactory instance = new CloudantFactory(); private CloudantFactory(){ } public static CloudantFactory getInstance(){ return CloudantFactory.instance; } @Override public CloudantProxy createProxy(String url, String repositoryId) { CloudantClient client = createClient(url); Database database = client.database(repositoryId, false); return new CloudantProxy(client, database); } private static CloudantClient createClient(String url){ //String loginName = "linzhixing"; //String password = "tWKgFgxE7jFT"; String loginName = null; String password = null; URL _url = convert(url); if (_url.getUserInfo() != null) { String[] userInfoParts = _url.getUserInfo().split(":"); if (userInfoParts.length == 2) { loginName = userInfoParts[0]; password = userInfoParts[1]; } } System.out.println("loginName:" + loginName); System.out.println("password:" + password); String account = loginName; //TODO CloudantClient client = new CloudantClient(account, loginName, password); return client; } private static URL convert(String url){ try { return new URL(url); } catch (MalformedURLException e) { System.err.println("URL is not well-formed: " + url); e.printStackTrace(); } return null; } @Override public boolean initRepository(String url, String repositoryId, boolean force) { CloudantClient client = createClient(url); List<String> dbs = client.getAllDbs(); if(CollectionUtils.isNotEmpty(dbs) && dbs.contains(repositoryId)){ if(!force){ return false; //do nothing }else{ client.deleteDB(repositoryId); } } client.createDB(repositoryId); return true; } }