/* * Copyright 2015-2016 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.opencb.opencga.catalog.config; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import org.opencb.opencga.catalog.models.acls.permissions.StudyAclEntry; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.List; /** * Created by imedina on 16/03/16. */ public class Configuration { private String logLevel; private String logFile; private boolean openRegister; private int userDefaultQuota; private String databasePrefix; private String dataDir; private String tempJobsDir; private String toolDir; private Admin admin; private List<AuthenticationOrigin> authenticationOrigins; private Monitor monitor; private Execution execution; private Audit audit; private List<StudyAclEntry> acl; private Email email; private Catalog catalog; private ServerConfiguration server; protected static Logger logger = LoggerFactory.getLogger(Configuration.class); public Configuration() { } // public CatalogConfiguration(String defaultStorageEngineId, List<StorageEngineConfiguration> storageEngines) { // this.defaultStorageEngineId = defaultStorageEngineId; // this.storageEngines = storageEngines; // // this.cellbase = new CellBaseConfiguration(); // this.server = new QueryServerConfiguration(); // } public void serialize(OutputStream configurationOututStream) throws IOException { ObjectMapper yamlMapper = new ObjectMapper(new YAMLFactory()); yamlMapper.writerWithDefaultPrettyPrinter().writeValue(configurationOututStream, this); } public static Configuration load(InputStream configurationInputStream) throws IOException { return load(configurationInputStream, "yaml"); } public static Configuration load(InputStream configurationInputStream, String format) throws IOException { Configuration configuration; ObjectMapper objectMapper; switch (format) { case "json": objectMapper = new ObjectMapper(); configuration = objectMapper.readValue(configurationInputStream, Configuration.class); break; case "yml": case "yaml": default: objectMapper = new ObjectMapper(new YAMLFactory()); configuration = objectMapper.readValue(configurationInputStream, Configuration.class); break; } return configuration; } @Override public String toString() { final StringBuilder sb = new StringBuilder("Configuration{"); sb.append("logLevel='").append(logLevel).append('\''); sb.append(", logFile='").append(logFile).append('\''); sb.append(", openRegister=").append(openRegister); sb.append(", userDefaultQuota=").append(userDefaultQuota); sb.append(", databasePrefix='").append(databasePrefix).append('\''); sb.append(", dataDir='").append(dataDir).append('\''); sb.append(", tempJobsDir='").append(tempJobsDir).append('\''); sb.append(", toolDir='").append(toolDir).append('\''); sb.append(", admin=").append(admin); sb.append(", authenticationOrigins=").append(authenticationOrigins); sb.append(", monitor=").append(monitor); sb.append(", execution=").append(execution); sb.append(", audit=").append(audit); sb.append(", acl=").append(acl); sb.append(", email=").append(email); sb.append(", catalog=").append(catalog); sb.append(", server=").append(server); sb.append('}'); return sb.toString(); } public String getLogLevel() { return logLevel; } public Configuration setLogLevel(String logLevel) { this.logLevel = logLevel; return this; } public String getLogFile() { return logFile; } public Configuration setLogFile(String logFile) { this.logFile = logFile; return this; } public boolean isOpenRegister() { return openRegister; } public Configuration setOpenRegister(boolean openRegister) { this.openRegister = openRegister; return this; } public int getUserDefaultQuota() { return userDefaultQuota; } public Configuration setUserDefaultQuota(int userDefaultQuota) { this.userDefaultQuota = userDefaultQuota; return this; } public String getDatabasePrefix() { return databasePrefix; } public Configuration setDatabasePrefix(String databasePrefix) { this.databasePrefix = databasePrefix; return this; } public String getDataDir() { return dataDir; } public Configuration setDataDir(String dataDir) { this.dataDir = dataDir; return this; } public String getTempJobsDir() { return tempJobsDir; } public Configuration setTempJobsDir(String tempJobsDir) { this.tempJobsDir = tempJobsDir; return this; } public String getToolDir() { return toolDir; } public Configuration setToolDir(String toolDir) { this.toolDir = toolDir; return this; } public Admin getAdmin() { return admin; } public Configuration setAdmin(Admin admin) { this.admin = admin; return this; } public List<AuthenticationOrigin> getAuthenticationOrigins() { return authenticationOrigins; } public Configuration setAuthenticationOrigins(List<AuthenticationOrigin> authenticationOrigins) { this.authenticationOrigins = authenticationOrigins; return this; } public Monitor getMonitor() { return monitor; } public Configuration setMonitor(Monitor monitor) { this.monitor = monitor; return this; } public Execution getExecution() { return execution; } public Configuration setExecution(Execution execution) { this.execution = execution; return this; } public Email getEmail() { return email; } public Configuration setEmail(Email email) { this.email = email; return this; } public Catalog getCatalog() { return catalog; } public Configuration setCatalog(Catalog catalog) { this.catalog = catalog; return this; } public Audit getAudit() { return audit; } public Configuration setAudit(Audit audit) { this.audit = audit; return this; } public List<StudyAclEntry> getAcl() { return acl; } public Configuration setAcl(List<StudyAclEntry> acl) { this.acl = acl; return this; } public ServerConfiguration getServer() { return server; } public Configuration setServer(ServerConfiguration server) { this.server = server; return this; } }