package qa.qcri.aidr.data.service; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import qa.qcri.aidr.data.dao.CollectionSummaryDao; import qa.qcri.aidr.data.model.CollectionSummaryInfo; import qa.qcri.aidr.data.persistence.entity.CollectionSummary; @Service public class CollectionSummaryService { private static final String NA_STRING = "n/a"; private static final String RUNNING_STATUS = "RUNNING"; private static final String RUNNING_WARNING_STATUS = "RUNNING_WARNING"; private static final String STOPPED_STATUS = "STOPPED"; @Autowired private CollectionSummaryDao collectionSummaryDao; public List<CollectionSummaryInfo> fetchAllCollections() { List<CollectionSummary> collectionSummaries = collectionSummaryDao.getAllCollections(); List<CollectionSummaryInfo> collectionSummaryInfos = new ArrayList<CollectionSummaryInfo>(); for(CollectionSummary collectionSummary : collectionSummaries) { collectionSummaryInfos.add(adaptCollectionSummaryToCollectionSummaryInfo(collectionSummary)); } return collectionSummaryInfos; } public void saveUpdateCollectionSummary(CollectionSummaryInfo collectionSummaryInfo) { CollectionSummary summary = new CollectionSummary(); collectionSummaryDao.saveUpdateCollectionSummary(summary); } public void saveUpdateCollectionSummary(List<CollectionSummaryInfo> collectionSummaryInfos) { List<CollectionSummary> listToSave = new ArrayList<CollectionSummary>(); for(CollectionSummaryInfo summaryInfo : collectionSummaryInfos) { CollectionSummary collectionSummary = collectionSummaryDao.getByCode(summaryInfo.getCode()); collectionSummary = adaptCollectionSummaryInfoToCollectionSummary(summaryInfo, collectionSummary); System.out.println("Fetched Collection from aidr: "+ summaryInfo); System.out.println("Populated Collectionsr: "+ collectionSummary); listToSave.add(collectionSummary); } collectionSummaryDao.saveUpdateCollectionSummaryList(listToSave); } private CollectionSummary adaptCollectionSummaryInfoToCollectionSummary(CollectionSummaryInfo summaryInfo, CollectionSummary collectionSummary) { if(collectionSummary == null) { collectionSummary = new CollectionSummary(); collectionSummary.setCode(summaryInfo.getCode()); collectionSummary.setCollectionCreationDate(summaryInfo.getCollectionCreationDate()); } collectionSummary.setName(summaryInfo.getName()); collectionSummary.setTotalCount(summaryInfo.getTotalCount()); collectionSummary.setCurator(summaryInfo.getCurator()); collectionSummary.setGeo(summaryInfo.getGeo()); collectionSummary.setLabelCount(summaryInfo.getLabelCount()); collectionSummary.setStartDate(summaryInfo.getStartDate()); collectionSummary.setEndDate(summaryInfo.getEndDate()); collectionSummary.setKeywords(summaryInfo.getKeywords()); collectionSummary.setStatus(summaryInfo.getStatus()); collectionSummary.setLanguage(summaryInfo.getLanguage()); collectionSummary.setPubliclyListed(summaryInfo.isPubliclyListed()); collectionSummary.setProvider(summaryInfo.getProvider()); collectionSummary.setHumanTaggedCount(summaryInfo.getHumanTaggedCount()); collectionSummary.setMachineTagCount(summaryInfo.getMachineTagCount()); collectionSummary.setCrisisType(summaryInfo.getCrisisType()); return collectionSummary; } private CollectionSummaryInfo adaptCollectionSummaryToCollectionSummaryInfo(CollectionSummary collectionSummary) { String lang = NA_STRING; CollectionSummaryInfo summaryInfo = new CollectionSummaryInfo(); summaryInfo.setCode(collectionSummary.getCode()); summaryInfo.setName(collectionSummary.getName()); summaryInfo.setCurator(collectionSummary.getCurator()); summaryInfo.setTotalCount(collectionSummary.getTotalCount()); summaryInfo.setLabelCount(collectionSummary.getLabelCount()); summaryInfo.setStartDate(collectionSummary.getStartDate()); summaryInfo.setEndDate(collectionSummary.getEndDate()); summaryInfo.setLanguage(collectionSummary.getLanguage()); summaryInfo.setCollectionCreationDate(collectionSummary.getCollectionCreationDate()); summaryInfo.setKeywords(collectionSummary.getKeywords() != null ? collectionSummary.getKeywords() : NA_STRING); summaryInfo.setGeo(collectionSummary.getGeo()); if(collectionSummary.getStatus() != null && (RUNNING_STATUS.equals(collectionSummary.getStatus()) || RUNNING_WARNING_STATUS.equals(collectionSummary.getStatus()))) { summaryInfo.setStatus(RUNNING_STATUS); } else { summaryInfo.setStatus(STOPPED_STATUS); if(summaryInfo.getEndDate() == null) { summaryInfo.setEndDate(new Date()); } } if (collectionSummary.getLanguage() != null && !collectionSummary.getLanguage().isEmpty()) { lang = collectionSummary.getLanguage(); } summaryInfo.setLanguage(lang); summaryInfo.setPubliclyListed(collectionSummary.isPubliclyListed()); summaryInfo.setProvider(collectionSummary.getProvider()); summaryInfo.setHumanTaggedCount(collectionSummary.getHumanTaggedCount()); summaryInfo.setMachineTagCount(collectionSummary.getMachineTagCount()); summaryInfo.setCrisisType(collectionSummary.getCrisisType()); return summaryInfo; } }