...

/

Solution: Implementing Library Reporting

Solution: Implementing Library Reporting

Here's the solution to the library reporting challenge.

Solution

Let’s discuss the solution for implementing library reporting.

Create the BookAnalytics class

First, we create the BookAnalytics class in the com.smartdiscover.model package.

Press + to interact
package com.smartdiscover.model;
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
@Data
@Document(indexName = "bookanalytics")
public class BookAnalytics {
@Id
private String id;
private Book book;
private long borrowedCount;
private long viewedCount;
public BookAnalytics(Book book) {
this.book = book;
this.borrowedCount = 0;
this.viewedCount = 0;
}
@Override
public String toString() {
return "BookAnalytics{" +
"id=" + id +
", book='" + book.getName() + '\'' +
", borrowedCount=" + borrowedCount +
", viewedCount=" + viewedCount +
'}';
}
public void incrementBorrowedCount() {
this.borrowedCount += 1;
}
public void incrementViewedCount() {
this.viewedCount += 1;
}
}

Code explanation:

  • Lines 7–9: We add annotations like @Data and @Document to refer to an Elasticsearch document from the POJO.

  • Lines 11 and 12: We add the id property as the identifier using the @Id annotation.

  • Lines 14–18: We add properties like book, borrowedCount, and viewedCount.

  • Lines 20–24: The parameterized constructor accepts the book argument to create a new ...