in server/src/main/java/com/epam/indigoeln/core/chemistry/sdf/SdUnit.java [431:474]
private Map<String, String> parseInfo(String sdInfo, List<String> origNames) {
Map<String, String> out = new HashMap<>();
try {
String attrPortion = sdInfo.substring(sdInfo.indexOf(MOLECULE_PATTERN) + 6, sdInfo.indexOf("$$$$") + 4).trim();
String thisName;
String thisOrigName;
String thisValue;
do {
if (attrPortion.indexOf(">") != 0 || attrPortion.indexOf("<") < 1) {
break;
}
attrPortion = attrPortion.substring(attrPortion.indexOf("<") + 1);
thisName = attrPortion.substring(0, attrPortion.indexOf(">")).trim();
thisOrigName = thisName;
thisName = thisName.toUpperCase(Locale.getDefault());
attrPortion = attrPortion.substring(attrPortion.indexOf("\n")).trim();
if (attrPortion.contains(">")) {
thisValue = attrPortion.substring(0, attrPortion.indexOf("\n>")).trim();
} else if (attrPortion.trim().indexOf(">") == 0 && attrPortion.contains("<")) {
thisValue = "";
} else {
thisValue = attrPortion.substring(0, attrPortion.indexOf("$$$$")).trim();
}
parseInfoAddOrigNames(out, origNames, thisOrigName, thisName, thisValue);
if (attrPortion.indexOf("> <") != 0 && attrPortion.indexOf("> <") != 0
&& attrPortion.contains("\n>")) {
attrPortion = attrPortion.substring(attrPortion.indexOf("\n>") + 1);
}
} while (true);
} catch (Exception e) {
throw new IllegalArgumentException("Error parsing sdFile attributes", e);
}
return out;
}