StationServiceImpl.java
package fdse.microservice.service;
import edu.fudan.common.util.Response;
import fdse.microservice.entity.*;
import fdse.microservice.repository.StationRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Service;
import java.util.*;
@Service
public class StationServiceImpl implements StationService {
@Autowired
private StationRepository repository;
String success = "Success";
private static final Logger LOGGER = LoggerFactory.getLogger(StationServiceImpl.class);
@Override
public Response create(Station station, HttpHeaders headers) {
if(station.getName().isEmpty()) {
StationServiceImpl.LOGGER.error("[create][Create station error][Name not specify]");
return new Response<>(0, "Name not specify", station);
}
if (repository.findByName(station.getName()) == null) {
station.setStayTime(station.getStayTime());
repository.save(station);
return new Response<>(1, "Create success", station);
}
StationServiceImpl.LOGGER.error("[create][Create station error][Already exists][StationId: {}]",station.getId());
return new Response<>(0, "Already exists", station);
}
@Override
public boolean exist(String stationName, HttpHeaders headers) {
boolean result = false;
if (repository.findByName(stationName) != null) {
result = true;
}
return result;
}
@Override
public Response update(Station info, HttpHeaders headers) {
Optional<Station> op = repository.findById(info.getId());
if (!op.isPresent()) {
StationServiceImpl.LOGGER.error("[update][Update station error][Station not found][StationId: {}]",info.getId());
return new Response<>(0, "Station not exist", null);
} else {
Station station = op.get();
station.setName(info.getName());
station.setStayTime(info.getStayTime());
repository.save(station);
return new Response<>(1, "Update success", station);
}
}
@Override
public Response delete(String stationsId, HttpHeaders headers) {
Optional<Station> op = repository.findById(stationsId);
if (op.isPresent()) {
Station station = op.get();
repository.delete(station);
return new Response<>(1, "Delete success", station);
}
StationServiceImpl.LOGGER.error("[delete][Delete station error][Station not found][StationId: {}]",stationsId);
return new Response<>(0, "Station not exist", null);
}
@Override
public Response query(HttpHeaders headers) {
List<Station> stations = repository.findAll();
if (stations != null && !stations.isEmpty()) {
return new Response<>(1, "Find all content", stations);
} else {
StationServiceImpl.LOGGER.warn("[query][Query stations warn][Find all stations: {}]","No content");
return new Response<>(0, "No content", null);
}
}
@Override
public Response queryForId(String stationName, HttpHeaders headers) {
Station station = repository.findByName(stationName);
if (station != null) {
return new Response<>(1, success, station.getId());
} else {
StationServiceImpl.LOGGER.warn("[queryForId][Find station id warn][Station not found][StationName: {}]",stationName);
return new Response<>(0, "Not exists", stationName);
}
}
@Override
public Response queryForIdBatch(List<String> nameList, HttpHeaders headers) {
Map<String, String> result = new HashMap<>();
List<Station> stations = repository.findByNames(nameList);
Map<String, String> stationMap = new HashMap<>();
for(Station s: stations) {
stationMap.put(s.getName(), s.getId());
}
for(String name: nameList){
result.put(name, stationMap.get(name));
}
if (!result.isEmpty()) {
return new Response<>(1, success, result);
} else {
StationServiceImpl.LOGGER.warn("[queryForIdBatch][Find station ids warn][Stations not found][StationNameNumber: {}]",nameList.size());
return new Response<>(0, "No content according to name list", null);
}
}
@Override
public Response queryById(String stationId, HttpHeaders headers) {
Optional<Station> station = repository.findById(stationId);
if (station.isPresent()) {
return new Response<>(1, success, station.get().getName());
} else {
StationServiceImpl.LOGGER.error("[queryById][Find station name error][Station not found][StationId: {}]",stationId);
return new Response<>(0, "No that stationId", stationId);
}
}
@Override
public Response queryByIdBatch(List<String> idList, HttpHeaders headers) {
ArrayList<String> result = new ArrayList<>();
for (int i = 0; i < idList.size(); i++) {
Optional<Station> stationOld = repository.findById(idList.get(i));
if(stationOld.isPresent()){
Station station=stationOld.get();
result.add(station.getName());
}
}
if (!result.isEmpty()) {
return new Response<>(1, success, result);
} else {
StationServiceImpl.LOGGER.error("[queryByIdBatch][Find station names error][Stations not found][StationIdNumber: {}]",idList.size());
return new Response<>(0, "No stationNamelist according to stationIdList", result);
}
}
}