
eu.drus.jpa.unit.mongodb.operation.InsertOperation Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jpa-unit-mongodb Show documentation
Show all versions of jpa-unit-mongodb Show documentation
JUnit extension for simple testing of JPA entities and components
The newest version!
package eu.drus.jpa.unit.mongodb.operation;
import static eu.drus.jpa.unit.mongodb.operation.IndexOptionsUtils.toIndexOptions;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry;
import org.bson.Document;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
public class InsertOperation implements MongoDbOperation {
@Override
public void execute(final MongoDatabase connection, final Document data) {
for (final Entry entry : data.entrySet()) {
final String collectionName = entry.getKey();
final Object content = entry.getValue();
final List indexes = getIndexData(content);
if (!indexes.isEmpty()) {
insertIndexes(connection.getCollection(collectionName), indexes);
}
final List entries = getCollectionData(content);
if (!entries.isEmpty()) {
insertData(connection.getCollection(collectionName), entries);
}
}
}
@SuppressWarnings("unchecked")
private List getCollectionData(final Object obj) {
if (List.class.isAssignableFrom(obj.getClass())) {
return (List) obj;
} else {
return ((Document) obj).get("data", List.class);
}
}
private void insertData(final MongoCollection collection, final List entries) {
collection.insertMany(entries);
}
@SuppressWarnings("unchecked")
private List getIndexData(final Object obj) {
if (Document.class.isAssignableFrom(obj.getClass())) {
final Document collection = (Document) obj;
if (collection.containsKey("indexes")) {
return collection.get("indexes", List.class);
}
}
return Collections.emptyList();
}
private void insertIndexes(final MongoCollection collection, final List indexes) {
for (final Document index : indexes) {
final Document indexKeys = index.get("index", Document.class);
if (index.containsKey("options")) {
final Document indexOptions = index.get("options", Document.class);
collection.createIndex(indexKeys, toIndexOptions(indexOptions));
} else {
collection.createIndex(indexKeys);
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy