package com.yoghurt.crypto.transactions.server.servlets;
import com.yoghurt.crypto.transactions.server.servlets.providers.BitcoinJSONRPCRetriever;
import com.yoghurt.crypto.transactions.server.servlets.providers.BlockrAPIRetriever;
import com.yoghurt.crypto.transactions.shared.domain.config.AdministratedApplicationConfig;
import com.yoghurt.crypto.transactions.shared.domain.config.BitcoinCoreNodeConfig;
import com.yoghurt.crypto.transactions.shared.service.BlockchainRetrievalService;
public class BlockchainRetrievalFactory {
private BlockchainRetrievalService hook;
private static BlockchainRetrievalFactory instance;
public static BlockchainRetrievalFactory create() {
if(instance == null) {
instance = new BlockchainRetrievalFactory();
}
return instance;
}
public static BlockchainRetrievalService get() {
return create().hook;
}
public static void set(final AdministratedApplicationConfig config) {
BlockchainRetrievalService hook;
switch (config.getBlockchainSource()) {
case NODE:
hook = new BitcoinJSONRPCRetriever((BitcoinCoreNodeConfig) config);
break;
default:
case BLOCKR_API:
hook = new BlockrAPIRetriever();
break;
}
set(hook);
}
private static void set(final BlockchainRetrievalService hook) {
create().hook = hook;
}
}