/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package org.dlect.immutable.model; import com.google.common.base.Objects; import com.google.common.collect.Ordering; import org.dlect.model.Stream; /** * * @author lee */ public class ImmutableStream implements Comparable<ImmutableStream>, ImmutableModel<Stream> { private final String name; public ImmutableStream(String name) { this.name = name; } @Override public void copyTo(Stream s) { s.setName(getName()); } @Override public Stream copyToNew() { Stream s = new Stream(); copyTo(s); return s; } public String getName() { return name; } @Override public int compareTo(ImmutableStream o) { if (o == null) { return 1; } return Ordering.natural().nullsLast().compare(this.getName(), o.getName()); } @Override public int hashCode() { return Objects.hashCode(this.getName()); } @Override public boolean equals(Object obj) { if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } final ImmutableStream other = (ImmutableStream) obj; return Objects.equal(this.getName(), other.getName()); } @Override public String toString() { return "ImmutableStream{" + "name=" + name + '}'; } public static ImmutableStream from(Stream stream) { return new ImmutableStream(stream.getName()); } }