From ed8e663e13db2409f3bf6733c41ef21e5258c364 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Tue, 11 Nov 2025 01:41:58 -0500 Subject: ignore --- theme-test.java | 461 -------------------------------------------------------- 1 file changed, 461 deletions(-) delete mode 100644 theme-test.java (limited to 'theme-test.java') diff --git a/theme-test.java b/theme-test.java deleted file mode 100644 index 7c1b582af..000000000 --- a/theme-test.java +++ /dev/null @@ -1,461 +0,0 @@ -package com.example.theme; - -import java.util.*; -import java.util.concurrent.*; -import java.util.function.*; -import java.util.stream.*; -import java.time.*; -import java.time.format.*; -import java.net.*; -import java.io.*; -import java.nio.file.*; -import java.sql.*; -import java.lang.annotation.*; -import java.math.BigDecimal; -import java.math.BigInteger; - -// Enum definition -public enum LogLevel { - DEBUG(0, "Debug"), - INFO(1, "Info"), - WARN(2, "Warning"), - ERROR(3, "Error"); - - private final int level; - private final String description; - - LogLevel(int level, String description) { - this.level = level; - this.description = description; - } - - public int getLevel() { return level; } - public String getDescription() { return description; } -} - -// Interface with generics -public interface Repository { - Optional findById(Long id); - List findAll(); - T save(T entity); - void delete(Long id); - Stream stream(); - - @FunctionalInterface - interface Predicate { - boolean test(T t); - } -} - -// Abstract class -public abstract class AbstractService implements Repository { - protected final Map cache = new ConcurrentHashMap<>(); - protected volatile boolean initialized = false; - - @Override - public Optional findById(Long id) { - return Optional.ofNullable(cache.get(id)); - } - - @Override - public List findAll() { - return new ArrayList<>(cache.values()); - } - - @Override - public Stream stream() { - return cache.values().stream(); - } - - protected abstract void validate(T entity) throws ValidationException; -} - -// Annotation definition -@Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.TYPE, ElementType.METHOD}) -public @interface Service { - String value() default ""; - boolean transactional() default true; - Class[] exceptions() = {}; -} - -// Record class (Java 14+) -public record User( - Long id, - String username, - String email, - @Deprecated String fullName, - LocalDateTime createdAt, - boolean active -) implements Entity { - - public User { - Objects.requireNonNull(username, "Username cannot be null"); - Objects.requireNonNull(email, "Email cannot be null"); - Objects.requireNonNull(createdAt, "Created date cannot be null"); - } - - public static User of(String username, String email) { - return new User(null, username, email, null, LocalDateTime.now(), true); - } - - public User withId(Long id) { - return new User(id, username, email, fullName, createdAt, active); - } -} - -// Exception classes -public class ValidationException extends RuntimeException { - private final List errors; - - public ValidationException(String message) { - super(message); - this.errors = List.of(message); - } - - public ValidationException(List errors) { - super(String.join(", ", errors)); - this.errors = Collections.unmodifiableList(errors); - } - - public List getErrors() { return errors; } -} - -public class ResourceNotFoundException extends RuntimeException { - public ResourceNotFoundException(String resource, Long id) { - super(String.format("%s with id %d not found", resource, id)); - } -} - -// Service implementation -@Service(value = "userService", transactional = true) -public class UserService extends AbstractService { - - private static final Logger logger = LoggerFactory.getLogger(UserService.class); - private static final int MAX_RETRY_ATTEMPTS = 3; - private static final Duration TIMEOUT = Duration.ofSeconds(30); - - private final EmailService emailService; - private final UserRepository userRepository; - private final PasswordEncoder passwordEncoder; - - @Inject - public UserService(EmailService emailService, - UserRepository userRepository, - PasswordEncoder passwordEncoder) { - this.emailService = emailService; - this.userRepository = userRepository; - this.passwordEncoder = passwordEncoder; - } - - @Override - protected void validate(User user) throws ValidationException { - List errors = new ArrayList<>(); - - if (user.username() == null || user.username().trim().isEmpty()) { - errors.add("Username is required"); - } else if (!user.username().matches("^[a-zA-Z0-9_]{3,20}$")) { - errors.add("Username must be 3-20 characters, alphanumeric and underscore only"); - } - - if (user.email() == null || !user.email().matches("^[A-Za-z0-9+_.-]+@(.+)$")) { - errors.add("Valid email is required"); - } - - if (!errors.isEmpty()) { - throw new ValidationException(errors); - } - } - - @Transactional - public User createUser(CreateUserRequest request) throws ValidationException { - logger.info("Creating new user: {}", request.username()); - - // Check if user already exists - if (userRepository.findByUsername(request.username()).isPresent()) { - throw new ValidationException("Username already exists"); - } - - if (userRepository.findByEmail(request.email()).isPresent()) { - throw new ValidationException("Email already exists"); - } - - // Create new user - User user = User.of(request.username(), request.email()) - .withId(generateId()); - - validate(user); - - try { - User savedUser = userRepository.save(user); - cache.put(savedUser.id(), savedUser); - - // Send welcome email asynchronously - CompletableFuture.runAsync(() -> - emailService.sendWelcomeEmail(savedUser) - ).exceptionally(throwable -> { - logger.error("Failed to send welcome email to user {}", savedUser.id(), throwable); - return null; - }); - - logger.info("Successfully created user with ID: {}", savedUser.id()); - return savedUser; - - } catch (DataAccessException e) { - logger.error("Database error while creating user", e); - throw new ServiceException("Failed to create user", e); - } - } - - public Optional findByUsername(String username) { - return cache.values().stream() - .filter(user -> user.username().equals(username)) - .findFirst(); - } - - public List findActiveUsers() { - return cache.values().stream() - .filter(User::active) - .sorted(Comparator.comparing(User::createdAt).reversed()) - .collect(Collectors.toList()); - } - - @Retry(maxAttempts = MAX_RETRY_ATTEMPTS, backoff = @Backoff(delay = 1000)) - public User updateUser(Long id, UpdateUserRequest request) { - User existingUser = findById(id) - .orElseThrow(() -> new ResourceNotFoundException("User", id)); - - User updatedUser = new User( - id, - request.username() != null ? request.username() : existingUser.username(), - request.email() != null ? request.email() : existingUser.email(), - existingUser.fullName(), - existingUser.createdAt(), - request.active() != null ? request.active() : existingUser.active() - ); - - validate(updatedUser); - - try { - User savedUser = userRepository.save(updatedUser); - cache.put(id, savedUser); - return savedUser; - } catch (DataAccessException e) { - logger.error("Failed to update user with ID: {}", id, e); - throw new ServiceException("Failed to update user", e); - } - } - - @Async - public CompletableFuture deleteUser(Long id) { - return CompletableFuture.runAsync(() -> { - try { - userRepository.deleteById(id); - cache.remove(id); - logger.info("Successfully deleted user with ID: {}", id); - } catch (DataAccessException e) { - logger.error("Failed to delete user with ID: {}", id, e); - throw new ServiceException("Failed to delete user", e); - } - }); - } - - private Long generateId() { - return System.currentTimeMillis() + (long)(Math.random() * 1000); - } -} - -// Utility class -public final class DateUtils { - - private DateUtils() { - // Utility class - prevent instantiation - } - - private static final DateTimeFormatter ISO_FORMATTER = - DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); - - public static String formatIsoDateTime(LocalDateTime dateTime) { - return dateTime.atZone(ZoneId.systemDefault()).format(ISO_FORMATTER); - } - - public static LocalDateTime parseIsoDateTime(String isoString) { - return LocalDateTime.parse(isoString, ISO_FORMATTER); - } - - public static boolean isWithinLastDays(LocalDateTime dateTime, int days) { - return dateTime.isAfter(LocalDateTime.now().minusDays(days)); - } -} - -// Builder pattern -public class UserQueryBuilder { - private String username; - private String email; - private Boolean active; - private LocalDateTime createdAfter; - private LocalDateTime createdBefore; - private SortOrder sortOrder = SortOrder.ASC; - private String sortBy = "createdAt"; - private int limit = 100; - private int offset = 0; - - public UserQueryBuilder withUsername(String username) { - this.username = username; - return this; - } - - public UserQueryBuilder withEmail(String email) { - this.email = email; - return this; - } - - public UserQueryBuilder activeOnly(boolean active) { - this.active = active; - return this; - } - - public UserQueryBuilder createdAfter(LocalDateTime date) { - this.createdAfter = date; - return this; - } - - public UserQueryBuilder createdBefore(LocalDateTime date) { - this.createdBefore = date; - return this; - } - - public UserQueryBuilder sortBy(String field, SortOrder order) { - this.sortBy = field; - this.sortOrder = order; - return this; - } - - public UserQueryBuilder limit(int limit) { - this.limit = Math.max(1, Math.min(limit, 1000)); - return this; - } - - public UserQueryBuilder offset(int offset) { - this.offset = Math.max(0, offset); - return this; - } - - public UserQuery build() { - return new UserQuery(username, email, active, createdAfter, createdBefore, - sortBy, sortOrder, limit, offset); - } -} - -// Lambda expressions and streams -public class StreamProcessor { - - private static final Map> TYPE_CONVERTERS = Map.of( - "string", s -> s, - "int", Integer::parseInt, - "double", Double::parseDouble, - "boolean", Boolean::parseBoolean, - "bigdecimal", BigDecimal::new, - "bigint", BigInteger::new - ); - - public Map processConfig(Properties properties) { - return properties.entrySet().stream() - .filter(entry -> entry.getKey() instanceof String) - .filter(entry -> entry.getValue() != null) - .collect(Collectors.toMap( - entry -> (String) entry.getKey(), - entry -> convertValue((String) entry.getKey(), (String) entry.getValue()) - )); - } - - private Object convertValue(String key, String value) { - String type = determineType(key, value); - return TYPE_CONVERTERS.getOrDefault(type, Function.identity()).apply(value); - } - - private String determineType(String key, String value) { - if (value.equalsIgnoreCase("true") || value.equalsIgnoreCase("false")) { - return "boolean"; - } else if (value.matches("-?\\d+")) { - return "int"; - } else if (value.matches("-?\\d*\\.\\d+")) { - return "double"; - } else if (key.toLowerCase().contains("amount") || key.toLowerCase().contains("price")) { - return "bigdecimal"; - } - return "string"; - } - - public List validateEmails(List emails) { - return emails.stream() - .filter(Objects::nonNull) - .map(String::trim) - .filter(email -> !email.isEmpty()) - .filter(email -> email.matches("^[A-Za-z0-9+_.-]+@(.+)$")) - .distinct() - .collect(Collectors.toList()); - } - - public CompletableFuture> processUsersAsync(List users) { - return CompletableFuture.supplyAsync(() -> - users.parallelStream() - .filter(User::active) - .filter(user -> user.createdAt().isAfter(LocalDateTime.now().minusYears(1))) - .sorted(Comparator.comparing(User::username)) - .collect(Collectors.toList()) - ); - } -} - -// Main class for testing -public class Main { - private static final Logger logger = LoggerFactory.getLogger(Main.class); - - public static void main(String[] args) { - try { - // Initialize application context - ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); - - // Get service bean - UserService userService = context.getBean(UserService.class); - - // Create test users - List users = Arrays.asList( - User.of("john_doe", "john@example.com"), - User.of("jane_smith", "jane@example.com"), - User.of("bob_wilson", "bob@example.com") - ); - - // Process users - List> futures = users.stream() - .map(user -> { - try { - return CompletableFuture.completedFuture(userService.createUser( - new CreateUserRequest(user.username(), user.email()) - )); - } catch (ValidationException e) { - logger.error("Failed to create user: {}", user.username(), e); - return CompletableFuture.failedFuture(e); - } - }) - .collect(Collectors.toList()); - - // Wait for all to complete - CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])) - .thenRun(() -> { - logger.info("All users created successfully"); - System.out.println("Application started successfully!"); - }) - .exceptionally(throwable -> { - logger.error("Failed to initialize users", throwable); - System.err.println("Application startup failed!"); - return null; - }); - - } catch (Exception e) { - logger.error("Application startup failed", e); - System.exit(1); - } - } -} \ No newline at end of file -- cgit v1.2.3