
com.github.tonivade.puredbc.sql.Alias Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of puredbc Show documentation
Show all versions of puredbc Show documentation
Pure Functional Database Connection Layer
/*
* Copyright (c) 2020, Antonio Gabriel Muñoz Conejo
* Distributed under the terms of the MIT License
*/
package com.github.tonivade.puredbc.sql;
import static com.github.tonivade.purefun.type.Validation.mapN;
import static com.github.tonivade.purefun.type.Validation.requireNonEmpty;
import static com.github.tonivade.purefun.type.Validation.requireNonNull;
import java.util.Objects;
import com.github.tonivade.purefun.Equal;
import com.github.tonivade.purefun.type.Validation;
import com.github.tonivade.purefun.type.Validation.Result;
public interface Alias extends Field {
static Alias of(String alias, Field field) {
Validation, AliasImpl> validation =
mapN(requireNonEmpty(alias), requireNonNull(field), AliasImpl::new);
return validation.getOrElseThrow();
}
}
class AliasImpl implements Alias {
private static final Equal> EQUAL =
Equal.>of().comparing(x -> x.alias).comparing(x -> x.field);
private final String alias;
private final Field field;
AliasImpl(String alias, Field field) {
this.alias = alias;
this.field = field;
}
@Override
public String name() {
return field.name() + " as " + alias;
}
@Override
public boolean equals(Object obj) {
return EQUAL.applyTo(this, obj);
}
@Override
public int hashCode() {
return Objects.hash(alias, field);
}
@Override
public String toString() {
return String.format("Alias{alias='%s', field=%s}", alias, field);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy