// Path: spring-jdbc/src/main/java/io/crate/spring/jdbc/samples/model/BlogPost.java
// public class BlogPost {
// 
//     private String id;
// 
//     private User user;
// 
//     private String text;
// 
//     private Date created;
// 
//     @JsonProperty("image_ref")
//     private String imageRef;
// 
//     @JsonProperty("like_count")
//     private long likeCount;
// 
//     private String country;
// 
//     private Area area;
// 
//     public String getId() {
//         return id;
//     }
// 
//     public void setId(String id) {
//         this.id = id;
//     }
// 
//     public User getUser() {
//         return user;
//     }
// 
//     public void setUser(User user) {
//         this.user = user;
//     }
// 
//     public String getText() {
//         return text;
//     }
// 
//     public void setText(String text) {
//         this.text = text;
//     }
// 
//     public Date getCreated() {
//         return created;
//     }
// 
//     public void setCreated(Date created) {
//         this.created = created;
//     }
// 
//     public String getImageRef() {
//         return imageRef;
//     }
// 
//     public void setImageRef(String imageRef) {
//         this.imageRef = imageRef;
//     }
// 
//     public long getLikeCount() {
//         return likeCount;
//     }
// 
//     public void setLikeCount(long likeCount) {
//         this.likeCount = likeCount;
//     }
// 
//     public String getCountry() {
//         return country;
//     }
// 
//     public void setCountry(String country) {
//         this.country = country;
//     }
// 
//     public Area getArea() {
//         return area;
//     }
// 
//     public void setArea(Area area) {
//         this.area = area;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (o == null || getClass() != o.getClass()) return false;
//         BlogPost blogPost = (BlogPost) o;
//         return likeCount == blogPost.likeCount &&
//                 Objects.equals(id, blogPost.id) &&
//                 Objects.equals(user, blogPost.user) &&
//                 Objects.equals(text, blogPost.text) &&
//                 Objects.equals(created, blogPost.created) &&
//                 Objects.equals(imageRef, blogPost.imageRef) &&
//                 Objects.equals(country, blogPost.country) &&
//                 Objects.equals(area, blogPost.area);
//     }
// 
//     @Override
//     public int hashCode() {
//         return Objects.hash(id, user, text, created, imageRef, likeCount, country, area);
//     }
// 
//     @Override
//     public String toString() {
//         return "BlogPost{" +
//                 "id='" + id + '\'' +
//                 ", user=" + user +
//                 ", text='" + text + '\'' +
//                 ", created=" + created +
//                 ", imageRef='" + imageRef + '\'' +
//                 ", likeCount=" + likeCount +
//                 ", country='" + country + '\'' +
//                 ", area=" + area +
//                 '}';
//     }
// }
// 
// Path: spring-jdbc/src/main/java/io/crate/spring/jdbc/samples/model/User.java
// public class User {
// 
//     private final String name;
//     private final double lon;
//     private final double lat;
// 
//     public User(String name, double lat, double lon) {
//         this.name = name;
//         this.lat = lat;
//         this.lon = lon;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public double getLon() {
//         return lon;
//     }
// 
//     public double getLat() {
//         return lat;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (o == null || getClass() != o.getClass()) return false;
//         User user = (User) o;
//         return Double.compare(user.lon, lon) == 0 &&
//                 Double.compare(user.lat, lat) == 0 &&
//                 Objects.equals(name, user.name);
//     }
// 
//     @Override
//     public int hashCode() {
//         return Objects.hash(name, lon, lat);
//     }
// 
//     @Override
//     public String toString() {
//         return "User{" +
//                 "name='" + name + '\'' +
//                 ", lon=" + lon +
//                 ", lat=" + lat +
//                 '}';
//     }
// }


import java.util.Date;
import java.util.List;
import java.util.Map;
import org.springframework.lang.NonNull;
import io.crate.spring.jdbc.samples.model.BlogPost;
import io.crate.spring.jdbc.samples.model.User;
package io.crate.spring.jdbc.samples;




public class BlogPostDeserializer {

