/** * SensorModel.java This file is part of WattDepot. * * Copyright (C) 2013 Cam Moore * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.wattdepot.common.domainmodel; import org.wattdepot.common.exception.BadSlugException; import org.wattdepot.common.util.Slug; /** * SensorModel - Information about a Sensor. * * @author Cam Moore * */ public class SensorModel { /** A unique id for the SensorModel, used for URLs. */ private String id; /** The name for the SensorModel. */ private String name; /** The protocol this sensor uses. */ protected String protocol; /** The type of the sensor. */ protected String type; /** The version of the sensor model. */ protected String version; /** * The default constructor. */ public SensorModel() { } /** * @param name The name. * @param protocol The protocol used by a sensor. * @param type The type of the sensor. * @param version The version the sensor is using. */ public SensorModel(String name, String protocol, String type, String version) { this(Slug.slugify(name), name, protocol, type, version); } /** * @param id The unique id. * @param name The name. * @param protocol The protocol used by a sensor. * @param type The type of the sensor. * @param version The version the sensor is using. */ public SensorModel(String id, String name, String protocol, String type, String version) { this.id = id; this.name = name; this.protocol = protocol; this.type = type; this.version = version; } /* * (non-Javadoc) * * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (!getClass().isAssignableFrom(obj.getClass()) && !obj.getClass().isAssignableFrom(getClass()) && getClass() != obj.getClass()) { return false; } SensorModel other = (SensorModel) obj; if (id == null) { if (other.id != null) { return false; } } else if (!id.equals(other.id)) { return false; } if (name == null) { if (other.name != null) { return false; } } else if (!name.equals(other.name)) { return false; } if (protocol == null) { if (other.protocol != null) { return false; } } else if (!protocol.equals(other.protocol)) { return false; } if (type == null) { if (other.type != null) { return false; } } else if (!type.equals(other.type)) { return false; } if (version == null) { if (other.version != null) { return false; } } else if (!version.equals(other.version)) { return false; } return true; } /** * @return the id */ public String getId() { return id; } /** * @return the name */ public String getName() { return name; } /** * @return the protocol */ public String getProtocol() { return protocol; } /** * @return the type */ public String getType() { return type; } /** * @return the version */ public String getVersion() { return version; } /* * (non-Javadoc) * * @see java.lang.Object#hashCode() */ @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((id == null) ? 0 : id.hashCode()); result = prime * result + ((name == null) ? 0 : name.hashCode()); result = prime * result + ((protocol == null) ? 0 : protocol.hashCode()); result = prime * result + ((type == null) ? 0 : type.hashCode()); result = prime * result + ((version == null) ? 0 : version.hashCode()); return result; } /** * @param id the id to set * @exception BadSlugException if the id is invalid. */ public void setId(String id) throws BadSlugException { if (Slug.validateSlug(id)) { this.id = id; } else { throw new BadSlugException(id + " isn't a valid slug."); } } /** * @param name the name to set */ public void setName(String name) { this.name = name; if (this.id == null) { this.id = Slug.slugify(name); } } /** * @param protocol the protocol to set */ public void setProtocol(String protocol) { this.protocol = protocol; } /** * @param type the type to set */ public void setType(String type) { this.type = type; } /** * @param version the version to set */ public void setVersion(String version) { this.version = version; } /* * (non-Javadoc) * * @see java.lang.Object#toString() */ @Override public String toString() { return "SensorModel [id=" + id + ", name=" + name + ", protocol=" + protocol + ", type=" + type + ", version=" + version + "]"; } }