All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.vertexium.elasticsearch.ElasticsearchPropertyNameInfo Maven / Gradle / Ivy

package org.vertexium.elasticsearch;

import org.vertexium.Graph;
import org.vertexium.Visibility;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ElasticsearchPropertyNameInfo {
    public static final Pattern PROPERTY_NAME_PATTERN = Pattern.compile("^(.*?)(_([0-9a-f]{32}))?(_([a-z]))?$");
    private final String propertyName;
    private final Visibility propertyVisibility;

    private ElasticsearchPropertyNameInfo(String propertyName, Visibility propertyVisibility) {
        this.propertyName = propertyName;
        this.propertyVisibility = propertyVisibility;
    }

    public String getPropertyName() {
        return propertyName;
    }

    public Visibility getPropertyVisibility() {
        return propertyVisibility;
    }

    public static ElasticsearchPropertyNameInfo parse(
            Graph graph,
            PropertyNameVisibilitiesStore propertyNameVisibilitiesStore,
            String rawPropertyName
    ) {
        Matcher m = PROPERTY_NAME_PATTERN.matcher(rawPropertyName);
        if (!m.matches()) {
            return null;
        }

        String propertyName = m.group(1);
        String visibilityHash = m.group(2);
        Visibility propertyVisibility;
        if (visibilityHash == null) {
            propertyVisibility = null;
        } else {
            visibilityHash = visibilityHash.substring(1); // stop leading _
            propertyVisibility = propertyNameVisibilitiesStore.getVisibilityFromHash(graph, visibilityHash);
        }
        return new ElasticsearchPropertyNameInfo(propertyName, propertyVisibility);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy