Skip to content

Commit

Permalink
refactor: 좌표 보낼때는 배열형태로 지정
Browse files Browse the repository at this point in the history
  • Loading branch information
Changha-dev committed May 1, 2024
1 parent d5f4839 commit cde4e57
Show file tree
Hide file tree
Showing 9 changed files with 103 additions and 13 deletions.
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package com.seoultech.sanEseo.post.application.service;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.seoultech.sanEseo.post.domain.Category;
import com.seoultech.sanEseo.image.PostImage;
import com.seoultech.sanEseo.public_api.GetCoordinateResponse;
import com.seoultech.sanEseo.public_api.CoordinateRequest;

import com.seoultech.sanEseo.public_api.GetGeometryResponse;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
Expand Down Expand Up @@ -43,11 +45,22 @@ public class AddPostRequest {
private Long districtId;

@NotNull(message = "좌표 정보는 필수입니다.")
private GetGeometryResponse geometry;
private CoordinateRequest geometry;

// 생성자, 게터, 세터 등 추가 필요

public AddPostRequest(Category category, String title, String subTitle, String description, String level, String time, String distance, String courseDetail, String transportation, Long districtId, GetGeometryResponse geometry) {
// 생성자에 @JsonProperty 어노테이션 추가
public AddPostRequest(@JsonProperty("category") Category category,
@JsonProperty("title") String title,
@JsonProperty("subTitle") String subTitle,
@JsonProperty("description") String description,
@JsonProperty("level") String level,
@JsonProperty("time") String time,
@JsonProperty("distance") String distance,
@JsonProperty("courseDetail") String courseDetail,
@JsonProperty("transportation") String transportation,
@JsonProperty("districtId") Long districtId,
@JsonProperty("geometry") CoordinateRequest geometry) {
this.category = category;
this.title = title;
this.subTitle = subTitle;
Expand All @@ -60,4 +73,8 @@ public AddPostRequest(Category category, String title, String subTitle, String d
this.districtId = districtId;
this.geometry = geometry;
}




}
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,7 @@
import com.seoultech.sanEseo.post.domain.Post;
import com.seoultech.sanEseo.post_district.domain.PostDistrict;
import com.seoultech.sanEseo.post_district.application.port.PostDistrictPort;
import com.seoultech.sanEseo.public_api.Coordinate;
import com.seoultech.sanEseo.public_api.CoordinateService;
import com.seoultech.sanEseo.public_api.GetCoordinateResponse;
import com.seoultech.sanEseo.public_api.GetGeometryResponse;
import com.seoultech.sanEseo.public_api.*;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

Expand Down Expand Up @@ -46,7 +43,7 @@ public Post addPost(AddPostRequest request) {
request.getLevel(), request.getTime(), request.getDistance(), request.getCourseDetail(),
request.getTransportation());

GetGeometryResponse geometry = request.getGeometry();
CoordinateRequest geometry = request.getGeometry();
coordinateService.saveCoordinate(geometry, post);

postPort.save(post); // Post 저장
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import com.seoultech.sanEseo.post.domain.Category;
import com.seoultech.sanEseo.image.PostImage;
import com.seoultech.sanEseo.public_api.GetGeometryResponse;
import com.seoultech.sanEseo.public_api.CoordinateRequest;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Getter;
Expand Down Expand Up @@ -44,9 +44,9 @@ public class UpdatePostRequest {
private Long districtId;

@NotNull(message = "좌표 정보는 필수입니다.")
private GetGeometryResponse geometry;
private CoordinateRequest geometry;

public UpdatePostRequest(Category category, String title, String subTitle, String description, String level, String time, String distance, String courseDetail, String transportation, List<PostImage> images, Long districtId, GetGeometryResponse geometry) {
public UpdatePostRequest(Category category, String title, String subTitle, String description, String level, String time, String distance, String courseDetail, String transportation, List<PostImage> images, Long districtId, CoordinateRequest geometry) {
this.category = category;
this.title = title;
this.subTitle = subTitle;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.seoultech.sanEseo.public_api;

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.List;

@AllArgsConstructor
@Getter
public class CoordinateRequest {

private String name;
private String type;

private List<List<Double>> coordinates;

}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public class CoordinateService {
private CoordinateRepository coordinateRepository;

@Transactional
public void saveCoordinate(GetGeometryResponse geometryResponse, Post post) {
public void saveCoordinate(CoordinateRequest geometryResponse, Post post) {
Coordinate coordinate = new Coordinate(
geometryResponse.getName(),
geometryResponse.getType(),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.seoultech.sanEseo.public_api;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.JsonToken;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonNode;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class CoordinatesDeserializer extends JsonDeserializer<List<List<Double>>> {
@Override
public List<List<Double>> deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
List<List<Double>> coordinates = new ArrayList<>();
while (p.nextToken() != JsonToken.END_ARRAY) {
JsonNode node = p.getCodec().readTree(p);
double lat = node.get("lat").asDouble();
double lng = node.get("lng").asDouble();
List<Double> coordPair = new ArrayList<>();
coordPair.add(lat);
coordPair.add(lng);
coordinates.add(coordPair);
}
return coordinates;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.seoultech.sanEseo.public_api;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
import java.util.List;

public class CoordinatesSerializer extends JsonSerializer<List<List<Double>>> {
@Override
public void serialize(List<List<Double>> value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
gen.writeStartArray();
for (List<Double> coord : value) {
gen.writeStartObject();
gen.writeNumberField("lat", coord.get(0));
gen.writeNumberField("lng", coord.get(1));
gen.writeEndObject();
}
gen.writeEndArray();
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.seoultech.sanEseo.public_api;


import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import lombok.AllArgsConstructor;
import lombok.Getter;

Expand All @@ -11,5 +12,7 @@
public class GetCoordinateResponse {

String type;

@JsonSerialize(using = CoordinatesSerializer.class)
List<List<Double>> coordinates;
}
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ public void addPublicData(int dataIndex){
safeSubstring(getCourseResponse.getDescription(), 0, 255),
getCourseResponse.getLevel(), getCourseResponse.getTime(),
getCourseResponse.getDistance(), safeSubstring(getCourseResponse.getCourseDetail(), 0 ,255),
getCourseResponse.getTransportation(), id, getGeometryResponse));
getCourseResponse.getTransportation(), id, convertToCoordinateRequest(getGeometryResponse)));


}
Expand Down Expand Up @@ -200,6 +200,11 @@ public boolean isNameSimilar(String name1, String name2) {
return score > 0.95; // 유사도 점수가 0.85 이상이면 유사하다고 판단
}

public CoordinateRequest convertToCoordinateRequest(GetGeometryResponse geometry){
return new CoordinateRequest(geometry.getName(), geometry.getType(), geometry.getCoordinates());

}



}

0 comments on commit cde4e57

Please sign in to comment.