package org.gcube.informationsystem.utils.documentation.knowledge; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; import java.util.TreeSet; import org.gcube.informationsystem.types.reference.properties.LinkedEntity; public class ResourceKnowledge { private static ResourceKnowledge singleton; public static ResourceKnowledge getInstace() { if(ResourceKnowledge.singleton==null) { ResourceKnowledge.singleton = new ResourceKnowledge(); } return ResourceKnowledge.singleton; } protected Map> map; private ResourceKnowledge(){ this.map = new LinkedHashMap<>(); } protected void add(String typeName, LinkedEntity linkedEntity) { Set list = map.get(typeName); if(list==null) { list = new TreeSet<>(); map.put(typeName, list); } list.add(linkedEntity); } public void add(LinkedEntity linkedEntity) { String source = linkedEntity.getSource(); add(source, linkedEntity); String relation = linkedEntity.getRelation(); add(relation, linkedEntity); String target = linkedEntity.getTarget(); add(target, linkedEntity); } public void addAll(List linkedEntities) { for(LinkedEntity le : linkedEntities) { add(le); } } public Set getUsage(String typeName){ Set list = map.get(typeName); return list; } }