String debugString = "\n";
debugString += (String.format("Creating new P2P query client instance: %d \n",instance));
AbstractP2PNetwork p2pInstance = networkInstance != null ? networkInstance : getP2PNetworkImplementation();
if (networkInstance == null) {
debugString += (String.format("P2P network: %s \nP2P configuration: %s \nP2P instance: %s \nhas local storage %s \n",p2pImplementationConstant,
(p2pImplementationConfiguration != null) ? getP2PConfig(p2pImplementationConfiguration) : "{}",p2pInstance,
p2pInstance.hasLocalStorage()));
} else {
debugString += (String.format("P2P network: %s \nP2P instance: %s \nhas local storage: %s \n",p2pInstance.getClass(),
p2pInstance,p2pInstance.hasLocalStorage()));
}
IDistribution distribution = getDistribution();
debugString += (String.format("DistributionStrategy: %s [%s] \n",distribution,distribution.getClass()));
P2P_SubgraphExecuter sgExecuter = new P2P_SubgraphExecuter() {
@Override
public String toString() {
return String.format("SubgraphExecuter for query client instance %s on node: %s \n",instance, p2p);
}
};
StorageWithDistributionStrategy storageInstance = invoke(storageClass.getName(),p2pInstance,distribution,bf);
if (storageConfiguration != null) {
storageConfiguration.doConfiguration(storageInstance);
debugString += (String.format("Storage: %s [%s] with manual configuration: %s \n",storageInstance,storageInstance.getClass(),storageConfiguration));
} else {
debugString += (String.format("Storage: %s [%s] \n",storageInstance,storageInstance.getClass()));
}
P2P_SG_QueryClient_WithSubgraph queryClientInstance = new P2P_SG_QueryClient_WithSubgraph(storageInstance,sgExecuter) {
@Override
public String toString() {
return String.format("QueryClient [%s]",instance);
}
};
if (useSubgraphSubmission)
debugString += (String.format("Query Client: %s with subgraph submission \n",queryClientInstance));
else
debugString += (String.format("Query Client: %s without subgraph submission \n",queryClientInstance));
queryClientInstance.setUseSubgraphSubmission(useSubgraphSubmission);
/*
* if a local storage is supported, use this for subgraph executer
*/
IStorage localStorage = (p2pInstance.hasLocalStorage()) ? p2pInstance.getLocalStorage(distribution) : storageInstance;
sgExecuter.setStorage(localStorage);
sgExecuter.setP2PNetwork(p2pInstance);
/*
* create an query evaluator for the local storage, which is evaluated in local storage
*/