Package ru.aristar.jnuget.query

Source Code of ru.aristar.jnuget.query.VersionEq

package ru.aristar.jnuget.query;

import java.util.Collection;
import java.util.HashSet;
import java.util.Queue;
import ru.aristar.jnuget.Version;
import ru.aristar.jnuget.files.NugetFormatException;
import ru.aristar.jnuget.files.Nupkg;
import ru.aristar.jnuget.sources.PackageSource;

/**
* Выражение сравнения версии
*
* @author sviridov
*/
public class VersionEq extends AbstractExpression {

    /**
     * Распознает строку с выражением
     *
     * @param tokens токены строки выражения
     * @return распознанное выражение
     * @throws NugetFormatException некорректная строка выражения
     */
    static VersionEq parse(Queue<String> tokens) throws NugetFormatException {
        assertToken(tokens.poll(), "eq");
        assertToken(tokens.poll(), "'");
        Version version = Version.parse(tokens.poll());
        assertToken(tokens.poll(), "'");
        return new VersionEq(version);
    }
    /**
     * Версия
     */
    private final Version version;

    /**
     * @param version версия пакета
     */
    public VersionEq(Version version) {
        this.version = version;
    }

    /**
     * @return версия пакета
     */
    public Version getVersion() {
        return version;
    }

    @Override
    public Collection<? extends Nupkg> execute(PackageSource<? extends Nupkg> packageSource) {
        HashSet<Nupkg> result = new HashSet<>();
        for (Nupkg nupkg : packageSource.getPackages()) {
            if (nupkg.getVersion().equals(version)) {
                result.add(nupkg);
            }
        }
        return result;
    }

    @Override
    public boolean hasFilterPriority() {
        return true;
    }

    @Override
    public boolean accept(Nupkg nupkg) {
        return version.equals(nupkg.getVersion());
    }

    @Override
    public String toString() {
        return "Version eq '" + version + "'";
    }
}
TOP

Related Classes of ru.aristar.jnuget.query.VersionEq

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.