/*******************************************************************************
* Copyright (c) 2013 hangum.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v2.1
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
* Contributors:
* hangum - initial API and implementation
******************************************************************************/
package com.hangum.tadpole.mongodb.core.test;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import org.apache.commons.lang.StringUtils;
import com.hangum.tadpole.engine.query.dao.mongodb.CollectionFieldDAO;
import com.hangum.tadpole.mongodb.core.utils.MongoDBTableColumn;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.MongoException;
import com.mongodb.ServerAddress;
public class ReplicaSetConnnection {
public static String serverurl = "localhost";
public static int port = 4000;
public static String SERVER_URL = "localhost:4001,localhost:4002";
/**
* db 연결 및 권한
*
* @param args
*/
public static void main(String[] args) {
try {
ReplicaSetConnnection testMongoCls = new ReplicaSetConnnection();
Mongo mongo = testMongoCls.connection(serverurl, port);
System.out.println("연결성공");
if (mongo != null) {
DB testDB = mongo.getDB("test");
// Set<String> collectionNames =
// testMongoCls.getCollectionNames(testDB);
// for (String collection : collectionNames) {
testMongoCls.getCollectionInfo(testDB, "store");
// }
}
// mongo.close();
} catch(Exception e) {
e.printStackTrace();
}
}
/**
* mongo db를 호출합니다.
*
* @return
*/
public Mongo connection(String uri, int port) throws Exception {
List<ServerAddress> listServerList = new ArrayList<ServerAddress>();
listServerList.add(new ServerAddress(serverurl, port));
String[] urls = StringUtils.split(SERVER_URL, ",");
for (String ipPort : urls) {
String[] strIpPort = StringUtils.split(ipPort, ":");
listServerList.add(new ServerAddress(strIpPort[0], Integer.parseInt(strIpPort[1])));
}
Mongo m = null;
// try {
m = new Mongo(listServerList);//uri, port);
// List<String> listDB = m.getDatabaseNames();
// for (String dbName : listDB) {
// System.out.println(dbName);
// }
// authentication(optional)
// boolean auth = db.authenticate(myUserName, myPassword);
// } catch (UnknownHostException e) {
// e.printStackTrace();
// } catch (MongoException e) {
// e.printStackTrace();
// }
return m;
}
/**
* collection list
*
* @param db
* @return
*/
public Set<String> getCollectionNames(DB db) {
Set<String> colls = db.getCollectionNames();
for (String s : colls) {
System.out.println(s);
}
return colls;
}
/**
* collection info
*
* @param db
* @param collection
* @return
*/
public String getCollectionInfo(DB db, String collection) {
DBCollection coll = db.getCollection(collection);
System.out.println("#################################################");
System.out.println("[collection name]" + coll.getName());
System.out.println("[count]" + coll.getCount());
// index list
List<DBObject> listIndex = coll.getIndexInfo();
List<CollectionFieldDAO> columnInfo = MongoDBTableColumn.tableColumnInfo(listIndex, db.getCollection(collection).findOne());
for (CollectionFieldDAO collectionFieldDAO : columnInfo) {
System.out.println("[field]" + collectionFieldDAO.getField() );
if(!collectionFieldDAO.getChildren().isEmpty()) {
List<CollectionFieldDAO> childColl = collectionFieldDAO.getChildren();
for (CollectionFieldDAO collectionFieldDAO2 : childColl) {
System.out.println("\t [child field]" + collectionFieldDAO2.getField());
if(!collectionFieldDAO2.getChildren().isEmpty()) {
List<CollectionFieldDAO> childColl2 = collectionFieldDAO2.getChildren();
for (CollectionFieldDAO collectionFieldDAO3 : childColl2) {
System.out.println("\t\t [child field]" + collectionFieldDAO3.getField());
}
}
}
}
}
// //
// StringBuffer sbJson = new StringBuffer();
//
// DBCursor cursor = coll.find();
// while (cursor.hasNext()) {
// DBObject dbObj = cursor.next();
// String jsonData = dbObj.toString();
// System.out.println("[data] \t" + jsonData);
//
// sbJson.append(jsonData);
// }
//
// System.out
// .println("#####[fully text]#########################################################");
// System.out.println("\t\t ******[detail data][start]*******************************************");
// ObjectMapper om = new ObjectMapper();
// try {
// Map<String, Object> mapObj = om.readValue(sbJson.toString(),
// new TypeReference<Map<String, Object>>() {});
// System.out.println("[json to object]" + mapObj);
//
// Set<String> keys = mapObj.keySet();
// for (String key : keys) System.out.print(key + "\t:\t");
// System.out.println();
//
//
// } catch (JsonParseException e) {
// e.printStackTrace();
// } catch (JsonMappingException e) {
// e.printStackTrace();
// } catch (IOException e) {
// e.printStackTrace();
// }
System.out
.println("\t\t ******[detail data][end]*******************************************");
return "";
}
}