blob: 8c54796d426830d95535149a60997859f4db4278 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.apache.phoenix.mapreduce.index;
import org.apache.hadoop.hbase.util.Bytes;
import java.util.Arrays;
import java.util.Objects;
public class IndexVerificationOutputRow {
public static final String SCAN_MAX_TIMESTAMP = "ScanMaxTimestamp: ";
private String dataTableName;
private String indexTableName;
private Long scanMaxTimestamp;
private byte[] dataTableRowKey;
private byte[] indexTableRowKey;
private Long dataTableRowTimestamp;
private Long indexTableRowTimestamp;
private String errorMessage;
private byte[] expectedValue;
private byte[] actualValue;
private byte[] phaseValue;
private IndexVerificationOutputRow(String dataTableName, String indexTableName,
byte[] dataTableRowKey, Long scanMaxTimestamp,
byte[] indexTableRowKey,
long dataTableRowTimestamp, long indexTableRowTimestamp,
String errorMessage, byte[] expectedValue, byte[] actualValue,
byte[] phaseValue) {
this.dataTableName = dataTableName;
this.indexTableName = indexTableName;
this.scanMaxTimestamp = scanMaxTimestamp;
this.dataTableRowKey = dataTableRowKey;
this.indexTableRowKey = indexTableRowKey;
this.dataTableRowTimestamp = dataTableRowTimestamp;
this.indexTableRowTimestamp = indexTableRowTimestamp;
this.errorMessage = errorMessage;
this.expectedValue = expectedValue;
this.actualValue = actualValue;
this.phaseValue = phaseValue;
}
public String getDataTableName() {
return dataTableName;
}
public String getIndexTableName() {
return indexTableName;
}
public Long getScanMaxTimestamp() {
return scanMaxTimestamp;
}
public byte[] getIndexTableRowKey() {
return indexTableRowKey;
}
public long getIndexTableRowTimestamp() {
return indexTableRowTimestamp;
}
public String getErrorMessage() {
return errorMessage;
}
public byte[] getExpectedValue() {
return expectedValue;
}
public byte[] getActualValue() {
return actualValue;
}
public byte[] getPhaseValue() {
return phaseValue;
}
public byte[] getDataTableRowKey() {
return dataTableRowKey;
}
public Long getDataTableRowTimestamp() {
return dataTableRowTimestamp;
}
@Override
public boolean equals(Object o) {
if (o == null ) {
return false;
}
if (!(o instanceof IndexVerificationOutputRow)) {
return false;
}
IndexVerificationOutputRow otherRow = (IndexVerificationOutputRow) o;
return Objects.equals(dataTableName, otherRow.getDataTableName()) &&
Objects.equals(indexTableName, otherRow.getIndexTableName()) &&
Objects.equals(scanMaxTimestamp, otherRow.getScanMaxTimestamp()) &&
Arrays.equals(dataTableRowKey, otherRow.getDataTableRowKey()) &&
Arrays.equals(indexTableRowKey, otherRow.getIndexTableRowKey()) &&
Objects.equals(dataTableRowTimestamp, otherRow.getDataTableRowTimestamp()) &&
Objects.equals(indexTableRowTimestamp, otherRow.getIndexTableRowTimestamp()) &&
Objects.equals(errorMessage, otherRow.getErrorMessage()) &&
Arrays.equals(expectedValue, otherRow.getExpectedValue()) &&
Arrays.equals(actualValue, otherRow.getActualValue()) &&
Arrays.equals(phaseValue, otherRow.getPhaseValue());
}
@Override
public int hashCode(){
return Objects.hashCode(scanMaxTimestamp) ^ Objects.hashCode(indexTableName) ^
Arrays.hashCode(dataTableRowKey);
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(IndexVerificationOutputRepository.DATA_TABLE_NAME + ": ").append(dataTableName).append(",");
sb.append(IndexVerificationOutputRepository.INDEX_TABLE_NAME + ": ").append(indexTableName).append(",");
sb.append(SCAN_MAX_TIMESTAMP).append(": ").append(scanMaxTimestamp).append(",");
sb.append(IndexVerificationOutputRepository.DATA_TABLE_ROW_KEY + ": ").append(Bytes.toString(dataTableRowKey)).append(",");
sb.append(IndexVerificationOutputRepository.INDEX_TABLE_ROW_KEY + ": ").append(Bytes.toString(indexTableRowKey)).append(",");
sb.append(IndexVerificationOutputRepository.DATA_TABLE_TS + ": ").append(dataTableRowTimestamp).append(",");
sb.append(IndexVerificationOutputRepository.INDEX_TABLE_TS + ": ").append(indexTableRowTimestamp).append(",");
sb.append(IndexVerificationOutputRepository.ERROR_MESSAGE + ": ").append(errorMessage).append(",");
sb.append(IndexVerificationOutputRepository.EXPECTED_VALUE + ": ").append(Bytes.toString(expectedValue)).append(",");
sb.append(IndexVerificationOutputRepository.ACTUAL_VALUE + ": ").append(Bytes.toString(actualValue)).append(
",");
sb.append(IndexVerificationOutputRepository.VERIFICATION_PHASE + ": ").append(Bytes.toString(phaseValue));
return sb.toString();
}
public static class IndexVerificationOutputRowBuilder {
private String dataTableName;
private String indexTableName;
private Long scanMaxTimestamp;
private byte[] dataTableRowKey;
private byte[] indexTableRowKey;
private long dataTableRowTimestamp;
private long indexTableRowTimestamp;
private String errorMessage;
private byte[] expectedValue;
private byte[] actualValue;
private byte[] phaseValue;
public IndexVerificationOutputRowBuilder setDataTableName(String dataTableName) {
this.dataTableName = dataTableName;
return this;
}
public IndexVerificationOutputRowBuilder setIndexTableName(String indexTableName) {
this.indexTableName = indexTableName;
return this;
}
public IndexVerificationOutputRowBuilder setScanMaxTimestamp(Long scanMaxTimestamp) {
this.scanMaxTimestamp = scanMaxTimestamp;
return this;
}
public IndexVerificationOutputRowBuilder setIndexTableRowKey(byte[] indexTableRowKey) {
this.indexTableRowKey = indexTableRowKey;
return this;
}
public IndexVerificationOutputRowBuilder setDataTableRowKey(byte[] dataTableRowKey){
this.dataTableRowKey = dataTableRowKey;
return this;
}
public IndexVerificationOutputRowBuilder setDataTableRowTimestamp(long dataTableRowTimestamp) {
this.dataTableRowTimestamp = dataTableRowTimestamp;
return this;
}
public IndexVerificationOutputRowBuilder setIndexTableRowTimestamp(long indexTableRowTimestamp) {
this.indexTableRowTimestamp = indexTableRowTimestamp;
return this;
}
public IndexVerificationOutputRowBuilder setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
return this;
}
public IndexVerificationOutputRowBuilder setExpectedValue(byte[] expectedValue) {
this.expectedValue = expectedValue;
return this;
}
public IndexVerificationOutputRowBuilder setActualValue(byte[] actualValue) {
this.actualValue = actualValue;
return this;
}
public IndexVerificationOutputRowBuilder setPhaseValue(byte[] phaseValue) {
this.phaseValue = phaseValue;
return this;
}
public IndexVerificationOutputRow build() {
return new IndexVerificationOutputRow(dataTableName, indexTableName, dataTableRowKey,
scanMaxTimestamp, indexTableRowKey, dataTableRowTimestamp, indexTableRowTimestamp,
errorMessage, expectedValue, actualValue, phaseValue);
}
}
}