package org.zendesk.client.v2.model.events; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import java.util.ArrayList; import java.util.List; /** * @author stephenc * @since 05/04/2013 11:56 */ public class ChangeEvent extends CreateEvent { private static final long serialVersionUID = 1L; private List<String> previousValue; @JsonProperty("previous_value") public Object getPreviousValueObject() { if (previousValue == null) { return null; } if (previousValue.size() == 1) { return previousValue.get(0); } return previousValue; } public void setPreviousValueObject(Object previousValue) { if (previousValue == null) { this.previousValue = null; } else if (previousValue instanceof List) { this.previousValue = new ArrayList<String>(); for (Object o : (List<?>) previousValue) { this.previousValue.add(o == null || o instanceof String ? (String) o : o.toString()); } } else if (previousValue instanceof String[]) { this.previousValue = new ArrayList<String>(); for (String s : (String[]) previousValue) { this.previousValue.add(s); } } else if (previousValue instanceof Object[]) { this.previousValue = new ArrayList<String>(); for (Object o : (Object[]) previousValue) { this.previousValue.add(o == null || o instanceof String ? (String) o : o.toString()); } } else if (previousValue instanceof String) { setPreviousValue((String) previousValue); } else { setPreviousValue(previousValue.toString()); } } @JsonIgnore public List<String> getPreviousValues() { return previousValue; } public void setPreviousValues(List<String> previousValue) { this.previousValue = previousValue; } @JsonIgnore public String getPreviousValue() { return previousValue == null || previousValue.size() != 1 ? null : previousValue.get(0); } public void setPreviousValue(String previousValue) { if (previousValue == null) { this.previousValue = null; } else { this.previousValue = new ArrayList<String>(); this.previousValue.add(previousValue); } } @Override public String toString() { final StringBuilder sb = new StringBuilder(); sb.append("ChangeEvent"); sb.append("{previousValue=").append(previousValue); sb.append('}'); return sb.toString(); } }