blob: af9e86810ebcb3b3f636636c46cd786f21f460b8 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2013, 2021 Red Hat Inc. and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Neil Guzman - initial API and implementation
*******************************************************************************/
package org.eclipse.linuxtools.internal.rpm.createrepo.tree;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.linuxtools.internal.rpm.createrepo.CreaterepoPreferenceConstants;
import org.eclipse.linuxtools.internal.rpm.createrepo.CreaterepoProject;
import org.eclipse.linuxtools.internal.rpm.createrepo.ICreaterepoConstants;
/**
* The category and tags (if any) of the metadata tree.
*/
public class CreaterepoCategoryModel {
private IEclipsePreferences projectPreferences;
public CreaterepoCategoryModel(CreaterepoProject project) {
if (project != null) {
projectPreferences = project.getEclipsePreferences();
}
}
/**
* The only categories acceptable by createrepo. The categories will be populated with
* tags found from the project preferences (if any).
*
* @return Initial categories and saved tags (if any).
*/
public List<CreaterepoTreeCategory> getCategories() {
List<CreaterepoTreeCategory> model = new ArrayList<>();
CreaterepoTreeCategory distroCat = new CreaterepoTreeCategory(
CreaterepoPreferenceConstants.PREF_DISTRO_TAG);
distroCat.addAllTags(getDistroTags());
CreaterepoTreeCategory contentCat = new CreaterepoTreeCategory(
CreaterepoPreferenceConstants.PREF_CONTENT_TAG);
contentCat.addAllTags(getContentTags());
CreaterepoTreeCategory repoCat = new CreaterepoTreeCategory(
CreaterepoPreferenceConstants.PREF_REPO_TAG);
repoCat.addAllTags(getRepoTags());
model.add(distroCat);
model.add(contentCat);
model.add(repoCat);
return model;
}
/**
* Get the distro tags from the project preferences.
*
* @return The prefered distro tags or empty if no preferences stored.
*/
private List<String> getDistroTags() {
if (projectPreferences != null) {
String tagPref = projectPreferences.get(CreaterepoPreferenceConstants.PREF_DISTRO_TAG,
ICreaterepoConstants.EMPTY_STRING);
if (!tagPref.isEmpty()) {
return Arrays.asList(tagPref.split(ICreaterepoConstants.DELIMITER));
}
}
return Collections.emptyList();
}
/**
* Get the content tags from the project preferences.
*
* @return The prefered content tags or empty if no preferences stored.
*/
private List<String> getContentTags() {
if (projectPreferences != null) {
String tagPref = projectPreferences.get(CreaterepoPreferenceConstants.PREF_CONTENT_TAG,
ICreaterepoConstants.EMPTY_STRING);
if (!tagPref.isEmpty()) {
return Arrays.asList(tagPref.split(ICreaterepoConstants.DELIMITER));
}
}
return Collections.emptyList();
}
/**
* Get the repo tags from the project preferences.
*
* @return The prefered repo tags or empty if no preferences stored.
*/
private List<String> getRepoTags() {
if (projectPreferences != null) {
String tagPref = projectPreferences.get(CreaterepoPreferenceConstants.PREF_REPO_TAG,
ICreaterepoConstants.EMPTY_STRING);
if (!tagPref.isEmpty()) {
return Arrays.asList(tagPref.split(ICreaterepoConstants.DELIMITER));
}
}
return Collections.emptyList();
}
}