Java源码示例:org.mongodb.morphia.Datastore
示例1
private <T> Query<T> prepareQuery(Object criteria, Datastore dataStore) {
Query<T> query = (Query<T>) dataStore.createQuery(criteria.getClass());
List<Field> fields = this.getAllModelFields(criteria.getClass());
for (Field field : fields) {
field.setAccessible(true);
Object value = null;
try {
value = field.get(criteria);
} catch (IllegalArgumentException | IllegalAccessException e) {
log.error(e.getMessage(), e);
}
if (value != null) {
query.criteria(field.getName()).equal(value);
}
}
return query;
}
示例2
private <T> Query<T> prepareQuery(Object criteria, Datastore dataStore) {
Query<T> query = (Query<T>) dataStore.createQuery(criteria.getClass());
List<Field> fields = this.getAllModelFields(criteria.getClass());
for (Field field : fields) {
field.setAccessible(true);
Object value = null;
try {
value = field.get(criteria);
} catch (IllegalArgumentException | IllegalAccessException ignored) {}
if (value != null) {
query.criteria(field.getName()).equal(value);
}
}
return query;
}
示例3
@Test
@LocalData
public void should_save_mixed_type_lists() {
MixedTypeListClass mixed = new MixedTypeListClass();
Serializable[] mixedList = {1, "teststring", new DummySerialiazable()};
mixed.mixedTypeList = mixedList;
Datastore ds = SetupConfig.get().getInjector().getInstance(Datastore.class);
ds.save(mixed);
MixedTypeListClass restoredMixed = ds.createQuery(MixedTypeListClass.class).get();
assertEquals(1, restoredMixed.mixedTypeList[0]);
assertEquals("teststring", restoredMixed.mixedTypeList[1]);
assertNotNull(restoredMixed.mixedTypeList[2]);
assertTrue(restoredMixed.mixedTypeList[2] instanceof DummySerialiazable);
DummySerialiazable dummy = (DummySerialiazable) restoredMixed.mixedTypeList[2];
assertEquals("test", dummy.test);
}
示例4
@Override
public <T> T merge(T object) {
try {
Datastore ds = this.datastore();
ds.merge(object);
return findOne(object);
} catch (Exception e) {
log.error(e.getMessage(), e);
return null;
}
}
示例5
@Override
public <T> T merge(T object) {
try {
Datastore ds = this.datastore();
ds.merge(object);
return findOne(object);
} catch (Exception e) {
return null;
}
}
示例6
@Override
protected Datastore createInstance() throws Exception {
// 这里的username和password可以为null,morphia对象会去处理
MongoClientURI mongoClientURI = new MongoClientURI(uri);
Datastore ds = morphia.createDatastore(new MongoClient(mongoClientURI), dbName);
if (toEnsureIndexes) {
ds.ensureIndexes();
}
if (toEnsureCaps) {
ds.ensureCaps();
}
return ds;
}
示例7
public static Datastore getDataStore(Config config) {
String[] addresses = config.getParameter(ExtConfig.MONGO_ADDRESSES, new String[]{"127.0.0.1:27017"});
String database = config.getParameter(ExtConfig.MONGO_DATABASE, "lts");
String username = config.getParameter(ExtConfig.MONGO_USERNAME);
String pwd = config.getParameter(ExtConfig.MONGO_PASSWORD);
String cachedKey = StringUtils.concat(StringUtils.concat(addresses), database, username, pwd);
Datastore datastore = DATA_STORE_MAP.get(cachedKey);
if (datastore == null) {
try {
synchronized (lock) {
datastore = DATA_STORE_MAP.get(cachedKey);
if (datastore != null) {
return datastore;
}
Morphia morphia = new Morphia();
MongoFactoryBean mongoFactoryBean = new MongoFactoryBean(addresses, username, database, pwd);
MongoClient mongo = mongoFactoryBean.createInstance();
datastore = morphia.createDatastore(mongo, database);
DATA_STORE_MAP.put(cachedKey, datastore);
}
} catch (Exception e) {
throw new IllegalStateException(
StringUtils.format("connect mongo failed! addresses: {}, database: {}",
addresses, database), e);
}
}
return datastore;
}
示例8
@Provides
@Singleton
Datastore provideDatastore(final Mongo mongo) {
final String databaseName = SetupConfig.get().getDbName();
final Mapper mapper = new JenkinsMapper();
final Morphia morphia = new Morphia(mapper);
return morphia.createDatastore(mongo, databaseName);
}
示例9
public int assignNextBuildNumber(final DynamicProject project) {
final Datastore datastore = getDatastore();
BuildNumberCounter seq = datastore.findAndModify(
datastore.find(BuildNumberCounter.class, "key = ", project.getFullName()), // query
datastore.createUpdateOperations(BuildNumberCounter.class).inc("counter") // update
);
if (seq == null) {
seq = new BuildNumberCounter(project.getFullName(), 1);
datastore.save(seq);
}
return seq.getCounter();
}
示例10
@Provides
@Singleton
Datastore provideDatastore(final Mongo mongo) {
final String databaseName = SetupConfig.get().getDbName();
final Mapper mapper = new JenkinsMapper();
final Morphia morphia = new Morphia(mapper);
return morphia.createDatastore(mongo, databaseName);
}
示例11
public Datastore getDatastore() {
return baseDao.getDatastore();
}
示例12
@Override
public Class<?> getObjectType() {
return Datastore.class;
}
示例13
@Override
public Datastore getMorphiaDatastore() {
return this.morphiaDatastore;
}
示例14
@Override
public Datastore getMorphiaDatastore(String name) {
return this.morphia.createDatastore(this.client, name);
}
示例15
public Datastore getDatastore() {
return datastore;
}
示例16
private NetworkRepository(Datastore datastore) {
super(Network.class, datastore);
}
示例17
public static NetworkRepository create(Datastore datastore) {
return new NetworkRepository(datastore);
}
示例18
private BungeeRepository(Datastore datastore) {
super(Bungee.class, datastore);
}
示例19
public static BungeeRepository create(Datastore datastore) {
return new BungeeRepository(datastore);
}
示例20
private BungeeTypeRepository(Datastore datastore) {
super(BungeeType.class, datastore);
}
示例21
public static BungeeTypeRepository create(Datastore datastore) {
return new BungeeTypeRepository(datastore);
}
示例22
private NodeRepository(Datastore datastore) {
super(Node.class, datastore);
}
示例23
public static NodeRepository create(Datastore datstore) {
return new NodeRepository(datstore);
}
示例24
private NodeTypeRepository(Datastore datastore) {
super(NodeType.class, datastore);
}
示例25
public static NodeTypeRepository create(Datastore datastore) {
return new NodeTypeRepository(datastore);
}
示例26
private ServerRepository(Datastore datastore) {
super(Server.class, datastore);
}
示例27
public static ServerRepository create(Datastore datastore) {
return new ServerRepository(datastore);
}
示例28
private ServerTypeRepository(Datastore datastore) {
super(ServerType.class, datastore);
}
示例29
public static ServerTypeRepository create(Datastore datastore) {
return new ServerTypeRepository(datastore);
}
示例30
private PluginTypeRepository(Datastore ds) {
super(PluginType.class, ds);
}