diff --git a/class.png b/class.png index a36d4a5..f572945 100644 --- a/class.png +++ b/class.png Binary files differ diff --git a/class.pu b/class.pu index 1e4f3c4..da9f304 100644 --- a/class.pu +++ b/class.pu @@ -2,11 +2,21 @@ database "h2" as db { entity city { - citycode : String - cityname : String - path : String - lng : Double - lat : Double + + id : BIGINT + citycode : VARCHAR(255) + cityname : VARCHAR(255) + folder : VARCHAR(255) + lng : VARCHAR(255) + lat :VARCHAR(255) + } + entity site_user { + + id : BIGINT + active : BOOLEAN + admin : BOOLEAN + email : VARCHAR(255) + password : VARCHAR(255) + role :VARCHAR(255) + username :VARCHAR(20) } } note bottom of db : spring.datasource.url=jdbc:h2:./taskdb\nspring.jpa.hibernate.ddl-auto=update @@ -40,6 +50,7 @@ - role : String - active : boolean } +SiteUser .. site_user class UniqueLoginValidator <> { - userRepository : SiteUserRepository @@ -67,12 +78,24 @@ + id : Long - citycode : String - cityname : String - - path : String - - lng : Double - - lat : Double + - folder : String + - lng : String + - lat : String + + setLng(BigDecimal) + + setLat(BigDecimal) + + setCoordinates(lng,lat) + + getCoordinates() : Coordinates + + toString() : String } City .. city +class Coordinates { + - lng : Double + - lat : Double + + toString() : String +} +City .> Coordinates + class CityIndex { - site : String - list : List[] @@ -80,8 +103,6 @@ CityIndex *-- City interface CityRepository <> { - findByCitycode(String) - deleteByCitycode(String) } CityRepository <|-- City diff --git a/src/main/java/osm/surveyor/task/city/DataLoader.java b/src/main/java/osm/surveyor/task/city/DataLoader.java index 4ffa147..f2bce90 100644 --- a/src/main/java/osm/surveyor/task/city/DataLoader.java +++ b/src/main/java/osm/surveyor/task/city/DataLoader.java @@ -9,8 +9,10 @@ import com.fasterxml.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; +import osm.surveyor.task.city.model.CitiesJson; import osm.surveyor.task.city.model.City; -import osm.surveyor.task.city.model.CityIndex; +import osm.surveyor.task.city.model.CityJson; +import osm.surveyor.task.city.model.Coordinates; @RequiredArgsConstructor @Component @@ -22,16 +24,18 @@ // 「src/main/resources/static/city/index.json」を読み込む try (InputStream is = new ClassPathResource("static/city/index.json").getInputStream()) { - - /* - ObjectMapper mapper = new ObjectMapper(); - CityIndex index = mapper.readValue(is, CityIndex.class); - for (City city : index.getList()) { + CitiesJson pojo = new ObjectMapper().readValue(is, CitiesJson.class); + for (CityJson citiesJson : pojo.getList()) { + City city = new City(); + city.setCitycode(citiesJson.getCode()); + city.setCityname(citiesJson.getName()); + city.setFolder(citiesJson.getPath()); + + Coordinates coordinates = citiesJson.toCoordinates(); + city.setCoordinates(coordinates.getLng(), coordinates.getLat()); + repository.save(city); } - */ - } } - -} +} \ No newline at end of file diff --git a/src/main/java/osm/surveyor/task/city/model/CitiesJson.java b/src/main/java/osm/surveyor/task/city/model/CitiesJson.java new file mode 100644 index 0000000..64ce4ee --- /dev/null +++ b/src/main/java/osm/surveyor/task/city/model/CitiesJson.java @@ -0,0 +1,17 @@ +package osm.surveyor.task.city.model; + +import java.util.ArrayList; +import java.util.List; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class CitiesJson { + + private String site; + + private List list = new ArrayList<>(); + +} diff --git a/src/main/java/osm/surveyor/task/city/model/City.java b/src/main/java/osm/surveyor/task/city/model/City.java index 0e4e7be..a4fde59 100644 --- a/src/main/java/osm/surveyor/task/city/model/City.java +++ b/src/main/java/osm/surveyor/task/city/model/City.java @@ -1,5 +1,6 @@ package osm.surveyor.task.city.model; +import java.math.BigDecimal; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; @@ -13,6 +14,7 @@ @Setter @Entity public class City { + @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Long id; @@ -26,7 +28,54 @@ @NotBlank private String folder; - private Double lng; + @NotBlank + private String lng = "0.0"; - private Double lat; + @NotBlank + private String lat = "0.0"; + + public void setLng(String str) { + this.lng = str; + } + + public void setLng(BigDecimal dec) { + this.lng = dec.toString(); + } + + public void setLat(String str) { + this.lat = str; + } + + public void setLat(BigDecimal dec) { + this.lat = dec.toString(); + } + + public void setCoordinates(BigDecimal lng, BigDecimal lat) { + setLng(lng); + setLat(lat); + } + + public void setCoordinates(String lng, String lat) { + setLng(lng); + setLat(lat); + } + + public Coordinates getCoordinates() { + Coordinates coordinates = new Coordinates(); + coordinates.setLng(getLng()); + coordinates.setLat(getLat()); + return coordinates; + } + + @Override + public String toString() { + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"code\":\""+ getCitycode() +"\""); + sb.append(",\"name\":\""+ getCityname() +"\""); + sb.append(",\"path\":\""+ getFolder() +"\""); + sb.append(",\"coordinates\":"+ getCoordinates().toString()); + sb.append("}"); + return sb.toString(); + } } diff --git a/src/main/java/osm/surveyor/task/city/model/CityJson.java b/src/main/java/osm/surveyor/task/city/model/CityJson.java new file mode 100644 index 0000000..6a29d5f --- /dev/null +++ b/src/main/java/osm/surveyor/task/city/model/CityJson.java @@ -0,0 +1,42 @@ +package osm.surveyor.task.city.model; + +import java.util.ArrayList; +import java.util.List; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class CityJson { + + private String code; + + private String name; + + private String path; + + private List coordinates = new ArrayList<>(); + + public Coordinates toCoordinates() { + Coordinates obj = new Coordinates(); + if (this.coordinates.size() >= 2) { + obj.setLng(Double.toString(this.coordinates.get(0))); + obj.setLat(Double.toString(this.coordinates.get(1))); + return obj; + } + return obj; + } + + @Override + public String toString() { + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"code\":\""+ getCode() +"\""); + sb.append(",\"name\":\""+ getName() +"\""); + sb.append(",\"path\":\""+ getPath() +"\""); + sb.append(",\"coordinates\":"+ getCoordinates().toString()); + sb.append("}"); + return sb.toString(); + } +} diff --git a/src/main/java/osm/surveyor/task/city/model/Coordinates.java b/src/main/java/osm/surveyor/task/city/model/Coordinates.java new file mode 100644 index 0000000..3738939 --- /dev/null +++ b/src/main/java/osm/surveyor/task/city/model/Coordinates.java @@ -0,0 +1,40 @@ +package osm.surveyor.task.city.model; + +import java.math.BigDecimal; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class Coordinates { + + private String lng = "0.0"; + + private String lat = "0.0"; + + public void setLng(String str) { + this.lng = str; + } + + public void setLng(BigDecimal dec) { + this.lng = dec.toString(); + } + + public void setLat(String str) { + this.lat = str; + } + + public void setLat(BigDecimal dec) { + this.lat = dec.toString(); + } + + public String toString() { + StringBuffer sb = new StringBuffer(); + sb.append("["); + sb.append(getLng()); + sb.append(getLat()); + sb.append("]"); + return sb.toString(); + } +}