import java.util.ArrayList;
import java.util.List;
public class URLValidator {
/**
* Validates a list of URLs against predefined constraints.
*
* @param urls A list of URLs to validate.
* @return A list of validation results, where each result indicates whether a URL is valid
* and provides a default value if a constraint is violated.
*/
public static List<ValidationResult> validateURLs(List<String> urls) {
List<ValidationResult> results = new ArrayList<>();
for (String url : urls) {
ValidationResult result = validateURL(url);
results.add(result);
}
return results;
}
private static ValidationResult validateURL(String url) {
// Default values for constraints
String defaultTitle = "Unknown Title";
String defaultDescription = "No description provided";
String defaultPriority = "Medium";
// Basic URL format check
if (url == null || url.trim().isEmpty()) {
return new ValidationResult(false, "URL cannot be null or empty.");
}
//Check for valid URL format (very basic) - can be improved with regex
if (!url.contains("http://") && !url.contains("https://")) {
return new ValidationResult(false, "URL must start with http:// or https://");
}
//Title constraint
if(url.contains("task/")){
String title = extractTitle(url);
if(title == null || title.trim().isEmpty()){
title = defaultTitle;
}
} else {
title = defaultTitle;
}
//Description constraint
if (url.contains("description=")){
String description = extractDescription(url);
if(description == null || description.trim().isEmpty()){
description = defaultDescription;
}
} else {
description = defaultDescription;
}
//Priority constraint
if(url.contains("priority=")){
String priority = extractPriority(url);
if(priority == null || priority.trim().isEmpty()){
priority = defaultPriority;
}
} else {
priority = defaultPriority;
}
return new ValidationResult(true, "URL is valid. Title: " + title + ", Description: " + description + ", Priority: " + priority);
}
private static String extractTitle(String url) {
int startIndex = url.indexOf("task/");
if (startIndex != -1) {
startIndex += "task/".length();
int endIndex = url.indexOf("/", startIndex);
if (endIndex != -1) {
return url.substring(startIndex, endIndex);
}
}
return null;
}
private static String extractDescription(String url) {
int startIndex = url.indexOf("description=");
if (startIndex != -1) {
startIndex += "description=".length();
int endIndex = url.indexOf("&", startIndex);
if (endIndex == -1) {
endIndex = url.length();
}
return url.substring(startIndex, endIndex).trim();
}
return null;
}
private static String extractPriority(String url) {
int startIndex = url.indexOf("priority=");
if (startIndex != -1) {
startIndex += "priority=".length();
int endIndex = url.indexOf("&", startIndex);
if (endIndex == -1) {
endIndex = url.length();
}
return url.substring(startIndex, endIndex).trim();
}
return null;
}
// Helper class to store validation results
public static class ValidationResult {
private final boolean isValid;
private final String message;
public ValidationResult(boolean isValid, String message) {
this.isValid = isValid;
this.message = message;
}
public boolean isValid() {
return isValid;
}
public String getMessage() {
return message;
}
}
public static void main(String[] args) {
List<String> urls = new ArrayList<>();
urls.add("https://example.com/task/my-task");
urls.add("http://example.com/another
Add your comment