package com.uaihebert.uaimockserver.repository; import com.uaihebert.uaimockserver.context.UaiMockServerContext; import com.uaihebert.uaimockserver.log.backend.Log; import com.uaihebert.uaimockserver.model.UaiRoute; import com.uaihebert.uaimockserver.util.FileUtil; import com.uaihebert.uaimockserver.util.RouteMapKeyUtil; import io.undertow.server.HttpServerExchange; import java.util.List; import java.util.Set; public final class UaiRouteRepository { private static final String ROUTE_FOUND_TEXT = "Found [%s] route(s) for the requested METHOD_URL [%s]"; private UaiRouteRepository() { } public static void configureRouteData() { UaiRouteMapper.configureRouteData(); UaiRouteMapper.loadMapByKey(); UaiRouteMapper.loadRouteByProject(); } public static UaiRoute findById(final String routeId) { return UaiRouteMapper.findById(routeId); } public static void addFromFile(final UaiRoute uaiRoute) { UaiRouteMapper.addRoute(uaiRoute); } public static void create(final UaiRoute uaiRoute) { UaiRouteMapper.addRoute(uaiRoute); UaiMockServerContext.getInstance().addRoute(uaiRoute); flushData(); } public static void update() { UaiRouteMapper.updateRoute(); flushData(); } public static void delete(final String routeId) { final UaiRoute routeToDelete = UaiRouteMapper.deleteRoute(routeId); UaiMockServerContext.getInstance().deleteRoute(routeToDelete); flushData(); } private static void flushData() { FileUtil.writeUpdatesToFile(); } public static Set<UaiRoute> findRouteListByKey(final HttpServerExchange httpServerExchange) { final String requestKey = RouteMapKeyUtil.createKeyFromRequest(httpServerExchange); final Set<UaiRoute> routeList = UaiRouteMapper.findRouteListByKey(requestKey); Log.infoFormatted(ROUTE_FOUND_TEXT, routeList.size(), requestKey); return routeList; } public static List<UaiRoute> listAllRoutes() { return listAllRoutes(UaiRouteMapper.ALL_PROJECT); } public static List<UaiRoute> listAllRoutes(final String selectedProject) { return UaiRouteMapper.listAllRoutes(selectedProject); } public static int count() { return listAllRoutes().size(); } public static void clearData() { UaiRouteMapper.resetRouteMapData(); } }