89 lines
3.0 KiB
Java
89 lines
3.0 KiB
Java
package org.gcube.phd;
|
|
|
|
import java.io.UnsupportedEncodingException;
|
|
import java.util.ArrayList;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Set;
|
|
|
|
import org.apache.commons.math3.stat.descriptive.SummaryStatistics;
|
|
import org.gcube.common.resources.gcore.GCoreEndpoint;
|
|
import org.gcube.common.resources.gcore.GenericResource;
|
|
import org.gcube.common.resources.gcore.HostingNode;
|
|
import org.gcube.common.resources.gcore.Resource;
|
|
import org.gcube.common.resources.gcore.ServiceEndpoint;
|
|
import org.gcube.common.resources.gcore.Software;
|
|
import org.gcube.common.scope.impl.ScopeBean;
|
|
import org.gcube.resources.discovery.client.api.DiscoveryClient;
|
|
import org.gcube.resources.discovery.client.queries.api.SimpleQuery;
|
|
import org.gcube.resources.discovery.icclient.ICFactory;
|
|
|
|
public class ContextStatistic {
|
|
|
|
private ScopeBean scopeBean;
|
|
|
|
public ScopeBean getScopeBean() {
|
|
return scopeBean;
|
|
}
|
|
|
|
private Map<Class<? extends Resource>,Set<ResourceInfo<? extends Resource>>> resourceMap;
|
|
private Map<Class<? extends Resource>,SummaryStatistics> statisticsMap;
|
|
|
|
public ContextStatistic(ScopeBean scopeBean) {
|
|
this.scopeBean = scopeBean;
|
|
}
|
|
|
|
public <R extends Resource> void analizeInstances(Class<R> clz) throws Exception {
|
|
Set<ResourceInfo<? extends Resource>> resources = resourceMap.get(clz);
|
|
|
|
DiscoveryClient<R> client = ICFactory.clientFor(clz);
|
|
SimpleQuery query = ICFactory.queryFor(clz);
|
|
List<R> instances = client.submit(query);
|
|
for(R r : instances) {
|
|
ResourceInfo<R> resourceInfo = new ResourceInfo<R>(r);
|
|
resources.add(resourceInfo);
|
|
}
|
|
}
|
|
|
|
public Map<Class<? extends Resource>,Set<ResourceInfo<? extends Resource>>> getAllResources() throws Exception {
|
|
if(resourceMap == null) {
|
|
resourceMap = new HashMap<>();
|
|
List<Class<? extends Resource>> classes = new ArrayList<>();
|
|
classes.add(GCoreEndpoint.class);
|
|
classes.add(HostingNode.class);
|
|
classes.add(ServiceEndpoint.class);
|
|
classes.add(GenericResource.class);
|
|
classes.add(Software.class);
|
|
|
|
for(Class<? extends Resource> clz : classes) {
|
|
analizeInstances(clz);
|
|
}
|
|
}
|
|
return resourceMap;
|
|
}
|
|
|
|
public static Map<Class<? extends Resource>,SummaryStatistics> generateStatistics(
|
|
Map<Class<? extends Resource>,Set<ResourceInfo<? extends Resource>>> resourceMap)
|
|
throws UnsupportedEncodingException {
|
|
Map<Class<? extends Resource>,SummaryStatistics> statisticsMap = new HashMap<>();
|
|
for(Class<? extends Resource> clz : resourceMap.keySet()) {
|
|
SummaryStatistics summaryStatistics = new SummaryStatistics();
|
|
Set<ResourceInfo<? extends Resource>> resources = resourceMap.get(clz);
|
|
for(ResourceInfo<? extends Resource> resourceInfo : resources) {
|
|
summaryStatistics.addValue(resourceInfo.getSize());
|
|
}
|
|
}
|
|
return statisticsMap;
|
|
}
|
|
|
|
public Map<Class<? extends Resource>,SummaryStatistics> getStatistcs() throws Exception {
|
|
if(statisticsMap == null) {
|
|
getAllResources();
|
|
statisticsMap = generateStatistics(resourceMap);
|
|
}
|
|
return statisticsMap;
|
|
}
|
|
|
|
}
|