2022-05-21 15:28:52 +02:00
|
|
|
package it.cavallium.dbengine.database;
|
|
|
|
|
2023-02-09 23:34:25 +01:00
|
|
|
import it.cavallium.dbengine.buffers.Buf;
|
2022-05-21 15:28:52 +02:00
|
|
|
import java.util.NoSuchElementException;
|
|
|
|
import java.util.Objects;
|
|
|
|
import java.util.Optional;
|
|
|
|
import java.util.function.Consumer;
|
|
|
|
import java.util.function.Function;
|
|
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
|
import org.jetbrains.annotations.Nullable;
|
|
|
|
|
2023-02-09 23:34:25 +01:00
|
|
|
public final class OptionalBuf {
|
2022-05-21 15:28:52 +02:00
|
|
|
|
|
|
|
private static final OptionalBuf EMPTY = new OptionalBuf(null);
|
2023-02-09 23:34:25 +01:00
|
|
|
private final Buf buffer;
|
2022-05-21 15:28:52 +02:00
|
|
|
|
2023-02-09 23:34:25 +01:00
|
|
|
private OptionalBuf(@Nullable Buf buffer) {
|
2022-05-21 15:28:52 +02:00
|
|
|
this.buffer = buffer;
|
|
|
|
}
|
|
|
|
|
2023-02-09 23:34:25 +01:00
|
|
|
public static OptionalBuf ofNullable(@Nullable Buf buffer) {
|
2022-05-21 15:28:52 +02:00
|
|
|
return new OptionalBuf(buffer);
|
|
|
|
}
|
|
|
|
|
2023-02-09 23:34:25 +01:00
|
|
|
public static OptionalBuf of(@NotNull Buf buffer) {
|
2022-05-21 15:28:52 +02:00
|
|
|
Objects.requireNonNull(buffer);
|
|
|
|
return new OptionalBuf(buffer);
|
|
|
|
}
|
|
|
|
|
|
|
|
public static OptionalBuf empty() {
|
|
|
|
return EMPTY;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public String toString() {
|
|
|
|
if (buffer != null) {
|
|
|
|
return buffer.toString();
|
|
|
|
} else {
|
|
|
|
return "(empty)";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean equals(Object o) {
|
|
|
|
if (this == o) {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
if (o == null || getClass() != o.getClass()) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
OptionalBuf that = (OptionalBuf) o;
|
|
|
|
|
|
|
|
return Objects.equals(buffer, that.buffer);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public int hashCode() {
|
|
|
|
return buffer != null ? buffer.hashCode() : 0;
|
|
|
|
}
|
|
|
|
|
2023-02-09 23:34:25 +01:00
|
|
|
public Buf get() {
|
2022-05-21 15:28:52 +02:00
|
|
|
if (buffer == null) {
|
|
|
|
throw new NoSuchElementException();
|
|
|
|
}
|
|
|
|
return buffer;
|
|
|
|
}
|
|
|
|
|
2023-02-09 23:34:25 +01:00
|
|
|
public Buf orElse(Buf alternative) {
|
2022-05-21 15:28:52 +02:00
|
|
|
if (buffer == null) {
|
|
|
|
return alternative;
|
|
|
|
}
|
|
|
|
return buffer;
|
|
|
|
}
|
|
|
|
|
2023-02-09 23:34:25 +01:00
|
|
|
public void ifPresent(Consumer<Buf> consumer) {
|
2022-05-21 15:28:52 +02:00
|
|
|
if (buffer != null) {
|
|
|
|
consumer.accept(buffer);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean isPresent() {
|
|
|
|
return buffer != null;
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean isEmpty() {
|
|
|
|
return buffer == null;
|
|
|
|
}
|
|
|
|
|
2023-02-09 23:34:25 +01:00
|
|
|
public <U> Optional<U> map(Function<Buf, U> mapper) {
|
2022-05-21 15:28:52 +02:00
|
|
|
if (buffer != null) {
|
|
|
|
return Optional.of(mapper.apply(buffer));
|
|
|
|
} else {
|
|
|
|
return Optional.empty();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|