    @SuppressWarnings("unchecked")
    public BlogPost fromMap(@NonNull final Map<String, Object> postProps) {
        var post = new BlogPost();
        var id = postProps.get("id");

        if (id != null) {
            post.setId(id.toString());
        }
       var userData = (Map<String, Object>) postProps.get("user");

        if (userData != null) {
            String name = (String) userData.get("name");
            var location = (List<Double>) userData.get("location");
            if (name != null && location != null && location.size() == 2) {
// Path: spring-jdbc/src/main/java/io/crate/spring/jdbc/samples/model/BlogPost.java
// public class BlogPost {
// 
//     private String id;
// 
//     private User user;
// 
//     private String text;
// 
//     private Date created;
// 
//     @JsonProperty("image_ref")
//     private String imageRef;
// 
//     @JsonProperty("like_count")
//     private long likeCount;
// 
//     private String country;
// 
//     private Area area;
// 
//     public String getId() {
//         return id;
//     }
// 
//     public void setId(String id) {
//         this.id = id;
//     }
// 
//     public User getUser() {
//         return user;
//     }
// 
//     public void setUser(User user) {
//         this.user = user;
//     }
// 
//     public String getText() {
//         return text;
//     }
// 
//     public void setText(String text) {
//         this.text = text;
//     }
// 
//     public Date getCreated() {
//         return created;
//     }
// 
//     public void setCreated(Date created) {
//         this.created = created;
//     }
// 
//     public String getImageRef() {
//         return imageRef;
//     }
// 
//     public void setImageRef(String imageRef) {
//         this.imageRef = imageRef;
//     }
// 
//     public long getLikeCount() {
//         return likeCount;
//     }
// 
//     public void setLikeCount(long likeCount) {
//         this.likeCount = likeCount;
//     }
// 
//     public String getCountry() {
//         return country;
//     }
// 
//     public void setCountry(String country) {
//         this.country = country;
//     }
// 
//     public Area getArea() {
//         return area;
//     }
// 
//     public void setArea(Area area) {
//         this.area = area;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (o == null || getClass() != o.getClass()) return false;
//         BlogPost blogPost = (BlogPost) o;
//         return likeCount == blogPost.likeCount &&
//                 Objects.equals(id, blogPost.id) &&
//                 Objects.equals(user, blogPost.user) &&
//                 Objects.equals(text, blogPost.text) &&
//                 Objects.equals(created, blogPost.created) &&
//                 Objects.equals(imageRef, blogPost.imageRef) &&
//                 Objects.equals(country, blogPost.country) &&
//                 Objects.equals(area, blogPost.area);
//     }
// 
//     @Override
//     public int hashCode() {
//         return Objects.hash(id, user, text, created, imageRef, likeCount, country, area);
//     }
// 
//     @Override
//     public String toString() {
//         return "BlogPost{" +
//                 "id='" + id + '\'' +
//                 ", user=" + user +
//                 ", text='" + text + '\'' +
//                 ", created=" + created +
//                 ", imageRef='" + imageRef + '\'' +
//                 ", likeCount=" + likeCount +
//                 ", country='" + country + '\'' +
//                 ", area=" + area +
//                 '}';
//     }
// }
// 
// Path: spring-jdbc/src/main/java/io/crate/spring/jdbc/samples/model/User.java
// public class User {
// 
//     private final String name;
//     private final double lon;
//     private final double lat;
// 
//     public User(String name, double lat, double lon) {
//         this.name = name;
//         this.lat = lat;
//         this.lon = lon;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public double getLon() {
//         return lon;
//     }
// 
//     public double getLat() {
//         return lat;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (o == null || getClass() != o.getClass()) return false;
//         User user = (User) o;
//         return Double.compare(user.lon, lon) == 0 &&
//                 Double.compare(user.lat, lat) == 0 &&
//                 Objects.equals(name, user.name);
//     }
// 
//     @Override
//     public int hashCode() {
//         return Objects.hash(name, lon, lat);
//     }
// 
//     @Override
//     public String toString() {
//         return "User{" +
//                 "name='" + name + '\'' +
//                 ", lon=" + lon +
//                 ", lat=" + lat +
//                 '}';
//     }
// }


// Path: spring-jdbc/src/main/java/io/crate/spring/jdbc/samples/BlogPostDeserializer.java
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.springframework.lang.NonNull;
import io.crate.spring.jdbc.samples.model.BlogPost;
import io.crate.spring.jdbc.samples.model.User;

package io.crate.spring.jdbc.samples;




public class BlogPostDeserializer {

    @SuppressWarnings("unchecked")
    public BlogPost fromMap(@NonNull final Map<String, Object> postProps) {
        var post = new BlogPost();
        var id = postProps.get("id");

        if (id != null) {
            post.setId(id.toString());
        }
       var userData = (Map<String, Object>) postProps.get("user");

        if (userData != null) {
            String name = (String) userData.get("name");
            var location = (List<Double>) userData.get("location");
            if (name != null && location != null && location.size() == 2) {
                post.setUser(new User(name, location.get(0), location.get(1)));