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

io.github.qudtlib.tools.contribute.model.UnitForContribution Maven / Gradle / Ivy

There is a newer version: 6.8.0
Show newest version
package io.github.qudtlib.tools.contribute.model;

import io.github.qudtlib.model.FactorUnits;
import io.github.qudtlib.model.Unit;
import io.github.qudtlib.tools.contribute.support.ContributionHelper;

public class UnitForContribution {

    private UnitMetadata metadata;
    private Unit unit;

    public UnitForContribution(Unit unit, UnitMetadata metadata) {
        this.metadata = metadata;
        this.unit = unit;
    }

    public UnitMetadata getMetadata() {
        return metadata;
    }

    public Unit getUnit() {
        return unit;
    }

    public static Builder builder(String iri) {
        return new Builder(iri);
    }

    public static Builder builder(FactorUnits factorUnits, String nonstandardLocalname) {
        return new Builder(factorUnits, nonstandardLocalname);
    }

    public static class Builder {
        private Unit.Definition unitDefinition;
        private UnitMetadata.Builder metadataBuilder;

        private Builder(Unit.Definition unitDefinition, UnitMetadata.Builder metadataBuilder) {
            this.unitDefinition = unitDefinition;
            this.metadataBuilder = metadataBuilder;
        }

        public Builder(String iri) {
            this(Unit.definition(iri), UnitMetadata.builder());
        }

        public Builder(FactorUnits factorUnits, String nonstandardLocalname) {
            this(
                    ContributionHelper.derivedUnitDefinition(factorUnits, nonstandardLocalname),
                    UnitMetadata.builder());
        }

        public Unit.Definition unit() {
            return this.unitDefinition;
        }

        public UnitMetadata.Builder metadata() {
            return this.metadataBuilder;
        }

        public UnitForContribution build() {
            return new UnitForContribution(
                    this.unitDefinition.build(), this.metadataBuilder.build());
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy