package net.sourceforge.seqware.common.metadata;
import io.seqware.pipeline.SqwKeys;
import java.sql.SQLException;
import java.util.Map;
public final class MetadataFactory {
public static final String NO_DATABASE_CONFIG = "Missing some of the following required settings:" + SqwKeys.SW_DB_SERVER + ","
+ SqwKeys.SW_DB + "," + SqwKeys.SW_DB_USER + "," + SqwKeys.SW_DB_PASS;
public static Metadata get(Map<String, String> settings) {
String method = settings.get(SqwKeys.SW_METADATA_METHOD.getSettingKey());
if ("database".equals(method)) {
return getDB(settings);
} else if ("webservice".equals(method)) {
return getWS(settings);
} else if ("none".equals(method)) {
return getNoOp();
} else if ("inmemory".equals(method)) {
return getInMemory();
} else {
throw new RuntimeException("Missing SW_METADATA_METHOD entry in seqware settings.");
}
}
public static MetadataWS getWS(Map<String, String> settings) {
String url = settings.get(SqwKeys.SW_REST_URL.getSettingKey());
String user = settings.get(SqwKeys.SW_REST_USER.getSettingKey());
String pass = settings.get(SqwKeys.SW_REST_PASS.getSettingKey());
if (url == null || user == null || pass == null) {
throw new RuntimeException("Missing some of the following required settings: " + SqwKeys.SW_REST_URL + ","
+ SqwKeys.SW_REST_USER + "," + SqwKeys.SW_REST_PASS);
}
return new MetadataWS(url, user, pass);
}
public static MetadataDB getDB(Map<String, String> settings) {
String server = settings.get(SqwKeys.SW_DB_SERVER.getSettingKey());
String dbName = settings.get(SqwKeys.SW_DB.getSettingKey());
String user = settings.get(SqwKeys.SW_DB_USER.getSettingKey());
String pass = settings.get(SqwKeys.SW_DB_PASS.getSettingKey());
if (server == null || dbName == null || user == null || pass == null) {
throw new RuntimeException(NO_DATABASE_CONFIG);
}
String url = "jdbc:postgresql://" + server + "/" + dbName;
try {
return new MetadataDB(url, user, pass);
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
public static MetadataNoConnection getNoOp() {
return new MetadataNoConnection();
}
public static MetadataInMemory getInMemory() {
return new MetadataInMemory();
}
}