/**
* Copyright Intellectual Reserve, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.familysearch.api.client.util;
import org.familysearch.platform.artifacts.ArtifactType;
import org.familysearch.platform.ct.MatchCollection;
import org.familysearch.platform.ct.MatchStatus;
import org.gedcomx.common.URI;
import org.gedcomx.rs.client.options.HeaderParameter;
import org.gedcomx.rs.client.options.QueryParameter;
import org.gedcomx.types.ConfidenceLevel;
/**
* @author Ryan Heaton
*/
public class FamilySearchOptions {
public static final String CANDIDATE_ID = "candidateId";
public static final String COLLECTION = "collection";
public static final String CONFIDENCE = "confidence";
public static final String DEFAULT = "default";
public static final String DESCRIPTION = "description";
public static final String FILENAME = "filename";
public static final String FILTER = "filter";
public static final String INCLUDE_MARRIAGE_DETAILS = "marriageDetails";
public static final String INCLUDE_PERSON_DETAILS = "personDetails";
public static final String INCLUDE_PERSONS = "persons";
public static final String PERSON_NAME = "personName";
public static final String PIDS = "pids";
public static final String SPOUSE_ID = "spouse";
public static final String STATUS = "status";
public static final String TITLE = "title";
public static final String TYPE = "type";
private FamilySearchOptions(){}
public static QueryParameter candidateId(String... id) {
return new QueryParameter(true, CANDIDATE_ID, id);
}
public static QueryParameter collection(URI value) {
return new QueryParameter(true, COLLECTION, value.toString());
}
public static QueryParameter collection(MatchCollection value) {
return collection(value.toQNameURI());
}
public static QueryParameter confidence(ConfidenceLevel confidence) {
return new QueryParameter(true, CONFIDENCE, confidence.toQNameURI().toString());
}
public static QueryParameter defaultUri(URI defaultUri) {
return new QueryParameter(true, DEFAULT, defaultUri.toString());
}
public static QueryParameter description(String description) {
return new QueryParameter(true, DESCRIPTION, description);
}
public static QueryParameter filename(String filename) {
return new QueryParameter(true, FILENAME, filename);
}
public static QueryParameter title(String title) {
return new QueryParameter(true, TITLE, title);
}
public static QueryParameter personName(String personName) {
return new QueryParameter(true, PERSON_NAME, personName);
}
public static QueryParameter pids(String joinedPids) {
return new QueryParameter(true, PIDS, joinedPids);
}
public static QueryParameter artifactType(ArtifactType type) {
return new QueryParameter(true, TYPE, type.toQNameURI().toString());
}
public static QueryParameter mergeAnalysisFilter(MergeAnalysisFilter filter) {
return new QueryParameter(true, FILTER, filter.name());
}
public static QueryParameter includePersons() {
return new QueryParameter(true, INCLUDE_PERSONS, "true");
}
public static QueryParameter spouseId(String spouseId) {
return new QueryParameter(true, SPOUSE_ID, spouseId);
}
public static QueryParameter includePersonDetails() {
return new QueryParameter(true, INCLUDE_PERSON_DETAILS, "true");
}
public static QueryParameter includeMarriageDetails() {
return new QueryParameter(true, INCLUDE_MARRIAGE_DETAILS, "true");
}
public static QueryParameter matchStatus(MatchStatus status) {
return new QueryParameter(false, STATUS, status.toQNameURI().toString());
}
public static HeaderParameter reason(String reason) {
return new HeaderParameter(true, "X-Reason", reason);
}
}