
001package org.hl7.fhir.r5.utils.structuremap; 002 003import org.hl7.fhir.utilities.CommaSeparatedStringBuilder; 004import org.hl7.fhir.utilities.MarkedToMoveToAdjunctPackage; 005import org.hl7.fhir.utilities.StringPair; 006import org.hl7.fhir.utilities.xhtml.XhtmlNode; 007 008import java.util.ArrayList; 009import java.util.HashMap; 010import java.util.List; 011import java.util.Map; 012 013@MarkedToMoveToAdjunctPackage 014public class TargetWriter { 015 private Map<String, String> newResources = new HashMap<String, String>(); 016 private List<StringPair> assignments = new ArrayList<StringPair>(); 017 private List<StringPair> keyProps = new ArrayList<StringPair>(); 018 private CommaSeparatedStringBuilder txt = new CommaSeparatedStringBuilder(); 019 020 public void newResource(String var, String name) { 021 newResources.put(var, name); 022 txt.append("new " + name); 023 } 024 025 public void valueAssignment(String context, String desc) { 026 assignments.add(new StringPair(context, desc)); 027 txt.append(desc); 028 } 029 030 public void keyAssignment(String context, String desc) { 031 keyProps.add(new StringPair(context, desc)); 032 txt.append(desc); 033 } 034 035 public void commit(XhtmlNode xt) { 036 if (newResources.size() == 1 && assignments.size() == 1 && newResources.containsKey(assignments.get(0).getName()) && keyProps.size() == 1 && newResources.containsKey(keyProps.get(0).getName())) { 037 xt.addText("new " + assignments.get(0).getValue() + " (" + keyProps.get(0).getValue().substring(keyProps.get(0).getValue().indexOf(".") + 1) + ")"); 038 } else if (newResources.size() == 1 && assignments.size() == 1 && newResources.containsKey(assignments.get(0).getName()) && keyProps.size() == 0) { 039 xt.addText("new " + assignments.get(0).getValue()); 040 } else { 041 xt.addText(txt.toString()); 042 } 043 } 044}