// Path: src/main/java/net/jgp/labs/spark/l250_map/l020_dataset_book/CsvToDatasetBookApp.java
// class BookMapper implements MapFunction<Row, Book> {
//   private static final long serialVersionUID = -8940709795225426457L;
// 
//   @Override
//   public Book call(Row value) throws Exception {
//     Book b = new Book();
//     b.setId(value.getAs("id"));
//     b.setAuthorId(value.getAs("authorId"));
//     b.setLink(value.getAs("link"));
//     SimpleDateFormat parser = new SimpleDateFormat("M/d/yy");
//     String stringAsDate = value.getAs("releaseDate");
//     if (stringAsDate == null) {
//       b.setReleaseDate(null);
//     } else {
//       b.setReleaseDate(parser.parse(stringAsDate));
//     }
//     b.setTitle(value.getAs("title"));
//     return b;
//   }
// }
// 
// Path: src/main/java/net/jgp/labs/spark/x/model/Book.java
// public class Book {
//   int id;
//   int authorId;
//   String title;
//   Date releaseDate;
//   String link;
// 
//   /**
//    * @return the id
//    */
//   public int getId() {
//     return id;
//   }
// 
//   /**
//    * @param id
//    *          the id to set
//    */
//   public void setId(int id) {
//     this.id = id;
//   }
// 
//   /**
//    * @return the authorId
//    */
//   public int getAuthorId() {
//     return authorId;
//   }
// 
//   public void setAuthorId(int authorId) {
//     this.authorId = authorId;
//   }
// 
//   /**
//    * @param authorId
//    *          the authorId to set
//    */
//   public void setAuthorId(Integer authorId) {
//     if (authorId == null) {
//       this.authorId = 0;
//     } else {
//       this.authorId = authorId;
//     }
//   }
// 
//   /**
//    * @return the title
//    */
//   public String getTitle() {
//     return title;
//   }
// 
//   /**
//    * @param title
//    *          the title to set
//    */
//   public void setTitle(String title) {
//     this.title = title;
//   }
// 
//   /**
//    * @return the releaseDate
//    */
//   public Date getReleaseDate() {
//     return releaseDate;
//   }
// 
//   /**
//    * @param releaseDate
//    *          the releaseDate to set
//    */
//   public void setReleaseDate(Date releaseDate) {
//     this.releaseDate = releaseDate;
//   }
// 
//   /**
//    * @return the link
//    */
//   public String getLink() {
//     return link;
//   }
// 
//   /**
//    * @param link
//    *          the link to set
//    */
//   public void setLink(String link) {
//     this.link = link;
//   }
// }


import java.io.Serializable;
import java.text.SimpleDateFormat;
import org.apache.spark.api.java.function.MapFunction;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Encoders;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;
import net.jgp.labs.spark.l250_map.l020_dataset_book.CsvToDatasetBookApp.BookMapper;
import net.jgp.labs.spark.x.model.Book;
package net.jgp.labs.spark.l250_map.l020_dataset_book;




public class CsvToDatasetBookToDataframeApp implements Serializable {
  private static final long serialVersionUID = 4262746489728980066L;

  class BookMapper implements MapFunction<Row, Book> {
    private static final long serialVersionUID = -8940709795225426457L;

    @Override
    public Book call(Row value) throws Exception {
      Book b = new Book();
      b.setId(value.getAs("id"));
      b.setAuthorId(value.getAs("authorId"));
      b.setLink(value.getAs("link"));
      SimpleDateFormat parser = new SimpleDateFormat("M/d/yy");
      String stringAsDate = value.getAs("releaseDate");
      if (stringAsDate == null) {
        b.setReleaseDate(null);
      } else {
        b.setReleaseDate(parser.parse(stringAsDate));
      }
      b.setTitle(value.getAs("title"));
      return b;
    }
  }

