/******************************************************************************* * Copyright (c) 2016 ARM Ltd. and others * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Liviu Ionescu - initial implementation * ARM Ltd and ARM Germany GmbH - application-specific implementation *******************************************************************************/ package com.arm.cmsis.pack.repository; import java.util.ArrayList; import java.util.List; import org.eclipse.core.runtime.preferences.IEclipsePreferences; import org.eclipse.core.runtime.preferences.InstanceScope; import com.arm.cmsis.pack.CpPlugIn; import com.arm.cmsis.pack.common.CmsisConstants; import com.arm.cmsis.pack.preferences.CpPreferenceInitializer; /** * The singleton class that contains the repository urls */ public class CpRepositoryList { public static final String[] TYPES = { CmsisConstants.REPO_PACK_TYPE }; protected List<ICpRepository> fList; public CpRepositoryList() { List<String> repos = CpPreferenceInitializer.getCpRepositories(); for (String repoAttr : repos) { ICpRepository repo = new CpRepository(repoAttr); if (fList == null) { fList = new ArrayList<ICpRepository>(); } fList.add(repo); } } /** * @return the default file lists */ public List<ICpRepository> getDefaultList() { List<ICpRepository> list; list = new ArrayList<ICpRepository>(); list.add(new CpRepository(CpPreferenceInitializer.getDefaultCpRepository())); fList = list; return list; } public String[] convertToArray(ICpRepository repo) { String sa[] = new String[repo.getAttrCount()]; sa[0] = repo.getType(); sa[1] = repo.getName(); sa[2] = repo.getUrl(); return sa; } public ICpRepository convertToCpRepository(String[] sa) { if (sa.length != getDefaultList().get(0).getAttrCount()) { return null; } return new CpRepository(sa[0], sa[1], sa[2]); } // Return a list of urls where repositories are stored public List<ICpRepository> getList() { if (fList == null || fList.isEmpty()) { return getDefaultList(); } return fList; } public void putList(List<ICpRepository> repoList) { fList = repoList; IEclipsePreferences instancePreferences = InstanceScope.INSTANCE.getNode(CpPlugIn.PLUGIN_ID); for (int i = 0; i < repoList.size(); i++) { ICpRepository repo = repoList.get(i); String key = CpPlugIn.CMSIS_PACK_REPOSITORY_PREFERENCE + '.' + i; instancePreferences.put(key, repo.toString()); } int i = repoList.size(); String key = CpPlugIn.CMSIS_PACK_REPOSITORY_PREFERENCE + '.' + i; while (!instancePreferences.get(key, CmsisConstants.EMPTY_STRING).isEmpty()) { instancePreferences.remove(key); i++; key = CpPlugIn.CMSIS_PACK_REPOSITORY_PREFERENCE + '.' + i; } } }