private Optional<File> linkFromDir() { final File fromDir = new File( Optional.ofNullable(LINK_FROM.get()) .or(() -> diagramPackage() .map(namespace -> namespace.name) .map(packageName -> packageName.replace('.', '/')) .map(packageDir -> getRootUMLPart().config.destinationDirectory() + "/" + packageDir)) .orElseGet(() -> getRootUMLPart().config.destinationDirectory())); return fromDir.isDirectory() ? Optional.of(fromDir) : Optional.empty(); }
public static Link forType(Type type) { final String destinationDirectory = type.getConfiguration().destinationDirectory(); final String packageName = type.getNamespace().name; final String nameInPackage = type.getName().qualified.startsWith(packageName + ".") ? type.getName().qualified.substring(packageName.length() + 1) : type.getName().simple; Optional<URI> target = relativeHtmlFile(destinationDirectory, packageName, nameInPackage) .or(() -> type.getConfiguration().resolveExternalLinkToType(packageName, nameInPackage)); return new Link(type, target.orElse(null)); }