JMadModelRepositories.java

/**
 * Copyright (c) 2018 European Organisation for Nuclear Research (CERN), All Rights Reserved.
 */

package org.jmad.modelpack.domain;

import java.util.Optional;

import static org.jmad.modelpack.connect.ConnectorUriSchemes.GITLAB_HTTPS_SCHEME;
import static org.jmad.modelpack.connect.ConnectorUriSchemes.INTERNAL_SCHEME;
import static org.jmad.modelpack.connect.ConnectorUriSchemes.LOCAL_FILE_SCHEME;

public class JMadModelRepositories {

    private static final String CERN_GITLAB = GITLAB_HTTPS_SCHEME + "://gitlab.cern.ch/";
    private static final String PROP_LOCAL_MODEL_REPO = "cern.jmad.modelpacks.local";

    public static JMadModelPackageRepository cernGitlabTesting() {
        return cernGitlabGroup("jmad-modelpacks-testing");
    }

    public static JMadModelPackageRepository cernGitlabOld() {
        return cernGitlabGroup("jmad-modelpacks-cern");
    }

    public static JMadModelPackageRepository cernGitlabPro() {
        return cernGitlabGroup("acc-models");
    }

    public static JMadModelPackageRepository internal() {
        return JMadModelPackageRepository.fromUri(INTERNAL_SCHEME + ":/");
    }

    public static Optional<JMadModelPackageRepository> defaultLocalFileRepository() {
        String localModelRepo = System.getProperty(PROP_LOCAL_MODEL_REPO);
        if (localModelRepo == null) {
            return Optional.empty();
        } else {
            return Optional.of(JMadModelPackageRepository.fromUri(LOCAL_FILE_SCHEME + ":" + localModelRepo));
        }
    }

    private static JMadModelPackageRepository cernGitlabGroup(String groupName) {
        return JMadModelPackageRepository.fromUri(CERN_GITLAB + groupName);
    }

}