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