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 {@Idprivate String id;private Book book;private long borrowedCount;private long viewedCount;public BookAnalytics(Book book) {this.book = book;this.borrowedCount = 0;this.viewedCount = 0;}@Overridepublic 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
, andviewedCount
. -
Lines 20–24: The parameterized constructor accepts the
book
argument to create a new ...