Package edu.ohio_state.khatchad.refactoring.core

Source Code of edu.ohio_state.khatchad.refactoring.core.EnumConstantComparator

/**
*
*/
package edu.ohio_state.khatchad.refactoring.core;

import java.text.MessageFormat;
import java.util.Comparator;
import java.util.Map;

import org.eclipse.jdt.core.IField;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.dom.EnumConstantDeclaration;

import edu.ohio_state.khatchad.refactoring.Messages;

/**
* @author raffi
*
*/
public class EnumConstantComparator implements Comparator {

  private Map newEnumConstantToOldConstantFieldMap;

  public EnumConstantComparator(Map map) {
    this.newEnumConstantToOldConstantFieldMap = map;
  }

  public int compare(Object o1, Object o2) {
    if (!(o2 instanceof EnumConstantDeclaration && o2 instanceof EnumConstantDeclaration)) {
      String message = Messages.EnumConstantComparator_BothObjectsMustMatch;
      throw new IllegalArgumentException(MessageFormat.format(message, new Object[]{EnumConstantDeclaration.class.getName()}));
    }

    final IField f1 = (IField) this.newEnumConstantToOldConstantFieldMap.get(o1);
    final IField f2 = (IField) this.newEnumConstantToOldConstantFieldMap.get(o2);

    Object v1 = null;
    Object v2 = null;

    try {
      v1 = f1.getConstant();
      v2 = f2.getConstant();
    } catch (final JavaModelException E) {
      final ClassCastException ce = new ClassCastException(
          Messages.EnumConstantComparator_CannotCompare);
      ce.initCause(E);
      throw ce;
    }

    if (v1 == null || v2 == null) // no constant value.
      throw new ClassCastException(
          Messages.EnumConstantComparator_CannotCompareWithoutPrimitives);
    else
      return ((Comparable) v1).compareTo(v2);
  }
}
TOP

Related Classes of edu.ohio_state.khatchad.refactoring.core.EnumConstantComparator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.