VolumeBase* AnalyzeVolumeReader::read(const VolumeURL& origin) throw (tgt::FileException, std::bad_alloc) { VolumeBase* result = 0; int volumeId = -1; std::string tmp = origin.getSearchParameter("volumeId"); if (! tmp.empty()) volumeId = stoi(tmp); VolumeCollection* collection = read(origin.getPath(), volumeId); if (collection && collection->size() == 1) { result = collection->first(); } else if (collection && collection->size() > 1) { while(!collection->empty()) { VolumeBase* vh = collection->first(); collection->remove(vh); delete vh; } delete collection; throw tgt::FileException("Only one volume expected", origin.getPath()); } delete collection; return result; }