001package org.hl7.fhir.utilities.validation;
002
003
004public class ValidationOptions {
005  public enum ValueSetMode {
006    ALL_CHECKS, CHECK_MEMERSHIP_ONLY, NO_MEMBERSHIP_CHECK
007  }
008
009  private String language;
010  private boolean useServer = true;
011  private boolean useClient = true;
012  private boolean guessSystem = false;
013  private ValueSetMode valueSetMode = ValueSetMode.ALL_CHECKS;
014
015  public ValidationOptions() {
016    super();
017  }
018
019  public ValidationOptions(String language) {
020    super();
021    this.language = language;
022  }
023
024  public String getLanguage() {
025    return language;
026  }
027
028  
029  public boolean isUseServer() {
030    return useServer;
031  }
032
033  public boolean isUseClient() {
034    return useClient;
035  }
036
037  public boolean isGuessSystem() {
038    return guessSystem;
039  }
040  
041  private ValidationOptions copy() {
042    ValidationOptions n = new ValidationOptions(language);
043    n.useServer = useServer;
044    n.useClient = useClient;
045    n.guessSystem = guessSystem;    
046    return n;
047  }
048  
049  public ValidationOptions setLanguage(String language) {
050    ValidationOptions n = this.copy();
051    n.language = language;
052    return n;
053  }
054
055
056  public ValidationOptions noServer() {
057    ValidationOptions n = this.copy();
058    n.useServer = false;
059    return n;
060  }
061  
062  public ValidationOptions noClient() {
063    ValidationOptions n = this.copy();
064    n.useClient = false;
065    return n;
066  }
067
068  public ValidationOptions guessSystem() {
069    ValidationOptions n = this.copy();
070    n.guessSystem = false;
071    return n;
072  }
073  
074
075  public String toJson() {
076    return "\"lang\":\""+language+"\", \"useServer\":\""+Boolean.toString(useServer)+"\", \"useClient\":\""+Boolean.toString(useClient)+"\", \"guessSystem\":\""+Boolean.toString(guessSystem)+"\", \"valueSetMode\":\""+valueSetMode.toString()+"\"";
077  }
078
079  public static ValidationOptions defaults() {
080    return new ValidationOptions("en-US");
081  }
082
083  public ValidationOptions checkValueSetOnly() {
084    ValidationOptions n = this.copy();
085    n.valueSetMode = ValueSetMode.CHECK_MEMERSHIP_ONLY;
086    return n;
087  }
088
089  public ValidationOptions noCheckValueSetMembership() {
090    ValidationOptions n = this.copy();
091    n.valueSetMode = ValueSetMode.NO_MEMBERSHIP_CHECK;
092    return n;
093  }
094
095  public ValueSetMode getValueSetMode() {
096    return valueSetMode;
097  }
098
099  
100}