package org.gcube.informationsystem.utils.documentation.knowledge; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import org.gcube.informationsystem.types.reference.properties.LinkedEntity; public class Knowledge { private static Knowledge singleton; public static Knowledge getInstace() { if(Knowledge.singleton==null) { Knowledge.singleton = new Knowledge(); } return Knowledge.singleton; } protected Map> map; private Knowledge(){ this.map = new LinkedHashMap<>(); } protected void add(String typeName, LinkedEntity linkedEntity) { List list = map.get(typeName); if(list==null) { list = new ArrayList<>(); 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 List getUsage(String typeName){ List list = map.get(typeName); return list; } }