org.socialmusicdiscovery.server.business.service.browse.Result<TrackEntity> result = null;
if (trackId != null) {
// Special case for track since it's not supported to look for Track objects in TrackBrowseService
ResultItem<TrackEntity> track = browseService.findById(trackId);
if (track != null) {
result = new CopyHelper().detachedCopy(new org.socialmusicdiscovery.server.business.service.browse.Result<TrackEntity>(1, new ArrayList<ResultItem<TrackEntity>>(Arrays.asList(track))));
} else {
result = new org.socialmusicdiscovery.server.business.service.browse.Result<TrackEntity>();
}
} else {
// Lookup track objects matching the search criteria
result = new CopyHelper().detachedCopy(browseService.findChildren(criteriaList, new ArrayList<String>(), offset, size, false));
}
// Extract the first playable element for each found track object
for (ResultItem<TrackEntity> resultItem : result.getItems()) {
PlayableElement playableElement = resultItem.getItem().getPlayableElements().iterator().next();