use of com.bakdata.conquery.model.Base in project conquery by bakdata.
the class GroupHandler method handle.
public void handle() throws IOException {
out.heading(group.getName());
out.paragraph("This is an automatically created documentation. It is not 100% accurate since the generator does not handle every edge case.");
out.paragraph("Instead of a list ConQuery also always accepts a single element.");
if (group.getDescription() != null) {
out.paragraph(group.getDescription());
}
for (Base base : group.getBases()) {
content.putAll(base, scan.getAllClasses().stream().filter(c -> c.hasAnnotation(CPS_TYPE)).flatMap(c -> Arrays.stream(c.loadClass().getAnnotationsByType(CPSType.class)).map(anno -> Pair.of(anno, c))).filter(p -> p.getLeft().base().equals(base.getBaseClass())).collect(Collectors.toList()));
}
for (Class<?> resource : group.getResources()) {
collectEndpoints(resource);
}
if (!endpoints.isEmpty()) {
out.heading("REST endpoints");
for (Pair<String, MethodInfo> endpoint : endpoints.stream().sorted(Comparator.comparing(Pair::getLeft)).collect(Collectors.toList())) {
handleEndpoint(endpoint.getLeft(), endpoint.getRight());
}
}
for (Base base : group.getBases()) {
handleBase(base);
}
out.subHeading("Other Types");
for (Class<?> t : group.getOtherClasses().stream().sorted(Comparator.comparing(Class::getSimpleName)).collect(Collectors.toList())) {
handleClass(typeTitle(t), scan.getClassInfo(t.getName()));
}
if (!group.getMarkerInterfaces().isEmpty()) {
out.subHeading("Marker Interfaces");
for (Class<?> t : group.getMarkerInterfaces().stream().sorted(Comparator.comparing(Class::getSimpleName)).collect(Collectors.toList())) {
handleMarkerInterface(markerTitle(t), scan.getClassInfo(t.getName()));
}
}
}
use of com.bakdata.conquery.model.Base in project conquery by bakdata.
the class GroupHandler method printType.
private String printType(Ctx ctx, TypeSignature type) {
if (type instanceof ArrayTypeSignature) {
return LIST_OF + printType(ctx, ((ArrayTypeSignature) type).getElementTypeSignature());
}
if (type instanceof BaseTypeSignature) {
return code(type.toString());
}
if (type instanceof ClassRefTypeSignature) {
ClassRefTypeSignature classRef = (ClassRefTypeSignature) type;
Class<?> cl = classRef.loadClass();
// ID
if (IId.class.isAssignableFrom(cl)) {
String name = cl.getSimpleName();
return ID_OF + code(name.substring(0, name.length() - 2));
}
// File
if (File.class.isAssignableFrom(cl)) {
// we could check if dir or file here
return code("File");
}
// List
if (List.class.isAssignableFrom(cl)) {
TypeArgument param = classRef.getTypeArguments().get(0);
return LIST_OF + printType(ctx.withGeneric(true), param);
}
// Map
if (BiMap.class.isAssignableFrom(cl)) {
return "bijective map from " + printType(ctx.withGeneric(true), classRef.getTypeArguments().get(0)) + " to " + printType(ctx.withGeneric(true), classRef.getTypeArguments().get(1));
}
if (ClassToInstanceMap.class.isAssignableFrom(cl)) {
return "ClassToInstanceMap maps from base class " + printType(ctx.withGeneric(true), classRef.getTypeArguments().get(0)) + " to instances of subtypes";
}
if (Map.class.isAssignableFrom(cl)) {
return "map from " + printType(ctx.withGeneric(true), classRef.getTypeArguments().get(0)) + " to " + printType(ctx.withGeneric(true), classRef.getTypeArguments().get(1));
}
// String
if (String.class.isAssignableFrom(cl)) {
return code("String");
}
// another BaseClass
if (content.keySet().stream().map(Base::getBaseClass).anyMatch(c -> c.equals(cl))) {
return "[" + type.toStringWithSimpleNames() + "](" + anchor(baseTitle(cl)) + ")";
}
// another contentClass
Optional<Pair<CPSType, ClassInfo>> match = content.values().stream().filter(p -> p.getRight().loadClass().equals(cl)).collect(MoreCollectors.toOptional());
if (match.isPresent()) {
return "[" + match.get().getLeft().id() + "](" + anchor(match.get().getLeft().id()) + ")";
}
if (content.keySet().stream().map(Base::getBaseClass).anyMatch(c -> c.equals(cl))) {
return "[" + type.toStringWithSimpleNames() + "](" + anchor(baseTitle(cl)) + ")";
}
// another class in the group
if (group.getOtherClasses().contains(cl)) {
return "[" + cl.getSimpleName() + "](" + anchor(typeTitle(cl)) + ")";
}
// a marker interface
if (group.getMarkerInterfaces().contains(cl)) {
return "[" + cl.getSimpleName() + "](" + anchor(markerTitle(cl)) + ")";
}
// ENUM
if (Enum.class.isAssignableFrom(cl)) {
return "one of " + Arrays.stream(cl.getEnumConstants()).map(Enum.class::cast).map(Enum::name).collect(Collectors.joining(", "));
}
if (Primitives.isWrapperType(cl)) {
return "`" + Primitives.unwrap(cl).getSimpleName() + "`" + (ctx.isIdOf() ? "" : " or `null`");
}
// default for hidden types
if (group.getHides().contains(cl)) {
return code(type.toStringWithSimpleNames());
}
}
if (!ctx.isIdOf()) {
log.warn("Unhandled type {}", type);
}
return code(type.toStringWithSimpleNames());
}
Aggregations