org.tenio.interstellar.mongo.config.parser.ReadConcernLevelParser Maven / Gradle / Ivy
Show all versions of interstellar-ext-mongo Show documentation
package org.tenio.interstellar.mongo.config.parser;
import com.mongodb.ConnectionString;
import com.mongodb.ReadConcern;
import com.mongodb.ReadConcernLevel;
import org.tenio.interstellar.mongo.config.MongoClientProperties;
import java.util.Optional;
/**
* TODO
*
* @author: Ban Tenio
* @version: 1.0
*/
public class ReadConcernLevelParser {
private final ConnectionString connectionString;
private final MongoClientProperties config;
/**
*
* TODO
*
* @param connectionString TODO
* @param config TODO
*/
public ReadConcernLevelParser(ConnectionString connectionString, MongoClientProperties config) {
this.connectionString = connectionString;
this.config = config;
}
/**
*
* TODO
*
* @return TODO
*/
public Optional readConcern() {
return tryToParseFromConnectionString().map(this::lift).orElseGet(this::tryToParseFromConfig);
}
private Optional lift(ReadConcern readConcern) {
return Optional.ofNullable(readConcern);
}
private Optional tryToParseFromConnectionString() {
return Optional.ofNullable(connectionString)
.flatMap(cs -> Optional.ofNullable(cs.getReadConcern()));
}
private Optional tryToParseFromConfig() {
return Optional.ofNullable(config)
.flatMap(cfg -> Optional.ofNullable(cfg.getReadConcernLevel()))
.map(ReadConcernLevel::fromString)
.map(ReadConcern::new);
}
}