  public static void main(String[] args) {
// Path: src/main/java/net/jgp/labs/spark/l250_map/l020_dataset_book/CsvToDatasetBookApp.java
// class BookMapper implements MapFunction<Row, Book> {
//   private static final long serialVersionUID = -8940709795225426457L;
// 
//   @Override
//   public Book call(Row value) throws Exception {
//     Book b = new Book();
//     b.setId(value.getAs("id"));
//     b.setAuthorId(value.getAs("authorId"));
//     b.setLink(value.getAs("link"));
//     SimpleDateFormat parser = new SimpleDateFormat("M/d/yy");
//     String stringAsDate = value.getAs("releaseDate");
//     if (stringAsDate == null) {
//       b.setReleaseDate(null);
//     } else {
//       b.setReleaseDate(parser.parse(stringAsDate));
//     }
//     b.setTitle(value.getAs("title"));
//     return b;
//   }
// }
// 
// Path: src/main/java/net/jgp/labs/spark/x/model/Book.java
// public class Book {
//   int id;
//   int authorId;
//   String title;
//   Date releaseDate;
//   String link;
// 
//   /**
//    * @return the id
//    */
//   public int getId() {
//     return id;
//   }
// 
//   /**
//    * @param id
//    *          the id to set
//    */
//   public void setId(int id) {
//     this.id = id;
//   }
// 
//   /**
//    * @return the authorId
//    */
//   public int getAuthorId() {
//     return authorId;
//   }
// 
//   public void setAuthorId(int authorId) {
//     this.authorId = authorId;
//   }
// 
//   /**
//    * @param authorId
//    *          the authorId to set
//    */
//   public void setAuthorId(Integer authorId) {
//     if (authorId == null) {
//       this.authorId = 0;
//     } else {
//       this.authorId = authorId;
//     }
//   }
// 
//   /**
//    * @return the title
//    */
//   public String getTitle() {
//     return title;
//   }
// 
//   /**
//    * @param title
//    *          the title to set
//    */
//   public void setTitle(String title) {
//     this.title = title;
//   }
// 
//   /**
//    * @return the releaseDate
//    */
//   public Date getReleaseDate() {
//     return releaseDate;
//   }
// 
//   /**
//    * @param releaseDate
//    *          the releaseDate to set
//    */
//   public void setReleaseDate(Date releaseDate) {
//     this.releaseDate = releaseDate;
//   }
// 
//   /**
//    * @return the link
//    */
//   public String getLink() {
//     return link;
//   }
// 
//   /**
//    * @param link
//    *          the link to set
//    */
//   public void setLink(String link) {
//     this.link = link;
//   }
// }


// Path: src/main/java/net/jgp/labs/spark/l250_map/l020_dataset_book/CsvToDatasetBookToDataframeApp.java
import java.io.Serializable;
import java.text.SimpleDateFormat;
import org.apache.spark.api.java.function.MapFunction;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Encoders;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;
import net.jgp.labs.spark.l250_map.l020_dataset_book.CsvToDatasetBookApp.BookMapper;
import net.jgp.labs.spark.x.model.Book;

package net.jgp.labs.spark.l250_map.l020_dataset_book;




public class CsvToDatasetBookToDataframeApp implements Serializable {
  private static final long serialVersionUID = 4262746489728980066L;

  class BookMapper implements MapFunction<Row, Book> {
    private static final long serialVersionUID = -8940709795225426457L;

    @Override
    public Book call(Row value) throws Exception {
      Book b = new Book();
      b.setId(value.getAs("id"));
      b.setAuthorId(value.getAs("authorId"));
      b.setLink(value.getAs("link"));
      SimpleDateFormat parser = new SimpleDateFormat("M/d/yy");
      String stringAsDate = value.getAs("releaseDate");
      if (stringAsDate == null) {
        b.setReleaseDate(null);
      } else {
        b.setReleaseDate(parser.parse(stringAsDate));
      }
      b.setTitle(value.getAs("title"));
      return b;
    }
  }

  public static void main(String[] args) {
    CsvToDatasetBookToDataframeApp app = new CsvToDatasetBookToDataframeApp();