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

com.undefinedlabs.scope.utils.ClassNameUtils Maven / Gradle / Ivy

package com.undefinedlabs.scope.utils;

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;

public enum ClassNameUtils {
  INSTANCE;

  public String getMostInnerClassName(final String className) {
    if (StringUtils.isEmpty(className)) {
      return null;
    }

    final int lastIndexOfDot = className.lastIndexOf(".");
    final String classNameNoPackage = className.substring(lastIndexOfDot + 1);

    final String[] classesName = classNameNoPackage.split("\\$");

    for (int i = classesName.length - 1; i >= 0; i--) {
      final String classNameChunk = classesName[i];
      if (!StringUtils.isNumeric(classNameChunk)) {
        return classNameChunk;
      }
    }

    return null;
  }

  public String extractClassNameFromSource(final File file) throws IOException {
    return buildFqClassName(
        PackageUtils.extractPackageFromSource(file.getCanonicalPath()), file.getName());
  }

  private String buildFqClassName(final String packageName, final String fileName) {
    return packageName
        .concat(StringUtils.isNotEmpty(packageName) ? "." : "")
        .concat(FilenameUtils.removeExtension(fileName))
        .trim();
  }

  public String extractBaseClassName(final String className) {
    return className.contains("$") ? className.substring(0, className.indexOf("$")) : className;
  }

  public String extractSourceFileName(final String className, final String extension) {
    final String baseClassName = extractBaseClassName(className);
    final String[] baseClassNameChunks = baseClassName.split("\\.");
    return baseClassNameChunks[baseClassNameChunks.length - 1].concat(".").concat(extension);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy