information-system-model-do.../src/main/java/org/gcube/informationsystem/utils/documentation/knowledge/Knowledge.java

57 lines
1.3 KiB
Java

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<String, List<LinkedEntity>> map;
private Knowledge(){
this.map = new LinkedHashMap<>();
}
protected void add(String typeName, LinkedEntity linkedEntity) {
List<LinkedEntity> 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<LinkedEntity> linkedEntities) {
for(LinkedEntity le : linkedEntities) {
add(le);
}
}
public List<LinkedEntity> getUsage(String typeName){
List<LinkedEntity> list = map.get(typeName);
return list;
}
}