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

it.cnr.iit.jscontact.tools.dto.V_Extension Maven / Gradle / Ivy

package it.cnr.iit.jscontact.tools.dto;

import it.cnr.iit.jscontact.tools.dto.utils.DelimiterUtils;
import lombok.*;

import javax.validation.constraints.NotNull;
import java.util.Arrays;

/**
 * Class mapping the vendor-extension values as defined in section 1.8 of [draft-ietf-calext-jscontact].
 *
 * @author Mario Loffredo
 * @see draft-ietf-calext-jscontact
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class V_Extension {

    private String v_prefix;

    @NonNull
    @NotNull(message = "v_value is missing in V_Extension")
    private String v_value;

    public static V_Extension toV_Extension(String extValue) {

        if (extValue == null) return null;

        String[] items = extValue.split(DelimiterUtils.COLON_DELIMITER);
        if (items.length == 1) //Unknown Extension
            return V_Extension.builder().v_value(extValue).build();

        // Vendor Extension
        return V_Extension.builder().v_prefix(items[0]).v_value(String.join(DelimiterUtils.COLON_DELIMITER, Arrays.copyOfRange(items, 1, items.length))).build();
    }

    @Override
    public String toString() {
        if (v_prefix == null)
            return v_value;
        return v_prefix + ":" + v_value;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null)
            return false;

        if (!(obj instanceof V_Extension))
            return false;

        return this.toString().equalsIgnoreCase(obj.toString());
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy