package com.github.nyrkovalex.ironadmin.core.pages;
import com.github.nyrkovalex.ironadmin.core.utils.IronContracts;
import com.github.nyrkovalex.ironadmin.core.utils.IronStrings;
import org.jetbrains.annotations.NotNull;
public class PageMapping {
private final String url;
private PageMapping(String url) {
this.url = url;
}
private static String fromClassName(String name) {
return "/" + IronStrings.splitCamelCaseToWords(name).stream()
.reduce((left, right) -> left + "-" + right)
.orElseThrow(AssertionError::new) + "s";
}
public static PageMapping of(@NotNull Class<?> entityClass) {
IronContracts.notNull(entityClass, "class");
return new PageMapping(fromClassName(entityClass.getSimpleName()));
}
public String getUrl() {
return url;
}
public static PageMapping of(@NotNull String url) {
IronContracts.notNullOrEmpty(url, "url");
return new PageMapping(url);
}
}