package com.linkedin.thirdeye.dashboard.configs;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.linkedin.thirdeye.api.CollectionSchema;
public class WebappConfigFactory {
private static final Logger LOG = LoggerFactory.getLogger(WebappConfigFactory.class);
public enum WebappConfigType {
COLLECTION_CONFIG,
COLLECTION_SCHEMA,
DASHBOARD_CONFIG
}
public static AbstractConfig getConfigFromConfigTypeAndJson(WebappConfigType configType, String payload) {
AbstractConfig config = null;
try {
switch (configType) {
case COLLECTION_CONFIG:
config = AbstractConfig.fromJSON(payload, CollectionConfig.class);
break;
case COLLECTION_SCHEMA:
config = AbstractConfig.fromJSON(payload, CollectionSchema.class);
break;
case DASHBOARD_CONFIG:
config = AbstractConfig.fromJSON(payload, DashboardConfig.class);
break;
default:
throw new UnsupportedOperationException("Invalid config type " + configType);
}
} catch (Exception e) {
LOG.error("Invalid payload {} for configType {}", payload, configType, e);
}
return config;
}
}