package net.petrikainulainen.spring.datasolr.todo.service; import net.petrikainulainen.spring.datasolr.todo.document.TodoDocument; import net.petrikainulainen.spring.datasolr.todo.model.Todo; import net.petrikainulainen.spring.datasolr.todo.repository.solr.TodoDocumentRepository; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; /** * @author Petri Kainulainen */ @Service public class RepositoryTodoIndexService implements TodoIndexService { private static final Logger LOGGER = LoggerFactory.getLogger(RepositoryTodoIndexService.class); @Resource private TodoDocumentRepository repository; @Transactional @Override public void addToIndex(Todo todoEntry) { LOGGER.debug("Saving a todo entry with information: {}", todoEntry); TodoDocument document = TodoDocument.getBuilder(todoEntry.getId(), todoEntry.getTitle()) .description(todoEntry.getDescription()) .build(); LOGGER.debug("Saving document with information: {}", document); repository.save(document); } @Override public long countSearchResults(String searchTerm) { LOGGER.debug("Getting search result count for search term: {}", searchTerm); return repository.count(searchTerm); } @Transactional @Override public void deleteFromIndex(Long id) { LOGGER.debug("Deleting an existing document with id: {}", id); repository.delete(id.toString()); } @Override public List<TodoDocument> search(String searchTerm, Pageable page) { LOGGER.debug("Searching documents with search term: {} and page: {}", searchTerm, page); return repository.search(searchTerm, page); } @Transactional @Override public void update(Todo todoEntry) { LOGGER.debug("Updating the information of a todo entry: {}", todoEntry); repository.update(todoEntry); } }