package com.uaihebert.uaimockserver.context;
import com.uaihebert.uaimockserver.factory.UaiMockServerConfigFactory;
import com.uaihebert.uaimockserver.log.backend.Log;
import com.uaihebert.uaimockserver.log.backend.LogBuilder;
import com.uaihebert.uaimockserver.model.UaiMockServerConfig;
import com.uaihebert.uaimockserver.model.UaiRoute;
import com.uaihebert.uaimockserver.repository.UaiRouteRepository;
import java.util.ArrayList;
import java.util.List;
public final class UaiMockServerContext {
private static final String DEFAULT_CONFIGURATION_FILE_NAME = "uaiMockServer.json";
private static UaiMockServerContext INSTANCE;
public final UaiMockServerConfig uaiMockServerConfig;
public final List<UaiMockServerConfig> secondaryMappingList = new ArrayList<UaiMockServerConfig>();
private UaiMockServerContext(final UaiMockServerConfig uaiMockServerConfig) {
this.uaiMockServerConfig = uaiMockServerConfig;
}
public static void createInstance() {
createInstance(DEFAULT_CONFIGURATION_FILE_NAME);
}
public static void createInstance(final String fileName) {
final UaiMockServerConfig uaiMockServerConfig = UaiMockServerConfigFactory.create(fileName);
INSTANCE = new UaiMockServerContext(uaiMockServerConfig);
final List<UaiMockServerConfig> secondaryMappingList = UaiMockServerConfigFactory.create(INSTANCE.uaiMockServerConfig.getMappingRoutesFileList());
INSTANCE.secondaryMappingList.addAll(secondaryMappingList);
LogBuilder.createInstance();
UaiRouteRepository.configureRouteData();
Log.infoFormatted("Configurations of the file [%s] was read with success", fileName);
}
public void addRoute(final UaiRoute uaiRoute) {
// today is only allowed to add a route in the main config file
// for the future, a new feature is to allow to save in any file
uaiMockServerConfig.getRouteList().add(uaiRoute);
}
public void deleteRoute(final UaiRoute uaiRoute) {
if (uaiMockServerConfig.getUaiFile().getFullPath().equals(uaiRoute.getUaiFile().getFullPath())) {
uaiMockServerConfig.getRouteList().remove(uaiRoute);
return;
}
for (UaiMockServerConfig secondaryConfiguration : secondaryMappingList) {
if (secondaryConfiguration.getUaiFile().getFullPath().equals(uaiRoute.getUaiFile().getFullPath())) {
secondaryConfiguration.getRouteList().remove(uaiRoute);
return;
}
}
}
public static UaiMockServerContext getInstance() {
return INSTANCE;
}
}