
001package org.hl7.fhir.r5.utils.structuremap; 002 003import org.hl7.fhir.r5.model.Base; 004import org.hl7.fhir.utilities.CommaSeparatedStringBuilder; 005import org.hl7.fhir.utilities.MarkedToMoveToAdjunctPackage; 006 007import java.util.ArrayList; 008import java.util.List; 009 010@MarkedToMoveToAdjunctPackage 011public class Variables { 012 private List<Variable> list = new ArrayList<Variable>(); 013 014 public void add(VariableMode mode, String name, Base object) { 015 Variable vv = null; 016 for (Variable v : list) 017 if ((v.getMode() == mode) && v.getName().equals(name)) 018 vv = v; 019 if (vv != null) 020 list.remove(vv); 021 list.add(new Variable(mode, name, object)); 022 } 023 024 public Variables copy() { 025 Variables result = new Variables(); 026 result.list.addAll(list); 027 return result; 028 } 029 030 public Base get(VariableMode mode, String name) { 031 for (Variable v : list) 032 if ((v.getMode() == mode) && v.getName().equals(name)) 033 return v.getObject(); 034 return null; 035 } 036 037 public String summary() { 038 CommaSeparatedStringBuilder s = new CommaSeparatedStringBuilder(); 039 CommaSeparatedStringBuilder t = new CommaSeparatedStringBuilder(); 040 CommaSeparatedStringBuilder sh = new CommaSeparatedStringBuilder(); 041 for (Variable v : list) 042 switch (v.getMode()) { 043 case INPUT: 044 s.append(v.summary()); 045 break; 046 case OUTPUT: 047 t.append(v.summary()); 048 break; 049 case SHARED: 050 sh.append(v.summary()); 051 break; 052 } 053 return "source variables [" + s.toString() + "], target variables [" + t.toString() + "], shared variables [" + sh.toString() + "]"; 054 } 055 056}