1 /* 2 * This file is part of Arduino. 3 * 4 * Copyright 2015 Arduino LLC (http://www.arduino.cc/) 5 * 6 * Arduino is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation; either version 2 of the License, or 9 * (at your option) any later version. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 19 * 20 * As a special exception, you may use this file as part of a free software 21 * library without restriction. Specifically, if other files instantiate 22 * templates or use macros or inline functions from this file, or you compile 23 * this file and link it with other files to produce an executable, this 24 * file does not by itself cause the resulting executable to be covered by 25 * the GNU General Public License. This exception does not however 26 * invalidate any other reasons why the executable file might be covered by 27 * the GNU General Public License. 28 */ 29 30 package cc.arduino.contributions.libraries.ui; 31 32 import cc.arduino.contributions.DownloadableContributionBuiltInAtTheBottomComparator; 33 import cc.arduino.contributions.filters.InstalledPredicate; 34 import cc.arduino.contributions.libraries.ContributedLibrary; 35 import cc.arduino.contributions.ui.FilteredAbstractTableModel; 36 37 import java.util.Collections; 38 import java.util.LinkedList; 39 import java.util.List; 40 import java.util.stream.Collectors; 41 42 public class ContributedLibraryReleases { 43 44 private final ContributedLibrary library; 45 private final List<ContributedLibrary> releases; 46 private final List<String> versions; 47 48 private ContributedLibrary selected; 49 ContributedLibraryReleases(ContributedLibrary library)50 public ContributedLibraryReleases(ContributedLibrary library) { 51 this.library = library; 52 this.versions = new LinkedList<>(); 53 this.releases = new LinkedList<>(); 54 this.selected = null; 55 add(library); 56 } 57 getLibrary()58 public ContributedLibrary getLibrary() { 59 return library; 60 } 61 getReleases()62 public List<ContributedLibrary> getReleases() { 63 return releases; 64 } 65 shouldContain(ContributedLibrary lib)66 public boolean shouldContain(ContributedLibrary lib) { 67 return lib.getName().equals(library.getName()); 68 } 69 add(ContributedLibrary library)70 public void add(ContributedLibrary library) { 71 releases.add(library); 72 String version = library.getParsedVersion(); 73 if (version != null) { 74 versions.add(version); 75 } 76 selected = getLatest(); 77 } 78 getInstalled()79 public ContributedLibrary getInstalled() { 80 List<ContributedLibrary> installedReleases = releases.stream().filter(new InstalledPredicate()).collect(Collectors.toList()); 81 Collections.sort(installedReleases, new DownloadableContributionBuiltInAtTheBottomComparator()); 82 83 if (installedReleases.isEmpty()) { 84 return null; 85 } 86 87 return installedReleases.get(0); 88 } 89 getLatest()90 public ContributedLibrary getLatest() { 91 return FilteredAbstractTableModel.getLatestOf(releases); 92 } 93 getSelected()94 public ContributedLibrary getSelected() { 95 return selected; 96 } 97 select(ContributedLibrary value)98 public void select(ContributedLibrary value) { 99 for (ContributedLibrary plat : releases) { 100 if (plat == value) { 101 selected = plat; 102 return; 103 } 104 } 105 } 106 } 107