| /******************************************************************************* |
| * Copyright (c) 2009 EclipseSource 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: |
| * EclipseSource - initial API and implementation |
| ******************************************************************************/ |
| package org.eclipse.equinox.p2.internal.repository.tools.analyzer; |
| |
| import java.util.HashSet; |
| import java.util.Set; |
| import org.eclipse.equinox.p2.metadata.IInstallableUnit; |
| import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository; |
| import org.eclipse.equinox.p2.repository.tools.analyzer.IUAnalyzer; |
| |
| /** |
| * This service checks that each IU is unique in a given repository. |
| */ |
| public class UniqueIUAnalyzer extends IUAnalyzer { |
| |
| Set<String> versionedNames = null; |
| |
| public void analyzeIU(IInstallableUnit iu) { |
| // Create a unique name / version pair and cache it |
| String uniqueID = iu.getId() + ":" + iu.getVersion().toString(); |
| if (versionedNames.contains(uniqueID)) { |
| error(iu, "[ERROR]" + iu.getId() + " with version: " + iu.getVersion() + " already exists in the repository"); |
| return; |
| } |
| versionedNames.add(uniqueID); |
| } |
| |
| public void preAnalysis(IMetadataRepository repo) { |
| versionedNames = new HashSet<String>(); |
| } |
| } |