All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eclipse.jdt.internal.core.dom.rewrite.imports.ImportComparator Maven / Gradle / Ivy

/*******************************************************************************
 * Copyright (c) 2014 Google Inc and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     John Glassmyer  - import group sorting is broken - https://bugs.eclipse.org/430303
 *******************************************************************************/
package org.eclipse.jdt.internal.core.dom.rewrite.imports;

import java.util.Comparator;

/**
 * Sorts imports by, in order of decreasing precedence, the following:
 * 
    *
  • configured import group order
  • *
  • package name and/or qualified name of containing type (lexicographically)
  • *
  • qualified name of import (lexicographically)
  • *
*/ final class ImportComparator implements Comparator { private static Comparator createQualifiedNameComparator() { return new Comparator() { @Override public int compare(ImportName o1, ImportName o2) { return o1.qualifiedName.compareTo(o2.qualifiedName); } }; } private final Comparator importGroupComparator; private final Comparator typeContainerComparator; private final Comparator staticContainerComparator; private final Comparator qualifiedNameComparator; ImportComparator( ImportGroupComparator importGroupComparator, Comparator typeContainerComparator, Comparator staticContainerComparator) { this.importGroupComparator = importGroupComparator; this.typeContainerComparator = typeContainerComparator; this.staticContainerComparator = staticContainerComparator; this.qualifiedNameComparator = createQualifiedNameComparator(); } @Override public int compare(ImportName o1, ImportName o2) { final int comparison; int importGroupComparison = this.importGroupComparator.compare(o1, o2); if (importGroupComparison != 0) { comparison = importGroupComparison; } else { // The two imports sorted into the same import group, so o2.isStatic == o1.isStatic. Comparator containerComparator = o1.isStatic ? this.staticContainerComparator : this.typeContainerComparator; int containerComparison = containerComparator.compare(o1, o2); if (containerComparison != 0) { comparison = containerComparison; } else { comparison = this.qualifiedNameComparator.compare(o1, o2); } } return comparison; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy