46 lines
1.0 KiB
Java
46 lines
1.0 KiB
Java
package org.gcube.informationsystem.utils.documentation.knowledge;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Set;
|
|
|
|
import org.gcube.informationsystem.types.reference.Type;
|
|
|
|
public class TypesKnowledge<T extends Type> {
|
|
|
|
protected Map<String, T> typeByName;
|
|
protected Map<Integer, Set<T>> typesByLevels;
|
|
protected Map<String, Integer> levelOfTypes;
|
|
protected Map<String, Set<String>> children;
|
|
|
|
public TypesKnowledge() {
|
|
this.typeByName = new HashMap<>();
|
|
this.typesByLevels = new HashMap<>();
|
|
this.levelOfTypes = new HashMap<>();
|
|
this.children = new HashMap<>();
|
|
}
|
|
|
|
public void addType(T type) {
|
|
typeByName.put(type.getName(), type);
|
|
Set<String> superClasses = type.getSuperClasses();
|
|
for(String superClass : superClasses) {
|
|
|
|
}
|
|
}
|
|
|
|
public Set<T> getTypesByLevel(int level) {
|
|
return typesByLevels.get(level);
|
|
}
|
|
|
|
public int getTypeLevel(Type type) {
|
|
return getTypeLevel(type.getName());
|
|
}
|
|
|
|
public int getTypeLevel(String typeName) {
|
|
return levelOfTypes.get(typeName);
|
|
}
|
|
|
|
|
|
}
|