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

org.javers.repository.jql.ValueObjectIdDTO Maven / Gradle / Ivy

There is a newer version: 7.6.1
Show newest version
package org.javers.repository.jql;

import org.javers.common.validation.Validate;

import static org.javers.repository.jql.InstanceIdDTO.instanceId;

/**
* @author bartosz walacik
*/
public final class ValueObjectIdDTO extends GlobalIdDTO {
    private final GlobalIdDTO ownerIdDTO;
    private final String path;

    ValueObjectIdDTO(Class ownerClass, Object ownerLocalId, String path) {
        Validate.argumentsAreNotNull(ownerClass, ownerLocalId, path);
        ownerIdDTO = instanceId(ownerLocalId, ownerClass);
        this.path = path;
    }

    ValueObjectIdDTO(Class ownerClass, String path) {
        Validate.argumentsAreNotNull(ownerClass, path);
        ownerIdDTO = UnboundedValueObjectIdDTO.unboundedValueObjectId(ownerClass);
        this.path = path;
    }

    public static ValueObjectIdDTO valueObjectId(Object ownerLocalId, Class ownerClass, String fragment){
        return new ValueObjectIdDTO(ownerClass, ownerLocalId, fragment);
    }

    public static ValueObjectIdDTO withUnboundedValueObjectOwner(Class ownerClass, String fragment){
        return new ValueObjectIdDTO(ownerClass, fragment);
    }

    @Override
    public String value() {
        return ownerIdDTO.value()+"#"+ path;
    }

    public GlobalIdDTO getOwnerIdDTO() {
        return ownerIdDTO;
    }

    public String getPath() {
        return path;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy