/** * Copyright © 2016-2017 The Thingsboard Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.thingsboard.server.dao.model; import java.util.UUID; import org.thingsboard.server.common.data.Dashboard; import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.DashboardId; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.dao.model.type.JsonCodec; import com.datastax.driver.core.utils.UUIDs; import com.datastax.driver.mapping.annotations.Column; import com.datastax.driver.mapping.annotations.PartitionKey; import com.datastax.driver.mapping.annotations.Table; import com.datastax.driver.mapping.annotations.Transient; import com.fasterxml.jackson.databind.JsonNode; @Table(name = ModelConstants.DASHBOARD_COLUMN_FAMILY_NAME) public final class DashboardEntity implements SearchTextEntity<Dashboard> { @Transient private static final long serialVersionUID = 2998395951247446191L; @PartitionKey(value = 0) @Column(name = ModelConstants.ID_PROPERTY) private UUID id; @PartitionKey(value = 1) @Column(name = ModelConstants.DASHBOARD_TENANT_ID_PROPERTY) private UUID tenantId; @PartitionKey(value = 2) @Column(name = ModelConstants.DASHBOARD_CUSTOMER_ID_PROPERTY) private UUID customerId; @Column(name = ModelConstants.DASHBOARD_TITLE_PROPERTY) private String title; @Column(name = ModelConstants.SEARCH_TEXT_PROPERTY) private String searchText; @Column(name = ModelConstants.DASHBOARD_CONFIGURATION_PROPERTY, codec = JsonCodec.class) private JsonNode configuration; public DashboardEntity() { super(); } public DashboardEntity(Dashboard dashboard) { if (dashboard.getId() != null) { this.id = dashboard.getId().getId(); } if (dashboard.getTenantId() != null) { this.tenantId = dashboard.getTenantId().getId(); } if (dashboard.getCustomerId() != null) { this.customerId = dashboard.getCustomerId().getId(); } this.title = dashboard.getTitle(); this.configuration = dashboard.getConfiguration(); } public UUID getId() { return id; } public void setId(UUID id) { this.id = id; } public UUID getTenantId() { return tenantId; } public void setTenantId(UUID tenantId) { this.tenantId = tenantId; } public UUID getCustomerId() { return customerId; } public void setCustomerId(UUID customerId) { this.customerId = customerId; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public JsonNode getConfiguration() { return configuration; } public void setConfiguration(JsonNode configuration) { this.configuration = configuration; } @Override public String getSearchTextSource() { return title; } @Override public void setSearchText(String searchText) { this.searchText = searchText; } public String getSearchText() { return searchText; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((configuration == null) ? 0 : configuration.hashCode()); result = prime * result + ((customerId == null) ? 0 : customerId.hashCode()); result = prime * result + ((id == null) ? 0 : id.hashCode()); result = prime * result + ((searchText == null) ? 0 : searchText.hashCode()); result = prime * result + ((tenantId == null) ? 0 : tenantId.hashCode()); result = prime * result + ((title == null) ? 0 : title.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; DashboardEntity other = (DashboardEntity) obj; if (configuration == null) { if (other.configuration != null) return false; } else if (!configuration.equals(other.configuration)) return false; if (customerId == null) { if (other.customerId != null) return false; } else if (!customerId.equals(other.customerId)) return false; if (id == null) { if (other.id != null) return false; } else if (!id.equals(other.id)) return false; if (searchText == null) { if (other.searchText != null) return false; } else if (!searchText.equals(other.searchText)) return false; if (tenantId == null) { if (other.tenantId != null) return false; } else if (!tenantId.equals(other.tenantId)) return false; if (title == null) { if (other.title != null) return false; } else if (!title.equals(other.title)) return false; return true; } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append("DashboardEntity [id="); builder.append(id); builder.append(", tenantId="); builder.append(tenantId); builder.append(", customerId="); builder.append(customerId); builder.append(", title="); builder.append(title); builder.append(", searchText="); builder.append(searchText); builder.append(", configuration="); builder.append(configuration); builder.append("]"); return builder.toString(); } @Override public Dashboard toData() { Dashboard dashboard = new Dashboard(new DashboardId(id)); dashboard.setCreatedTime(UUIDs.unixTimestamp(id)); if (tenantId != null) { dashboard.setTenantId(new TenantId(tenantId)); } if (customerId != null) { dashboard.setCustomerId(new CustomerId(customerId)); } dashboard.setTitle(title); dashboard.setConfiguration(configuration); return dashboard; } }