/*******************************************************************************
* Copyright (c) 2014 antoniomariasanchez at gmail.com.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/gpl.html
*
* Contributors:
* antoniomaria - initial API and implementation
******************************************************************************/
package net.sf.gazpachoquest.dto;
import net.sf.gazpachoquest.dto.support.AbstractIdentifiableDTO;
import net.sf.gazpachoquest.types.InvitationStatus;
import net.sf.gazpachoquest.types.InvitationType;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXTERNAL_PROPERTY, property = "type")
@JsonSubTypes({ @JsonSubTypes.Type(value = AnonymousInvitationDTO.class, name = "A"),
@JsonSubTypes.Type(value = PersonalInvitationDTO.class, name = "P") })
@SuppressWarnings("serial")
public class InvitationDTO extends AbstractIdentifiableDTO {
private InvitationStatus status;
private ResearchDTO research;
private String token;
private InvitationType type;
public InvitationStatus getStatus() {
return status;
}
public ResearchDTO getResearch() {
return research;
}
public String getToken() {
return token;
}
@JsonIgnore
public InvitationType getType() {
return type;
}
public void setStatus(final InvitationStatus status) {
this.status = status;
}
public void setResearch(final ResearchDTO research) {
this.research = research;
}
public void setToken(final String token) {
this.token = token;
}
public void setType(final InvitationType type) {
this.type = type;
}
public static class Builder {
private InvitationStatus status;
private ResearchDTO research;
private String token = "";
private InvitationType type;
public InvitationDTO build() {
InvitationDTO invitationDTO = new InvitationDTO();
invitationDTO.token = token;
invitationDTO.research = research;
invitationDTO.status = status;
invitationDTO.type = type;
return invitationDTO;
}
public Builder status(final InvitationStatus status) {
this.status = status;
return this;
}
public Builder research(final ResearchDTO research) {
this.research = research;
return this;
}
public Builder token(final String token) {
this.token = token;
return this;
}
public Builder type(final InvitationType type) {
this.type = type;
return this;
}
}
public static Builder with() {
return new Builder();
}
}