FlywayDbWebsiteLinks.java
/*-
* ========================LICENSE_START=================================
* flyway-core
* ========================================================================
* Copyright (C) 2010 - 2026 Red Gate Software Ltd
* ========================================================================
* 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.
* =========================LICENSE_END==================================
*/
package org.flywaydb.core.internal.util;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import java.util.Optional;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.flywaydb.core.api.FlywayException;
import org.flywaydb.core.internal.license.VersionPrinter;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class FlywayDbWebsiteLinks {
public static final String TRY_TEAMS_EDITION = "https://rd.gt/2VzHpkY";
public static final String REDGATE_EDITION_DOWNLOAD = "https://rd.gt/3GGIXhh";
public static final String FILTER_INFO_OUTPUT = "https://rd.gt/3jqLqAn";
public static final String USAGE_COMMANDLINE = "https://rd.gt/3Cc1xKC";
public static final String STAYING_UP_TO_DATE = "https://rd.gt/3rXiSlV";
public static final String CUSTOM_VALIDATE_RULES = "https://rd.gt/3AbJUZE";
public static final String IGNORE_MIGRATION_PATTERNS = "https://rd.gt/37m4hXD";
public static final String RESET_THE_BASELINE_MIGRATION = "https://rd.gt/3CdwkXD";
public static final String ORACLE_SQL_PLUS = "https://rd.gt/3AYVsQY";
public static final String LOCK_RETRY_COUNT = "https://rd.gt/3A57jfk";
public static final String WINDOWS_AUTH = "https://rd.gt/39KICcS";
public static final String AZURE_ACTIVE_DIRECTORY = "https://rd.gt/3unaRb8";
public static final String TRIAL_UPGRADE = "https://rd.gt/2WNixqj";
public static final String KNOWN_PARSER_LIMITATIONS = "https://rd.gt/3ipi7Pm";
public static final String TEAMS_FEATURES_FOR_BIG_QUERY = "https://rd.gt/3CWAuTb";
public static final String TEAMS_FEATURES_FOR_CLOUD_SPANNER = "https://rd.gt/2ZvELhV";
public static final String FILE_ENCODING_HELP = "https://rd.gt/3BzSFhr";
public static final String TEAMS_ENTERPRISE_DOWNLOAD = "https://rd.gt/3aqhTXb";
public static final String SQLFLUFF_CONFIGURATION = "https://rd.gt/3dDFeFN";
public static final String UPGRADE_TO_REDGATE_FLYWAY = "https://rd.gt/3ytplJq";
public static final String CHANGES_REPORT_LEARN_MORE = "https://rd.gt/43G0r7G";
public static final String CODE_ANALYSIS_LEARN_MORE = "https://rd.gt/3ornhzX";
public static final String DRIFT_REPORT_LEARN_MORE = "https://rd.gt/40ikqXf";
public static final String DRY_RUN_REPORT_LEARN_MORE = "https://rd.gt/3KSXkAW";
public static final String INFO_REPORT_LEARN_MORE = "https://rd.gt/3UMs1wb";
public static final String MIGRATION_REPORT_LEARN_MORE = "https://rd.gt/3okl9tM";
public static final String GIVE_FEEDBACK = "https://rd.gt/41oQMAG";
public static final String TOML_HELP = "https://rd.gt/45ynYIt";
public static final String EULA_LINK = "https://www.red-gate.com/eula";
public static final String COMMUNITY_SUPPORT = "https://rd.gt/468B6ni";
public static final String MIGRATIONS = "https://rd.gt/4iUkpm1";
public static final String DATABASE_TROUBLESHOOTING = "https://rd.gt/423f9a6";
public static final String SNOWFLAKE = "https://rd.gt/4ixiG5r";
public static final String ENTERPRISE_INFO = "https://www.red-gate.com/products/flyway/enterprise/";
public static final String RELEASE_NOTES = "https://rd.gt/416ObMi";
public static final String COMMUNITY_CONTRIBUTED_DATABASES = "https://rd.gt/3SXtLDt";
public static final String ORACLE_DATABASE = "https://rd.gt/3SISqKJ";
public static final String SQL_PLUS = "https://rd.gt/42ljPXB";
public static final String ORACLE_BLOG = "https://rd.gt/3EuAlwU";
public static final String LICENSING_ACTIVATING_CLI = "https://rd.gt/4p5c9mO";
public static final String OFFLINE_LICENSE_PERMITS = "https://rd.gt/3UHAJwO";
public static final String V10_BLOG = "https://rd.gt/4hA3C7Y";
public static final String MONGOSH = "https://rd.gt/3VudXc6";
public static final String OSS_DOCKER_REPOSITORY = "https://rd.gt/3OSaoZA";
public static final String NATIVE_CONNECTORS_MONGODB = "https://rd.gt/3CVVLC1";
public static String FEEDBACK_SURVEY_LINK = "";
public static final String FEEDBACK_SURVEY_LINK_ENTERPRISE = "https://rd.gt/41g7TY9";
public static final String FEEDBACK_SURVEY_LINK_COMMUNITY = "https://rd.gt/4jVBMEa";
public enum Topic {
RG01("rules/RG01"),
RG02("rules/RG02"),
RG03("rules/RG03"),
RG04("rules/RG04"),
RG05("rules/RG05"),
RG06("rules/RG06"),
RG07("rules/RG07"),
RG08("rules/RG08"),
RG09("rules/RG09"),
RG10("rules/RG10"),
RG11("rules/RG11"),
RG12("rules/RG12"),
RG13("rules/RG13"),
RG14("rules/RG14"),
RG15("rules/RG15"),
RG16("rules/RG16"),
RX001("rules/RX001"),
RX002("rules/RX002"),
RX003("rules/RX003"),
RX004("rules/RX004"),
RX005("rules/RX005"),
RX006("rules/RX006"),
RX007("rules/RX007"),
RX008("rules/RX008"),
RX009("rules/RX009"),
RX010("rules/RX010"),
RX011("rules/RX011"),
RX012("rules/RX012"),
RX013("rules/RX013"),
RX014("rules/RX014");
private final String path;
private final Optional<String> anchor;
Topic(final String path, final String anchor) {
this.path = path;
this.anchor = Optional.of(anchor);
}
Topic(final String path) {
this.path = path;
this.anchor = Optional.empty();
}
public String getEndpoint() {
return path + anchor.map(a -> "#" + a).orElse("");
}
}
public static Optional<URL> getRedirectLinkFromTopicString(final String topicString) {
for (final Topic topic : Topic.values()) {
if (topic.name().equalsIgnoreCase(topicString)) {
return Optional.of(getRedirectLinkFromTopic(topic));
}
}
return Optional.empty();
}
public static URL getRedirectLinkFromTopic(final Topic topic) {
try {
final String url = "https://help.red-gate.com/help/flyway-cli"
+ VersionPrinter.getMajorVersion()
+ "/help_"
+ VersionPrinter.getMinorVersion()
+ ".aspx?topic="
+ topic.getEndpoint();
return URI.create(url).toURL();
} catch (final MalformedURLException e) {
throw new FlywayException(e);
}
}
}