/** * create a string of a mapping pair for the target VCF version * @param keyValues a mapping of the key->value pairs to output * @return a string, correctly formatted */ public static String toStringEncoding(Map<String, ? extends Object> keyValues) { StringBuilder builder = new StringBuilder(); builder.append('<'); boolean start = true; for (Map.Entry<String,?> entry : keyValues.entrySet()) { if (start) start = false; else builder.append(','); if ( entry.getValue() == null ) throw new TribbleException.InternalCodecException("Header problem: unbound value at " + entry + " from " + keyValues); builder.append(entry.getKey()); builder.append('='); builder.append(entry.getValue().toString().contains(",") || entry.getValue().toString().contains(" ") || entry.getKey().equals("Description") ? "\""+ escapeQuotes(entry.getValue().toString()) + "\"" : entry.getValue()); } builder.append('>'); return builder.toString(); }
/** * create a string of a mapping pair for the target VCF version * @param keyValues a mapping of the key->value pairs to output * @return a string, correctly formatted */ public static String toStringEncoding(Map<String, ? extends Object> keyValues) { StringBuilder builder = new StringBuilder(); builder.append('<'); boolean start = true; for (Map.Entry<String,?> entry : keyValues.entrySet()) { if (start) start = false; else builder.append(','); if ( entry.getValue() == null ) throw new TribbleException.InternalCodecException("Header problem: unbound value at " + entry + " from " + keyValues); builder.append(entry.getKey()); builder.append('='); builder.append(entry.getValue().toString().contains(",") || entry.getValue().toString().contains(" ") || entry.getKey().equals("Description") || entry.getKey().equals("Source") || // As per VCFv4.2, Source and Version should be surrounded by double quotes entry.getKey().equals("Version") ? "\""+ escapeQuotes(entry.getValue().toString()) + "\"" : entry.getValue()); } builder.append('>'); return builder.toString(); }