information-system-model/src/main/java/org/gcube/informationsystem/discovery/knowledge/ClassInformation.java

39 lines
931 B
Java
Raw Normal View History

2023-10-26 17:26:24 +02:00
package org.gcube.informationsystem.discovery.knowledge;
2023-02-03 19:13:04 +01:00
import java.util.LinkedHashSet;
import java.util.Set;
import org.gcube.informationsystem.base.reference.Element;
2023-02-06 11:07:52 +01:00
import org.gcube.informationsystem.tree.NodeInformation;
2023-02-03 19:13:04 +01:00
import org.gcube.informationsystem.types.TypeMapper;
2023-02-06 11:07:52 +01:00
/**
* @author Luca Frosini (ISTI - CNR)
*/
public class ClassInformation implements NodeInformation<Class<Element>> {
2023-02-03 19:13:04 +01:00
@Override
public String getIdentifier(Class<Element> clz) {
return TypeMapper.getType(clz);
}
@Override
public Set<String> getParentIdentifiers(Class<Element> root, Class<Element> clz) {
Set<String> ret = new LinkedHashSet<>();
if(clz == root) {
return ret;
}
Class<?>[] interfaces = clz.getInterfaces();
for(Class<?> i : interfaces) {
if(root.isAssignableFrom(i)) {
@SuppressWarnings("unchecked")
String id = getIdentifier((Class<Element>) i);
ret.add(id);
}
}
return ret;
}
}