| /******************************************************************************* |
| * Copyright (c) 2007 IBM Corporation 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: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.equinox.internal.p2.update; |
| |
| import java.io.File; |
| import org.eclipse.equinox.internal.p2.reconciler.dropins.Activator; |
| import org.eclipse.equinox.p2.directorywatcher.RepositoryListener; |
| |
| /** |
| * @since 1.0 |
| */ |
| public class SiteListener extends RepositoryListener { |
| |
| private Site site; |
| |
| /* |
| * Create a new site listener on the given site. |
| */ |
| public SiteListener(Site site) { |
| super(Activator.getContext(), Integer.toString(site.getUrl().hashCode())); |
| this.site = site; |
| } |
| |
| /* |
| * Return true if the given list contains the symbolic name for the bundle |
| * represented by the given file handle. Return false otherwise. |
| */ |
| private boolean contains(String[] plugins, File file) { |
| String filename = file.getAbsolutePath(); |
| for (int i = 0; i < plugins.length; i++) |
| if (plugins[i].endsWith(filename)) |
| return true; |
| return false; |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.equinox.p2.directorywatcher.DirectoryChangeListener#isInterested(java.io.File) |
| */ |
| public boolean isInterested(File file) { |
| String policy = site.getPolicy(); |
| String[] plugins = site.getList(); |
| if (Site.POLICY_MANAGED_ONLY.equals(policy)) { |
| // TODO |
| } else if (Site.POLICY_USER_EXCLUDE.equals(policy)) { |
| // ensure the file doesn't refer to a plug-in in our list |
| return plugins.length == 0 ? true : !contains(plugins, file); |
| } else if (Site.POLICY_USER_INCLUDE.equals(policy)) { |
| // we are only interested in plug-ins in the list |
| return plugins.length == 0 ? false : contains(plugins, file); |
| } |
| return false; |
| } |
| } |