package org.signalml.app.worker.monitor.messages.parsing; import java.util.LinkedHashMap; import java.util.List; import java.util.StringTokenizer; import org.apache.log4j.Logger; import org.signalml.app.model.document.opensignal.ExperimentDescriptor; import org.signalml.app.model.document.opensignal.elements.Amplifier; import org.signalml.app.model.document.opensignal.elements.ExperimentStatus; public class FindEEGAmplifiersResponseJSonReader extends AbstractResponseJSonReader { protected static final Logger logger = Logger.getLogger(FindEEGAmplifiersResponseJSonReader.class); @Override protected String getExperimentsListFieldName() { return "amplifier_list"; } public ExperimentDescriptor parseSingleExperiment(LinkedHashMap<String, Object> map) { ExperimentDescriptor experiment = new ExperimentDescriptor(); experiment.setStatus(ExperimentStatus.NEW); //experiment info LinkedHashMap<String, Object> experimentInfo = (LinkedHashMap<String, Object>) map.get("experiment_info"); String recommendedScenario = (String) experimentInfo.get("launch_file_path"); experiment.setRecommendedScenario(recommendedScenario); StringTokenizer tokenizer = new StringTokenizer(recommendedScenario, "/"); int numberOfTokens = tokenizer.countTokens(); for (int i = 0; i < numberOfTokens; i++) { experiment.setName(tokenizer.nextToken()); } LinkedHashMap<String, Object> amplifierParams = (LinkedHashMap<String, Object>) map.get("amplifier_params"); LinkedHashMap<String, Object> channelsInfo = (LinkedHashMap<String, Object>) amplifierParams.get("channels_info"); Amplifier amplifier = experiment.getAmplifier(); Object additionalParams = amplifierParams.get("additional_params"); amplifier.setAdditionalParameters(additionalParams); amplifier.setName((String) channelsInfo.get("name")); readSamplingFrequencies(channelsInfo, experiment); List<Object> listOfChannels = (List<Object>) channelsInfo.get("channels"); readChannelsList(listOfChannels, experiment); return experiment; } }