All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.mengxianun.core.Configuration Maven / Gradle / Ivy

The newest version!
package com.github.mengxianun.core;

import java.util.Collections;
import java.util.Map;

import javax.annotation.Nullable;

import com.github.mengxianun.core.permission.PermissionPolicy;
import com.google.auto.value.AutoValue;

@AutoValue
public abstract class Configuration {

	private static final String DEFAULT_CONFIG_FILE = "air.json";
	private static final String DEFAULT_TABLE_CONFIG_PATH = "tables";
	private static final String DEFAULT_ASSOCIATION_CONNECTOR = "__";

	public abstract String configFile();

	public abstract String datasources();

	@Nullable
	public abstract String defaultDatasource();

	public abstract boolean sqlEnabled();

	public abstract boolean nativeEnabled();

	public abstract String tableConfigPath();

	@Nullable
	public abstract String tableAliasExpression();

	public abstract String associationConnector();

	public abstract PermissionPolicy permissionPolicy();

	public abstract Map columnConfigInfos();

	public abstract RefreshPolicy metadataRefreshPolicy();

	public abstract int metadataRefreshInterval();

	public abstract boolean joinOnMultiColumn();

	public static Builder builder() {
		return new AutoValue_Configuration.Builder().configFile(DEFAULT_CONFIG_FILE).sqlEnabled(false)
				.nativeEnabled(false)
				.tableConfigPath(DEFAULT_TABLE_CONFIG_PATH).associationConnector(DEFAULT_ASSOCIATION_CONNECTOR)
				.permissionPolicy(PermissionPolicy.ALLOW_ALL).columnConfigInfos(Collections.emptyMap())
				.metadataRefreshPolicy(RefreshPolicy.NEVER).metadataRefreshInterval(-1).joinOnMultiColumn(false);
	}

	@AutoValue.Builder
	public abstract static class Builder {

		public abstract Builder configFile(String configFile);

		public abstract Builder datasources(String datasources);

		public abstract Builder defaultDatasource(String defaultDatasource);

		public abstract Builder sqlEnabled(boolean sqlEnabled);

		public abstract Builder nativeEnabled(boolean nativeEnabled);

		public abstract Builder tableConfigPath(String tableConfigPath);

		public abstract Builder tableAliasExpression(String tableAliasExpression);

		public abstract Builder associationConnector(String associationConnector);

		public abstract Builder permissionPolicy(PermissionPolicy permissionPolicy);

		public abstract Builder columnConfigInfos(Map columnConfigInfos);

		public abstract Builder metadataRefreshPolicy(RefreshPolicy metadataRefreshPolicy);

		public abstract Builder metadataRefreshInterval(int metadataRefreshInterval);

		public abstract Builder joinOnMultiColumn(boolean joinOnMultiColumn);

		public abstract Configuration build();
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy