/* * Copyright 2014-2016 CyberVision, Inc. * * 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.kaaproject.kaa.common.dto; import static org.kaaproject.kaa.common.dto.Util.getArrayCopy; import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; public class EndpointProfileDto implements HasId, HasVersion, Serializable { private static final List<EndpointGroupStateDto> EMPTY_GROUP_STATE = Collections.unmodifiableList(new ArrayList<EndpointGroupStateDto>()); private static final long serialVersionUID = -7122736699758720540L; private String id; private String applicationId; private byte[] endpointKey; private byte[] endpointKeyHash; private String endpointUserId; private String accessToken; private int sequenceNumber; private List<EndpointGroupStateDto> groupState; private List<String> subscriptions; private int simpleTopicHash; private byte[] topicHash; private String clientProfileBody; private String serverProfileBody; private byte[] profileHash; private byte[] configurationHash; private byte[] userConfigurationHash; private byte[] epsConfigurationHash; private int clientProfileVersion; private int serverProfileVersion; private int configurationVersion; private int notificationVersion; private int systemNfVersion; private int userNfVersion; private int logSchemaVersion; private List<EventClassFamilyVersionStateDto> ecfVersionStates; private String serverHash; private String sdkToken; private Long version; private boolean useConfigurationRawSchema; @Override public String getId() { return id; } @Override public void setId(String id) { this.id = id; } public String getApplicationId() { return applicationId; } public void setApplicationId(String applicationId) { this.applicationId = applicationId; } public byte[] getEndpointKey() { return endpointKey; } public void setEndpointKey(byte[] endpointKey) { this.endpointKey = getArrayCopy(endpointKey); } public byte[] getEndpointKeyHash() { return endpointKeyHash; } public void setEndpointKeyHash(byte[] endpointKeyHash) { this.endpointKeyHash = getArrayCopy(endpointKeyHash); } public String getEndpointUserId() { return endpointUserId; } public void setEndpointUserId(String endpointUserId) { this.endpointUserId = endpointUserId; } public String getAccessToken() { return accessToken; } public void setAccessToken(String accessToken) { this.accessToken = accessToken; } public List<EndpointGroupStateDto> getGroupState() { return groupState; } public void setGroupState(List<EndpointGroupStateDto> groupState) { this.groupState = groupState; } public void clearGroupState() { this.groupState = EMPTY_GROUP_STATE; } public String getClientProfileBody() { return clientProfileBody; } public void setClientProfileBody(String clientProfileBody) { this.clientProfileBody = clientProfileBody; } public String getServerProfileBody() { return serverProfileBody; } public void setServerProfileBody(String serverProfileBody) { this.serverProfileBody = serverProfileBody; } public byte[] getProfileHash() { return profileHash; } public void setProfileHash(byte[] profileHash) { this.profileHash = getArrayCopy(profileHash); } public byte[] getConfigurationHash() { return configurationHash; } public void setConfigurationHash(byte[] configurationHash) { this.configurationHash = getArrayCopy(configurationHash); } public byte[] getUserConfigurationHash() { return userConfigurationHash; } public void setUserConfigurationHash(byte[] userConfigurationHash) { this.userConfigurationHash = userConfigurationHash; } public int getConfigurationVersion() { return configurationVersion; } public void setConfigurationVersion(int configurationVersion) { this.configurationVersion = configurationVersion; } public int getSequenceNumber() { return sequenceNumber; } public void setSequenceNumber(int sequenceNumber) { this.sequenceNumber = sequenceNumber; } public List<String> getSubscriptions() { return subscriptions; } public void setSubscriptions(List<String> subscriptions) { this.subscriptions = subscriptions; } public int getNotificationVersion() { return notificationVersion; } public void setNotificationVersion(int notificationVersion) { this.notificationVersion = notificationVersion; } public int getSimpleTopicHash() { return simpleTopicHash; } public void setSimpleTopicHash(int simpleTopicHash) { this.simpleTopicHash = simpleTopicHash; } public byte[] getTopicHash() { return topicHash; } public void setTopicHash(byte[] topicHash) { this.topicHash = topicHash; } public int getClientProfileVersion() { return clientProfileVersion; } public void setClientProfileVersion(int clientProfileVersion) { this.clientProfileVersion = clientProfileVersion; } public int getServerProfileVersion() { return serverProfileVersion; } public void setServerProfileVersion(int serverProfileVersion) { this.serverProfileVersion = serverProfileVersion; } public int getSystemNfVersion() { return systemNfVersion; } public void setSystemNfVersion(int systemNfVersion) { this.systemNfVersion = systemNfVersion; } public int getUserNfVersion() { return userNfVersion; } public void setUserNfVersion(int userNfVersion) { this.userNfVersion = userNfVersion; } public int getLogSchemaVersion() { return logSchemaVersion; } public void setLogSchemaVersion(int logSchemaVersion) { this.logSchemaVersion = logSchemaVersion; } public List<EventClassFamilyVersionStateDto> getEcfVersionStates() { return ecfVersionStates; } public void setEcfVersionStates(List<EventClassFamilyVersionStateDto> ecfVersionStates) { this.ecfVersionStates = ecfVersionStates; } public String getServerHash() { return serverHash; } public void setServerHash(String serverHash) { this.serverHash = serverHash; } public String getSdkToken() { return sdkToken; } public void setSdkToken(String sdkToken) { this.sdkToken = sdkToken; } @Override public Long getVersion() { return version; } @Override public void setVersion(Long version) { this.version = version; } public boolean isUseConfigurationRawSchema() { return useConfigurationRawSchema; } public void setUseConfigurationRawSchema(Boolean useConfigurationRawSchema) { this.useConfigurationRawSchema = useConfigurationRawSchema != null ? useConfigurationRawSchema : false; } public byte[] getEpsConfigurationHash() { return epsConfigurationHash; } public void setEpsConfigurationHash(byte[] epsConfigurationHash) { this.epsConfigurationHash = epsConfigurationHash; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof EndpointProfileDto)) { return false; } EndpointProfileDto that = (EndpointProfileDto) obj; if (configurationVersion != that.configurationVersion) { return false; } if (notificationVersion != that.notificationVersion) { return false; } if (clientProfileVersion != that.clientProfileVersion) { return false; } if (sequenceNumber != that.sequenceNumber) { return false; } if (systemNfVersion != that.systemNfVersion) { return false; } if (userNfVersion != that.userNfVersion) { return false; } if (applicationId != null ? !applicationId.equals(that.applicationId) : that.applicationId != null) { return false; } if (!Arrays.equals(configurationHash, that.configurationHash)) { return false; } if (!Arrays.equals(userConfigurationHash, that.userConfigurationHash)) { return false; } if (groupState != null ? !groupState.equals(that.groupState) : that.groupState != null) { return false; } if (!Arrays.equals(epsConfigurationHash, that.epsConfigurationHash)) { return false; } if (!Arrays.equals(endpointKey, that.endpointKey)) { return false; } if (!Arrays.equals(endpointKeyHash, that.endpointKeyHash)) { return false; } if (simpleTopicHash != that.simpleTopicHash) { return false; } if (!Arrays.equals(topicHash, that.topicHash)) { return false; } if (clientProfileBody != null ? !clientProfileBody.equals(that.clientProfileBody) : that.clientProfileBody != null) { return false; } if (!Arrays.equals(profileHash, that.profileHash)) { return false; } if (subscriptions != null ? !subscriptions.equals(that.subscriptions) : that.subscriptions != null) { return false; } if (sdkToken != null ? !sdkToken.equals(that.sdkToken) : that.sdkToken != null) { return false; } if (useConfigurationRawSchema != that.useConfigurationRawSchema) { return false; } return true; } @Override public int hashCode() { int result = applicationId != null ? applicationId.hashCode() : 0; result = 31 * result + (endpointKey != null ? Arrays.hashCode(endpointKey) : 0); result = 31 * result + (endpointKeyHash != null ? Arrays.hashCode(endpointKeyHash) : 0); result = 31 * result + (groupState != null ? groupState.hashCode() : 0); result = 31 * result + (subscriptions != null ? subscriptions.hashCode() : 0); result = 31 * result + (topicHash != null ? Arrays.hashCode(topicHash) : 0); result = 31 * result + sequenceNumber; result = 31 * result + (clientProfileBody != null ? clientProfileBody.hashCode() : 0); result = 31 * result + (profileHash != null ? Arrays.hashCode(profileHash) : 0); result = 31 * result + (configurationHash != null ? Arrays.hashCode(configurationHash) : 0); result = 31 * result + (userConfigurationHash != null ? Arrays.hashCode(userConfigurationHash) : 0); result = 31 * result + (epsConfigurationHash != null ? Arrays.hashCode(epsConfigurationHash) : 0); result = 31 * result + clientProfileVersion; result = 31 * result + configurationVersion; result = 31 * result + notificationVersion; result = 31 * result + systemNfVersion; result = 31 * result + userNfVersion; result = 31 * result + (sdkToken != null ? sdkToken.hashCode() : 0); result = 31 * result + (useConfigurationRawSchema ? 1 : 0); return result; } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append("EndpointProfileDto [id="); builder.append(id); builder.append(", applicationId="); builder.append(applicationId); builder.append(", endpointKey="); builder.append(Arrays.toString(endpointKey)); builder.append(", endpointKeyHash="); builder.append(Arrays.toString(endpointKeyHash)); builder.append(", endpointUserId="); builder.append(endpointUserId); builder.append(", accessToken="); builder.append(accessToken); builder.append(", groupState="); builder.append(groupState); builder.append(", subscriptions="); builder.append(subscriptions); builder.append(", simpleNotificationHash="); builder.append(simpleTopicHash); builder.append(", notificationHash="); builder.append(Arrays.toString(topicHash)); builder.append(", sequenceNumber="); builder.append(sequenceNumber); builder.append(", clientProfileBody="); builder.append(clientProfileBody); builder.append(", profileHash="); builder.append(Arrays.toString(profileHash)); builder.append(", configurationHash="); builder.append(Arrays.toString(configurationHash)); builder.append(", userConfigurationHash="); builder.append(Arrays.toString(userConfigurationHash)); builder.append(", clientProfileVersion="); builder.append(clientProfileVersion); builder.append(", epsConfigurationHash="); builder.append(Arrays.toString(epsConfigurationHash)); builder.append(", configurationVersion="); builder.append(configurationVersion); builder.append(", notificationVersion="); builder.append(notificationVersion); builder.append(", systemNfVersion="); builder.append(systemNfVersion); builder.append(", userNfVersion="); builder.append(userNfVersion); builder.append(", ecfVersionStates="); builder.append(ecfVersionStates); builder.append(", serverHash="); builder.append(serverHash); builder.append(", sdkToken="); builder.append(sdkToken); builder.append(", useRawSchema="); builder.append(useConfigurationRawSchema); builder.append("]"); return builder.toString(); } }