package com.illumina.basespace.igv; import java.util.ArrayList; import java.util.List; import java.util.Properties; import com.illumina.basespace.ApiConfiguration; /** * * @author bking * */ public class BaseSpaceConfiguration extends Properties { public static final String SYSTEM_NAMESPACE = "illumina.igv.basespace."; public static final String VERSION = SYSTEM_NAMESPACE + "version"; public static final String ROOT_URI = SYSTEM_NAMESPACE + "api.root.uri"; public static final String ACCESS_TOKEN_FRAGMENT = SYSTEM_NAMESPACE + "access.token.fragment"; public static final String AUTHORIZATION_FRAGMENT = SYSTEM_NAMESPACE + "authorization.fragment"; public static final String AUTHORIZATION_SCOPE = SYSTEM_NAMESPACE + "authorization.scope"; public static final String ACCESS_TOKEN = SYSTEM_NAMESPACE + "access.token"; public static final String PROJECT_ID = SYSTEM_NAMESPACE + "project"; public static final String APPRESULT_ID = SYSTEM_NAMESPACE + "appresult"; public static final String APPSESSION_ID = SYSTEM_NAMESPACE + "appsession"; public static final String SAMPLE_ID = SYSTEM_NAMESPACE + "sample"; public static final String FILE_ID = SYSTEM_NAMESPACE + "file"; public static final String DEBUG = SYSTEM_NAMESPACE + "debug"; public static final String PROXY_HOST = SYSTEM_NAMESPACE + "sdk.proxy.host"; public static final String PROXY_PORT= SYSTEM_NAMESPACE + "sdk.proxy.port"; private BaseSpaceConfiguration() { } public static String[]extractBaseSpaceArgs(String[] args) { List<String>baseSpaceArgs = new ArrayList<String>(); for(String arg:args) { if (arg.indexOf(SYSTEM_NAMESPACE) > -1) { baseSpaceArgs.add(arg); } } return baseSpaceArgs.toArray(new String[baseSpaceArgs.size()]); } public static String[]removeBaseSpaceArgs(String[] args) { List<String>rtn = new ArrayList<String>(); for(String arg:args) { if (arg.indexOf(SYSTEM_NAMESPACE) > -1) { continue; } rtn.add(arg); } return rtn.toArray(new String[rtn.size()]); } public static BaseSpaceConfiguration create(String[] args) { BaseSpaceConfiguration rtn = new BaseSpaceConfiguration(); for(String arg:args) { String[]parts = arg.split("="); rtn.put(parts[0], parts[1]); } return rtn; } public String getProjectId() { return getProperty(PROJECT_ID); } public String getAppResultId() { return getProperty(APPRESULT_ID); } public String getAppSessionId() { return getProperty(APPSESSION_ID); } @Override public String getProperty(String key) { String val = super.getProperty(key); if (val == null || val.equalsIgnoreCase("-1"))return null; return val; } public ApiConfiguration getApiConfiguration() { return new ApiConfiguration() { @Override public String getVersion() { return getValue(VERSION,true); } @Override public String getApiRootUri() { return getValue(ROOT_URI,true); } @Override public String getAccessTokenUriFragment() { return getValue(ACCESS_TOKEN_FRAGMENT,true); } @Override public String getAuthorizationUriFragment() { return getValue(AUTHORIZATION_FRAGMENT,true); } @Override public String getAuthorizationScope() { return getValue(AUTHORIZATION_SCOPE,true); } @Override public String getProxyHost() { return null; } @Override public int getProxyPort() { return 0; } @Override public String getAccessToken() { return getValue(ACCESS_TOKEN,true); } @Override public int getReadTimeout() { return 0; } @Override public int getConnectionTimeout() { return 0; } @Override public String getClientId() { return null; } @Override public String getClientSecret() { return null; } @Override public String getStoreRootUri() { return null; } }; } private String getValue(String key,boolean required) { if (get(key) == null && required)throw new IllegalArgumentException("Missing application argument " + key); return (String)get(key); } }