com.redhat.lightblue.mongo.crud.MongoExecutionOptions Maven / Gradle / Ivy
/*
Copyright 2013 Red Hat, Inc. and/or its affiliates.
This file is part of lightblue.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
package com.redhat.lightblue.mongo.crud;
import com.mongodb.ReadPreference;
import com.mongodb.WriteConcern;
import com.redhat.lightblue.ExecutionOptions;
import com.redhat.lightblue.mongo.config.MongoReadPreference;
/**
* This class deals with mongodb specific execution options
*/
public class MongoExecutionOptions {
// see https://jewzaam.gitbooks.io/lightblue-specifications/content/language_specification/execution.html
public static final String OPT_READ_PREFERENCE = "readPreference";
public static final String OPT_WRITE_CONCERN = "writeConcern";
public static final String OPT_READ_PREFERENCE_NEAREST = MongoReadPreference.READ_PREFERENCE_NEAREST;
public static final String OPT_READ_PREFERENCE_PRIMARY = MongoReadPreference.READ_PREFERENCE_PRIMARY;
public static final String OPT_READ_PREFERENCE_PRIMARY_PREFERRED = MongoReadPreference.READ_PREFERENCE_PRIMARY_PREFERRED;
public static final String OPT_READ_PREFERENCE_SECONDARY = MongoReadPreference.READ_PREFERENCE_SECONDARY;
public static final String OPT_READ_PREFERENCE_SECONDARY_PREFERRED = MongoReadPreference.READ_PREFERENCE_SECONDARY_PREFERRED;
/**
* Returns a read preference based on the execution options. If the
* execution options don't specify a read preference, returns null
*
* The read preferences can be nearest, primary, primaryPreferred,
* secondary, and secondaryPreferred, with optional tags. The tags are
* specified as:
*
* readPreference ( tags1, tags2,... )
*
* where each 'tags' is a JSON string containing name/value pairs:
*
* { name:value, name:value, ... }
*
*/
public static ReadPreference getReadPreference(ExecutionOptions options) {
if (options != null) {
String value = options.getOptions().get(OPT_READ_PREFERENCE);
if (value != null) {
value = value.trim();
if (value.length() > 0) {
return MongoReadPreference.parse(value);
}
}
}
return null;
}
public static WriteConcern getWriteConcern(ExecutionOptions options) {
if (options != null) {
String value = options.getOptions().get(OPT_WRITE_CONCERN);
if (value != null) {
value = value.trim();
if (value.length() > 0) {
return WriteConcern.valueOf(value);
}
}
}
return null;
}
}