-
Notifications
You must be signed in to change notification settings - Fork 0
/
Book.java
137 lines (109 loc) · 3.59 KB
/
Book.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
/* ************************************************************************* *\
* Programmierung 1 HS 2018 - Serie 3-2 *
\* ************************************************************************* */
import java.util.Date;
import java.util.Scanner;
import java.text.*;
import java.util.Calendar;
import java.lang.Math.*;
public class Book
{
private int id;
private String title;
private String author;
private Date dateOfPublication;
private int price;
public static final String DATE_FORMAT = "dd.MM.yyyy";
//--- constructors ---
// TODO: Insert your code here!
public Book(int id, String title, String author, Date dateOfPublication, int price)
{
this.id = id;
this.title = title;
this.author = author;
this.dateOfPublication = dateOfPublication;
this.price=price;
}
/** Returns the age of the book in days since publication */
public int age()
{
// TODO: Insert your code here!
//we could use Date with new Date() to get time right now
Calendar cal = Calendar.getInstance();
Date today = cal.getTime();
//Date publication = cal.getTime(this.dateOfPublication);
long days = (today.getTime() - dateOfPublication.getTime())/86400000;
int ageDays = Math.toIntExact(days);
return ageDays;
}
/** Returns a String representation of the book */
public String toString()
{
// TODO: Insert your code here!
// TODO: Insert your code here!
String newDate = dateToString (this.dateOfPublication);
return "Book ["+ this.id + this.title + this.author +newDate +this.price +"]";
}
/** Reads all book data from user input */
public void input()
{
Scanner scn = new Scanner( System.in );
System.out.print( "Please enter id: " );
this.id = scn.nextInt();
System.out.println("Please enter title: ");
this.title = scn.nextLine();
System.out.println("Please enter author: ");
this.author = scn.nextLine();
System.out.println("Please enter date of Publication (dd.mm.yyyy): ");
String stringDateOfPublication;
stringDateOfPublication = scn.nextLine();
this.dateOfPublication = stringToDate (stringDateOfPublication);
System.out.print("Please enter price: ");
this.price=scn.nextInt();
// TODO: Insert your code here!
}
//--- Get-/Set-methods ---
// TODO: Insert your code here!
public void setId(int id)
{this.id = id;}
public int getId()
{return id;}
public void setTitle(String title)
{this.title = title;}
public String getTitle()
{return title;}
public void setAuthor(String author)
{this.author = author;}
public String getAuthor()
{return author;}
public void setDateOfPublication(Date dateOfPublication)
{this.dateOfPublication = dateOfPublication;}
public Date getDateOfPublication()
{return dateOfPublication;}
public void setPrice(int price)
{this.price = price;
if (this.price <= 0)
this.price = 0;}
public int getPrice()
{return price;}
//--- helper methods -- DO NOT CHANGE ------------------------------------
/** Converts the Date object d into a String object */
public static String dateToString( Date d )
{
SimpleDateFormat fmt = new SimpleDateFormat( DATE_FORMAT );
return fmt.format( d );
}
/** Converts the String object s into a Date object */
public static Date stringToDate( String s )
{
Date r = null;
try {
SimpleDateFormat fmt = new SimpleDateFormat( DATE_FORMAT );
r = fmt.parse( s );
} catch ( ParseException e ){
System.err.println( e );
System.exit(1);
}
return r;
}
}