org.vertexium.cypher.ast.model.CypherElementPattern Maven / Gradle / Ivy
package org.vertexium.cypher.ast.model;
import java.util.Map;
import java.util.stream.Stream;
import static org.vertexium.util.StreamUtils.stream;
public abstract class CypherElementPattern extends CypherAstBase {
private final String name;
private final CypherMapLiteral propertiesMap;
public CypherElementPattern(String name, CypherMapLiteral propertiesMap) {
if (propertiesMap == null) {
propertiesMap = new CypherMapLiteral<>();
}
this.name = name;
this.propertiesMap = propertiesMap;
}
public String getName() {
return name;
}
public CypherMapLiteral getPropertiesMap() {
return propertiesMap;
}
public boolean hasProperties() {
return propertiesMap != null && propertiesMap.size() > 0;
}
@Override
public Stream extends CypherAstBase> getChildren() {
return stream(propertiesMap.entrySet()).map(Map.Entry::getValue);
}
@Override
public String toString() {
return this.getClass().getName() + "{" +
"name='" + name + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
CypherElementPattern that = (CypherElementPattern) o;
if (name != null ? !name.equals(that.name) : that.name != null) {
return false;
}
return propertiesMap.equals(that.propertiesMap);
}
@Override
public int hashCode() {
int result = name != null ? name.hashCode() : 0;
result = 31 * result + propertiesMap.hashCode();
return result;
}
public int getConstraintCount() {
return propertiesMap.size();
}
}