Skip to content

Latest commit

 

History

History
115 lines (91 loc) · 2.09 KB

Problems.md

File metadata and controls

115 lines (91 loc) · 2.09 KB
tags
Problem

Problems #Problem

Table of Contents

  1. Convert Camel Case to Snake Case in Java
    1. Plain Java
    2. Regular Expression
  2. PathVariable as a DTO
  3. Lombok extend Value

Convert Camel Case to Snake Case in Java

Plain Java

public static String convertCamelCaseToSnake(String input) {
    StringBuilder result = new StringBuilder();
    for (char c: input.toCharArray()) {
        if (Character.isUpperCase(c)) {
            result.append("_").append(Character.toLowerCase(c));
        } else {
            result.append(c);
        }
    }
    return result.toString();
}

Regular Expression

public static String convertCamelCaseToSnakeRegex(String input) {
    return input
      .replaceAll("([A-Z])(?=[A-Z])", "$1_")
      .replaceAll("([a-z])([A-Z])", "$1_$2")
      .toLowerCase();
}

PathVariable as a DTO

import lombok.Value;

import java.util.UUID;

@Value
public class MyId {
    UUID id;
}
  @GetMapping("/{myId}")
  String exampleGet(@PathVariable MyId myId) {
      System.out.println(myId);
      return myId.toString();
  }
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

import java.util.UUID;

@Component
public class StringToMyIdTimeConverter
  implements Converter<String, MyId> {

    @Override
    public MyId convert(String source) {
        UUID uuid = UUID.fromString(source);
        MyId myId = new MyId(uuid);
        return myId;
    }
}

Lombok extend Value

import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;

import java.util.UUID;

@Getter
@AllArgsConstructor
@EqualsAndHashCode
public class MyId {
    private final UUID id;
}
import lombok.EqualsAndHashCode;
import lombok.Value;

import java.util.UUID;

@Value
@EqualsAndHashCode(callSuper = true)
public class ConcreteId extends MyId {
    public ConcreteId(UUID id) {
        super(id);
    }
}