/ Published in: Java
A Singleton class that serialize and deserialize an object to a DBObject.
Expand |
Embed | Plain Text
package ro.shiken.db; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Array; import java.lang.reflect.Field; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.Properties; import java.util.Set; import org.bson.types.ObjectId; import com.mongodb.BasicDBList; import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject; import com.mongodb.Mongo; import com.mongodb.MongoException; public class MongoUtils { private Mongo mongo = null; private static MongoUtils instance = null; private DB db = null; private Properties properties; private MongoUtils() { .getResourceAsStream("mongo.properties"); try { properties.load(inputStream); e.printStackTrace(); } } public static MongoUtils getMe() { if (instance == null) { instance = new MongoUtils(); } return instance; } private DB getMongo() { if (mongo == null) { try { mongo = new Mongo(properties.getProperty(DB_HOST), e.printStackTrace(); } catch (MongoException e) { e.printStackTrace(); } } return mongo.getDB(properties.getProperty(DB_NAME)); } if (getMe().db == null) { getMe().db = getMongo(); } return getMe().db.getCollection(coll.name()); } USER, ITEM, PUPIL, RESPONSE, SESSION, TCH, TEST, PUPIL_SESSION } DBObject dbObj = getObject(obj); getMe().getCollection(c).save(dbObj); return (ObjectId) dbObj.get(ID); } public static <T> T getInstace(Class<T> clazz, DBObject object) { T t = null; if (object != null) { try { t = clazz.newInstance(); Set<String> props = object.keySet(); if (props.contains(fn)) { f.setAccessible(true); if (n.equals(fn)) { if (oo instanceof BasicDBList) { if (f.getType().isArray()) { f.set(t, getArrayField(f.getType() .getComponentType(), (BasicDBList) oo)); } else { f.set(t, getListField((BasicDBList) oo)); } } else { f.set(t, oo); } props.remove(n); break; } } } } e.printStackTrace(); e.printStackTrace(); e.printStackTrace(); e.printStackTrace(); } return t; } return null; } @SuppressWarnings({ "rawtypes", "unchecked" }) private static <T> T[] getArrayField(Class<T> clazz, BasicDBList obj) { Iterator<Object> it = obj.iterator(); while (it.hasNext()) { list.add(it.next()); } result = (T[]) list.toArray(result); return result; } @SuppressWarnings({ "rawtypes", "unchecked" }) Iterator<Object> it = obj.iterator(); while (it.hasNext()) { list.add(it.next()); } return list; } DBObject bo = new BasicDBObject(); try { if (!f.getName().equals("serialVersionUID")) { f.setAccessible(true); if (fo != null) { bo.put(f.getName(), fo); } } } e.printStackTrace(); e.printStackTrace(); } return bo; } return getMe().getCollection(coll).find(ref); } return find(coll, new BasicDBObject(key, value)); } return getMe().getCollection(coll).findOne(ref); } return findOne(coll, new BasicDBObject(ID, id)); } }
You need to login to post a comment.
