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

74 lines
1.8 KiB
Java

package org.gcube.informationsystem.utils.documentation.knowledge;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import org.gcube.informationsystem.types.reference.properties.LinkedEntity;
/**
* @author Luca Frosini (ISTI - CNR)
*/
public class UsageKnowledge {
private static UsageKnowledge facetKnowledge;
private static UsageKnowledge resourceKnowledge;
public static UsageKnowledge getFacetKnowledge() {
if(UsageKnowledge.facetKnowledge==null) {
UsageKnowledge.facetKnowledge = new UsageKnowledge();
}
return UsageKnowledge.facetKnowledge;
}
public static UsageKnowledge getResourceKnowledge() {
if(UsageKnowledge.resourceKnowledge==null) {
UsageKnowledge.resourceKnowledge = new UsageKnowledge();
}
return UsageKnowledge.resourceKnowledge;
}
protected Map<String, Set<LinkedEntity>> map;
private UsageKnowledge(){
this.map = new LinkedHashMap<>();
}
protected void add(String typeName, LinkedEntity linkedEntity) {
Set<LinkedEntity> list = map.get(typeName);
if(list==null) {
list = new TreeSet<>();
map.put(typeName, list);
}
list.add(linkedEntity);
}
public void add(LinkedEntity linkedEntity) {
if(linkedEntity!=null) {
String source = linkedEntity.getSource();
add(source, linkedEntity);
String relation = linkedEntity.getRelation();
add(relation, linkedEntity);
String target = linkedEntity.getTarget();
add(target, linkedEntity);
}
}
public void addAll(Collection<LinkedEntity> linkedEntities) {
if(linkedEntities!=null) {
for(LinkedEntity le : linkedEntities) {
add(le);
}
}
}
public Set<LinkedEntity> getUsage(String typeName){
Set<LinkedEntity> list = map.get(typeName);
return list;
}
}