package io.budgetapp.configuration; import com.bazaarvoice.dropwizard.assets.AssetsBundleConfiguration; import com.bazaarvoice.dropwizard.assets.AssetsConfiguration; import com.fasterxml.jackson.annotation.JsonProperty; import io.budgetapp.model.Budget; import io.budgetapp.model.Category; import io.dropwizard.Configuration; import io.dropwizard.db.DataSourceFactory; import javax.validation.Valid; import javax.validation.constraints.NotNull; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; /** * */ public class AppConfiguration extends Configuration implements AssetsBundleConfiguration { @Valid @NotNull private DataSourceFactory database = new DataSourceFactory(); @Valid @NotNull private final AssetsConfiguration assets = new AssetsConfiguration(); @Valid @NotNull private List<Category> categories = new ArrayList<>(); @Valid @NotNull @JsonProperty("budgets") private Map<String, List<Budget>> budgets = new LinkedHashMap<>(); public DataSourceFactory getDataSourceFactory() { return database; } @Override public AssetsConfiguration getAssetsConfiguration() { return assets; } @JsonProperty("assets") public AssetsConfiguration getAssets() { return assets; } @JsonProperty("database") public void setDatabase(DataSourceFactory database) { this.database = database; } @JsonProperty("categories") public void setCategories(List<Category> categories) { this.categories = categories; } public void setBudgets(Map<String, List<Budget>> budgets) { this.budgets = budgets; } public List<Category> getCategories() { return categories; } public Map<String, List<Budget>> getBudgets() { return budgets; } }