/********************************************************************************
 * Copyright (c) 2015-2021 Contributors to the Eclipse Foundation
 *
 * See the NOTICE file(s) distributed with this work for additional
 * information regarding copyright ownership.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 ********************************************************************************/

package org.eclipse.mdm.nodeprovider.entity;

import org.eclipse.mdm.api.base.adapter.Attribute;

/**
 * Represents an {@link Attribute} and its ordering.
 *
 */
public final class SortAttribute {
	private Attribute attribute;
	private Order order;

	/**
	 * Constructs an OrderAttribute with given attribute and ascending ordering
	 * 
	 * @param attribute
	 */
	public SortAttribute(Attribute attribute) {
		this(attribute, Order.ASCENDING);
	}

	/**
	 * Constructs an OrderAttribute with given attribute and ordering
	 * 
	 * @param attribute
	 * @param ascending
	 */
	public SortAttribute(Attribute attribute, Order ascending) {
		this.attribute = attribute;
		this.order = ascending;
	}

	/**
	 * @return the attribute
	 */
	public Attribute getAttribute() {
		return attribute;
	}

	/**
	 * @return the order
	 */
	public Order getOrder() {
		return order;
	}
}