package gov.nysenate.openleg.model.slack;
import com.google.common.base.Objects;
import org.apache.commons.lang3.StringUtils;
/**
* Contains data for routing a message within a single Slack team
* Allows for sending a message to a specific channel, mentioning a specific user
*/
public class SlackAddress {
/** String used to categorize assignments to the default channel,
* should be an invalid slack channel name to prevent collision */
public static final String DEFAULT_CHANNEL_ID =
"=== THIS IS NOT A VALID SLACK CHANNEL NAME ===";
private String channel;
private String username;
/* -- Constructors -- */
public SlackAddress(String channel, String username) {
this.channel = channel;
this.username = username;
}
/* --- Overrides --- */
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof SlackAddress)) return false;
SlackAddress that = (SlackAddress) o;
return Objects.equal(channel, that.channel) &&
Objects.equal(username, that.username);
}
@Override
public int hashCode() {
return Objects.hashCode(channel, username);
}
@Override
public String toString() {
if (DEFAULT_CHANNEL_ID.equals(channel) && StringUtils.isBlank(username)) {
return "default";
}
String channelString = channel.equals(DEFAULT_CHANNEL_ID) ? "" : "#" + channel;
String usernameString = StringUtils.isBlank(username) ? "" : "@" + username;
return channelString + usernameString;
}
/* --- Getters --- */
public SlackAddress(String channel) {
this(channel, "");
}
public SlackAddress() {
this(DEFAULT_CHANNEL_ID);
}
public String getChannel() {
return channel;
}
public String getUsername() {
return username;
}
}