package com.cheng.mvvmstudy.albumrobobinding.model.bean; /** * @since 1.0 * @author Cheng Wei * @author Robert Taylor * */ public class Album { public static final int NO_ID = -1; private long id; private String title; private String artist; private boolean classical; private String composer; private Album(Builder builder) { validate(builder); this.id = builder.id; this.title = builder.title; this.artist = builder.artist; this.classical = builder.classical; if (builder.isClassical()) { this.composer = builder.composer; } } private void validate(Builder builder) { } public long getId() { return id; } public void setId(long id) { this.id = id; } public String getTitle() { return title; } public String getArtist() { return artist; } public boolean isClassical() { return classical; } public String getComposer() { return composer; } @Override public int hashCode() { return System.identityHashCode(id); } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Album other = (Album) obj; if (id != other.id) return false; return true; } public boolean isNew() { return isNew(id); } public Builder createBuilder() { Builder builder = new Builder(); builder.setTitle(title); builder.setArtist(artist); builder.setClassical(classical); builder.setComposer(composer); builder.setId(id); return builder; } public static boolean isNew(long albumId) { return albumId == NO_ID; } public static class Builder { private long id = NO_ID; private String title; private String artist; private boolean classical; private String composer; public long getId() { return id; } public Builder setId(long id) { this.id = id; return this; } public String getTitle() { return title; } public Builder setTitle(String title) { this.title = title; return this; } public String getArtist() { return artist; } public Builder setArtist(String artist) { this.artist = artist; return this; } public boolean isClassical() { return classical; } public Builder setClassical(boolean classical) { this.classical = classical; return this; } public String getComposer() { return composer; } public Builder setComposer(String composer) { this.composer = composer; return this; } public boolean isNew() { return Album.isNew(id); } public Album create() { return new Album(this); } } }