use of com.mongodb.client.MongoCollection in project drill by apache.
the class MongoGroupScan method init.
@SuppressWarnings({ "rawtypes" })
private void init() {
List<String> h = storagePluginConfig.getHosts();
List<ServerAddress> addresses = Lists.newArrayList();
for (String host : h) {
addresses.add(new ServerAddress(host));
}
MongoClient client = storagePlugin.getClient();
chunksMapping = Maps.newHashMap();
chunksInverseMapping = Maps.newLinkedHashMap();
if (useAggregate && isShardedCluster(client)) {
handleUnshardedCollection(getPrimaryShardInfo());
} else if (isShardedCluster(client)) {
MongoDatabase db = client.getDatabase(CONFIG);
MongoCollection<Document> chunksCollection = db.getCollection(CHUNKS);
Document filter = new Document();
filter.put(NS, this.scanSpec.getDbName() + "." + this.scanSpec.getCollectionName());
Document projection = new Document();
projection.put(SHARD, SELECT);
projection.put(MIN, SELECT);
projection.put(MAX, SELECT);
FindIterable<Document> chunkCursor = chunksCollection.find(filter).projection(projection);
MongoCursor<Document> iterator = chunkCursor.iterator();
MongoCollection<Document> shardsCollection = db.getCollection(SHARDS);
projection = new Document();
projection.put(HOST, SELECT);
boolean hasChunks = false;
while (iterator.hasNext()) {
Document chunkObj = iterator.next();
String shardName = (String) chunkObj.get(SHARD);
// creates hexadecimal string representation of ObjectId
String chunkId = chunkObj.get(ID).toString();
filter = new Document(ID, shardName);
FindIterable<Document> hostCursor = shardsCollection.find(filter).projection(projection);
for (Document hostObj : hostCursor) {
String hostEntry = (String) hostObj.get(HOST);
String[] tagAndHost = StringUtils.split(hostEntry, '/');
String[] hosts = tagAndHost.length > 1 ? StringUtils.split(tagAndHost[1], ',') : StringUtils.split(tagAndHost[0], ',');
Set<ServerAddress> addressList = getPreferredHosts(storagePlugin.getClient(addresses));
if (addressList == null) {
addressList = Sets.newHashSet();
for (String host : hosts) {
addressList.add(new ServerAddress(host));
}
}
chunksMapping.put(chunkId, addressList);
ServerAddress address = addressList.iterator().next();
List<ChunkInfo> chunkList = chunksInverseMapping.computeIfAbsent(address.getHost(), k -> new ArrayList<>());
List<String> chunkHostsList = new ArrayList<>();
for (ServerAddress serverAddr : addressList) {
chunkHostsList.add(serverAddr.toString());
}
ChunkInfo chunkInfo = new ChunkInfo(chunkHostsList, chunkId);
Document minMap = (Document) chunkObj.get(MIN);
Map<String, Object> minFilters = Maps.newHashMap();
Set keySet = minMap.keySet();
for (Object keyObj : keySet) {
Object object = minMap.get(keyObj);
if (!(object instanceof MinKey)) {
minFilters.put(keyObj.toString(), object);
}
}
chunkInfo.setMinFilters(minFilters);
Map<String, Object> maxFilters = Maps.newHashMap();
Map maxMap = (Document) chunkObj.get(MAX);
keySet = maxMap.keySet();
for (Object keyObj : keySet) {
Object object = maxMap.get(keyObj);
if (!(object instanceof MaxKey)) {
maxFilters.put(keyObj.toString(), object);
}
}
chunkInfo.setMaxFilters(maxFilters);
chunkList.add(chunkInfo);
}
hasChunks = true;
}
// unsharded collection and it will be stored in the primary shard of that database.
if (!hasChunks) {
handleUnshardedCollection(getPrimaryShardInfo());
}
} else {
handleUnshardedCollection(storagePluginConfig.getHosts());
}
}
use of com.mongodb.client.MongoCollection in project legendarybot by greatman.
the class WoWLinkPlugin method start.
@Override
public void start() {
// Load the configuration
props = new Properties();
try {
props.load(new FileInputStream("app.properties"));
} catch (java.io.IOException e) {
e.printStackTrace();
getBot().getStacktraceHandler().sendStacktrace(e);
}
path("/auth", () -> get("/battlenetcallback", (req, res) -> {
String state = req.queryParams("state");
String region = state.split(":")[0];
OAuth20Service service = new ServiceBuilder(props.getProperty("battlenetoauth.key")).apiSecret(props.getProperty("battlenetoauth.secret")).scope("wow.profile").callback("https://legendarybot.greatmancode.com/auth/battlenetcallback").build(new OAuthBattleNetApi(region));
String oAuthCode = req.queryParams("code");
// TODO: Save oauth code to do a character refresh.
OAuth2AccessToken token = service.getAccessToken(oAuthCode);
OAuthRequest request = new OAuthRequest(Verb.GET, "https://" + region + ".api.battle.net/wow/user/characters");
service.signRequest(token, request);
Response response = service.execute(request);
JSONParser parser = new JSONParser();
JSONObject obj = (JSONObject) parser.parse(response.getBody());
JSONArray charactersArray = (JSONArray) obj.get("characters");
List<WoWCharacter> characterList = new ArrayList<>();
charactersArray.forEach((c) -> {
JSONObject jsonObject = (JSONObject) c;
if (jsonObject.containsKey("guild")) {
characterList.add(new WoWCharacter((String) jsonObject.get("name"), ((String) jsonObject.get("realm")).toLowerCase(), (String) jsonObject.get("guild"), region, HeroClass.values()[((Long) jsonObject.get("class")).intValue()]));
log.info("User " + state.split(":")[1] + " user have the character " + jsonObject.get("name") + " in guild " + jsonObject.get("guild"));
}
});
if (characterList.size() > 0) {
MongoCollection<Document> collection = getBot().getMongoDatabase().getCollection(MONGO_WOW_CHARACTERS_COLLECTION);
characterList.forEach((c) -> collection.updateOne(and(eq("region", c.getRegion()), eq("realm", c.getRealm()), eq("name", c.getCharacterName())), and(set("guild", c.getGuild()), set("owner", state.split(":")[1])), new UpdateOptions().upsert(true)));
}
return "Your WoW characters are now synced to LegendaryBot!";
}));
getBot().getCommandHandler().addCommand("linkwowchars", new LinkWoWCharsCommand(this), "World of Warcraft Character");
getBot().getCommandHandler().addCommand("guildchars", new GuildCharsCommand(this), "World of Warcraft Character");
getBot().getCommandHandler().addCommand("setmainchar", new SetMainCharacterCommand(this), "World of Warcraft Character");
getBot().getCommandHandler().addCommand("enableautorank", new EnableAutoRankCommand(this), "WoW Admin Commands");
getBot().getCommandHandler().addCommand("disableautorank", new DisableAutoRankCommand(this), "WoW Admin Commands");
getBot().getCommandHandler().addCommand("setwowrank", new SetWoWRankCommand(this), "WoW Admin Commands");
getBot().getCommandHandler().addCommand("syncrank", new SyncRankCommand(this), "World of Warcraft Character");
getBot().getCommandHandler().addCommand("syncguild", new SyncGuildCommand(this), "WoW Admin Commands");
getBot().getCommandHandler().addCommand("enableautorankupdate", new EnableAutoRankUpdateCommand(this), "WoW Admin Commands");
getBot().getCommandHandler().addCommand("disableautorankupdate", new DisableAutoRankUpdateCommand(this), "WoW Admin Commands");
// We load the scheduler
getBot().getJDA().forEach((jda -> {
jda.getGuilds().forEach(guild -> {
if (getBot().getGuildSettings(guild).getSetting(SETTING_SCHEDULER) != null && getBot().getGuildSettings(guild).getSetting(SETTING_RANKSET_ENABLED) != null) {
scheduler.put(guild.getId(), new SyncRankScheduler(this, guild));
}
});
}));
}
use of com.mongodb.client.MongoCollection in project logging-log4j2 by apache.
the class MongoDb4Connection method getOrCreateMongoCollection.
private static MongoCollection<Document> getOrCreateMongoCollection(final MongoDatabase database, final String collectionName, final boolean isCapped, final Integer sizeInBytes) {
try {
LOGGER.debug("Getting collection '{}'...", collectionName);
// throws IllegalArgumentException if collectionName is invalid
final MongoCollection<Document> found = database.getCollection(collectionName);
LOGGER.debug("Got collection {}", found);
return found;
} catch (final IllegalStateException e) {
LOGGER.debug("Collection '{}' does not exist.", collectionName);
final CreateCollectionOptions options = new CreateCollectionOptions().capped(isCapped).sizeInBytes(sizeInBytes);
LOGGER.debug("Creating collection '{}' with options {}...", collectionName, options);
database.createCollection(collectionName, options);
LOGGER.debug("Created collection.");
final MongoCollection<Document> created = database.getCollection(collectionName);
LOGGER.debug("Got created collection {}", created);
return created;
}
}
use of com.mongodb.client.MongoCollection in project morphia by mongodb.
the class TestDatastore method testBulkInsert.
@Test
public void testBulkInsert() {
MongoCollection collection = getDs().getCollection(TestEntity.class);
this.getDs().insert(asList(new TestEntity(), new TestEntity(), new TestEntity(), new TestEntity(), new TestEntity()), new InsertManyOptions().writeConcern(WriteConcern.ACKNOWLEDGED));
assertEquals(collection.countDocuments(), 5);
collection.drop();
this.getDs().insert(asList(new TestEntity(), new TestEntity(), new TestEntity(), new TestEntity(), new TestEntity()), new InsertManyOptions().writeConcern(WriteConcern.ACKNOWLEDGED));
assertEquals(collection.countDocuments(), 5);
}
use of com.mongodb.client.MongoCollection in project morphia by mongodb.
the class TestDatastore method testInsert.
@Test
public void testInsert() {
MongoCollection collection = getDs().getCollection(TestEntity.class);
this.getDs().insert(new TestEntity());
assertEquals(collection.countDocuments(), 1);
this.getDs().insert(new TestEntity(), new InsertOneOptions().writeConcern(WriteConcern.ACKNOWLEDGED));
assertEquals(collection.countDocuments(), 2);
}
Aggregations