package com.worktajm.service.impl;
import com.worktajm.service.ProjectService;
import com.worktajm.domain.Project;
import com.worktajm.repository.ProjectRepository;
import com.worktajm.repository.search.ProjectSearchRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.stereotype.Service;
import javax.inject.Inject;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.StreamSupport;
import static org.elasticsearch.index.query.QueryBuilders.*;
/**
* Service Implementation for managing Project.
*/
@Service
@Transactional
public class ProjectServiceImpl implements ProjectService{
private final Logger log = LoggerFactory.getLogger(ProjectServiceImpl.class);
@Inject
private ProjectRepository projectRepository;
@Inject
private ProjectSearchRepository projectSearchRepository;
/**
* Save a project.
* @return the persisted entity
*/
public Project save(Project project) {
log.debug("Request to save Project : {}", project);
Project result = projectRepository.save(project);
projectSearchRepository.save(result);
return result;
}
/**
* get all the projects.
* @return the list of entities
*/
@Transactional(readOnly = true)
public Page<Project> findAll(Pageable pageable) {
log.debug("Request to get all Projects");
Page<Project> result = projectRepository.findAll(pageable);
return result;
}
/**
* get one project by id.
* @return the entity
*/
@Transactional(readOnly = true)
public Project findOne(Long id) {
log.debug("Request to get Project : {}", id);
Project project = projectRepository.findOne(id);
return project;
}
/**
* delete the project by id.
*/
public void delete(Long id) {
log.debug("Request to delete Project : {}", id);
projectRepository.delete(id);
projectSearchRepository.delete(id);
}
/**
* search for the project corresponding
* to the query.
*/
@Transactional(readOnly = true)
public List<Project> search(String query) {
log.debug("REST request to search Projects for query {}", query);
return StreamSupport
.stream(projectSearchRepository.search(queryStringQuery(query)).spliterator(), false)
.collect(Collectors.toList());
}
}