001package net.filebot.web; 002 003import static java.util.Comparator.*; 004 005import java.io.Serializable; 006import java.net.URL; 007import java.util.Comparator; 008 009public class Person implements Serializable { 010 011 protected Integer id; 012 protected String name; 013 protected String character; 014 protected String job; 015 protected String department; 016 protected Integer order; 017 protected URL image; 018 019 public Person() { 020 // used by serializer 021 } 022 023 public Person(String name, String job) { 024 this(null, name, null, job, null, null, null); 025 } 026 027 public Person(Integer id, String name, String character, String job, String department, Integer order, URL image) { 028 this.id = id; 029 this.name = name; 030 this.character = character == null || character.isEmpty() ? null : character; 031 this.job = job == null || job.isEmpty() ? null : job; 032 this.department = department == null || department.isEmpty() ? null : department; 033 this.order = order; 034 this.image = image; 035 } 036 037 public Integer getId() { 038 return id; 039 } 040 041 public String getName() { 042 return name; 043 } 044 045 public String getCharacter() { 046 return character; 047 } 048 049 public String getJob() { 050 return job; 051 } 052 053 public String getDepartment() { 054 return department; 055 } 056 057 public Integer getOrder() { 058 return order; 059 } 060 061 public URL getImage() { 062 return image; 063 } 064 065 public boolean isActor() { 066 return character != null || ACTOR.equals(job) || GUEST_STAR.equals(job) || ACTING_DEPARTMENT.equals(department); 067 } 068 069 public boolean isDirector() { 070 return DIRECTOR.equals(job); 071 } 072 073 public boolean isWriter() { 074 return WRITER.equals(job); 075 } 076 077 public boolean isWritingDepartment() { 078 return WRITING_DEPARTMENT.equals(department); 079 } 080 081 @Override 082 public String toString() { 083 return String.format("%s (%s)", name, character != null ? character : job != null ? job : department); 084 } 085 086 public static final String WRITER = "Writer"; 087 public static final String DIRECTOR = "Director"; 088 public static final String ACTOR = "Actor"; 089 public static final String GUEST_STAR = "Guest Star"; 090 public static final String WRITING_DEPARTMENT = "Writing"; 091 public static final String ACTING_DEPARTMENT = "Acting"; 092 093 public static final Comparator<Person> CREDIT_ORDER = comparing(Person::getOrder, nullsLast(naturalOrder())); 094 095}