blob: af13185e93697dd3313b44a0e167b01720e1b432 [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.pig;
import java.io.Serializable;
import org.apache.pig.classification.InterfaceAudience;
import org.apache.pig.classification.InterfaceStability;
import org.apache.pig.impl.util.Utils;
/**
* A class representing information about a sort column in {@link SortInfo}
*/
@InterfaceAudience.Private
@InterfaceStability.Unstable
public class SortColInfo implements Serializable {
private static final long serialVersionUID = 1L;
// name of sort column
private String colName;
// index position (0 based) of sort column
private int colIndex;
public enum Order { ASCENDING, DESCENDING }
private Order sortOrder;
/**
* @param colName sort column name
* @param colIndex index position (0 based) of sort column
* @param orderingType whether the column is sorted ascending or descending
*/
public SortColInfo(String colName, int colIndex, Order orderingType) {
this.colName = colName;
this.colIndex = colIndex;
this.sortOrder = orderingType;
}
/**
* @return the sort column name - could be null or empty string if
* column name could not be determined either because of the absence of
* a schema or because the schema had the column name as null or empty
* string - caller should check for these conditions.
*/
public String getColName() {
return colName;
}
/**
* @return index position (0 based) of sort column
*/
public int getColIndex() {
return colIndex;
}
/**
* @return whether the column is sorted ascending or descending
*/
public Order getSortOrder() {
return sortOrder;
}
/* (non-Javadoc)
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((colName == null) ? 0 : colName.hashCode());
result = prime * result + colIndex;
result = prime * result + ((sortOrder == Order.ASCENDING) ? 1 : 2);
return result;
}
/* (non-Javadoc)
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object obj) {
if(!Utils.checkNullAndClass(this, obj)) {
return false;
}
SortColInfo other = (SortColInfo)obj;
return Utils.checkNullEquals(this.colName, other.colName, true) &&
this.colIndex == other.colIndex &&
this.sortOrder == other.sortOrder;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "colname:" + colName +",colindex:" + colIndex + ",orderingType:"
+ (sortOrder == Order.ASCENDING ? "ascending" : "descending");
}
}