/** * */ package org.ihtsdo.otf.refset.service; import java.util.Collections; import java.util.List; import org.ihtsdo.otf.refset.domain.Refset; import org.ihtsdo.otf.refset.exception.EntityNotFoundException; import org.ihtsdo.otf.refset.exception.RefsetServiceException; import org.ihtsdo.otf.refset.graph.RefsetGraphAccessException; import org.ihtsdo.otf.refset.graph.gao.RefsetExportGAO; import org.ihtsdo.otf.refset.graph.gao.RefsetGAO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * This service supports * 1. Refset retrieval * 2. Member retrieval * 3. Refset Header retrieval * 4. Data retrieval for export * Roughly all read operation required by APIs * */ @Service(value = "browseGraphService") public class RefsetGraphService implements RefsetBrowseService { private static final Logger LOGGER = LoggerFactory.getLogger(RefsetGraphService.class); @Autowired private RefsetGAO gao; @Autowired private RefsetExportGAO export; /* (non-Javadoc) * @see org.ihtsdo.otf.refset.service.RefsetBrowseService#getRefsets(java.lang.Integer, java.lang.Integer) * TODO change this to pass a map of query criteria decide by controller */ @Override public List<Refset> getRefsets(Integer page, Integer size, boolean published) throws RefsetServiceException { LOGGER.debug("getRefsets"); List<Refset> refsets = Collections.emptyList(); try { refsets = gao.getRefSets(published, page, size); } catch (RefsetGraphAccessException e) { LOGGER.error("Error in graph db call", e); throw new RefsetServiceException(e.getMessage()); } return refsets; } /* (non-Javadoc) * @see org.ihtsdo.otf.refset.service.RefsetBrowseService#getRefset(java.lang.String) */ @Override public Refset getRefset(String refsetId) throws RefsetServiceException, EntityNotFoundException { LOGGER.debug("getRefset for {}", refsetId); try { return gao.getRefset(refsetId); } catch (RefsetGraphAccessException e) { LOGGER.error("Error in graph db call", e); throw new RefsetServiceException(e.getMessage()); } } public boolean isDescriptionExist(String descrition) throws RefsetServiceException{ LOGGER.debug("checking description name {}", descrition); try { return gao.isDescriptionExist(descrition); } catch (RefsetGraphAccessException e) { LOGGER.error("Error in graph db call", e); throw new RefsetServiceException(e.getMessage()); } } /* (non-Javadoc) * @see org.ihtsdo.otf.refset.service.RefsetBrowseService#getRefset(java.lang.String, java.lang.Integer, java.lang.Integer) */ @Override public Refset getRefset(String refsetId, Integer from, Integer to) throws RefsetServiceException, EntityNotFoundException { LOGGER.debug("getRefset for range from {}, to {}", from, to); if (from < 0 | to < 0 | (from == 0 && to == 0) | from > to) { String msg = String.format("No data available for, Invalid range from - %s to - %s", from, to); throw new EntityNotFoundException(msg); } try { return gao.getRefset(refsetId, from, to); } catch (RefsetGraphAccessException e) { LOGGER.error("Error in graph db call", e); throw new RefsetServiceException(e.getMessage()); } } /* (non-Javadoc) * @see org.ihtsdo.otf.refset.service.RefsetBrowseService#getRefsetHeader(java.lang.String) */ @Override public Refset getRefsetHeader(String refSetId) throws RefsetServiceException, EntityNotFoundException { LOGGER.debug("getRefsetHeader for refSetId {}", refSetId); try { return gao.getRefsetHeader(refSetId); } catch (RefsetGraphAccessException e) { LOGGER.error("Error in graph db call", e); throw new RefsetServiceException(e.getMessage()); } } /* (non-Javadoc) * @see org.ihtsdo.otf.refset.service.RefsetBrowseService#getRefset(java.lang.String) */ @Override public Refset getRefsetForExport(String refsetId) throws RefsetServiceException, EntityNotFoundException { LOGGER.debug("getRefsetForExport for {}", refsetId); try { return export.getRefset(refsetId); } catch (RefsetGraphAccessException e) { LOGGER.error("Error in graph db call", e); throw new RefsetServiceException(e.getMessage()); } } }