/******************************************************************************* * Copyright (c) 2006-2008, Cloudsmith Inc. * The code, documentation and other materials contained herein have been * licensed under the Eclipse Public License - v 1.0 by the copyright holder * listed above, as the Initial Contributor under such license. The text of * such license is available at www.eclipse.org. ******************************************************************************/ package org.eclipse.buckminster.p2.remote.server; import java.io.File; import java.net.URL; import java.util.Map; import org.eclipse.buckminster.p2.remote.change.SetDescription; import org.eclipse.buckminster.p2.remote.change.SetName; import org.eclipse.buckminster.p2.remote.change.SetProperty; import org.eclipse.buckminster.p2.remote.change.SetProvider; import org.eclipse.core.runtime.PlatformObject; import org.eclipse.equinox.internal.provisional.p2.core.ProvisionException; import org.eclipse.equinox.internal.provisional.p2.core.repository.IRepository; public class LoggingRepository extends PlatformObject implements IRepository { protected final IRepository wrappedRepository; private final ChangeLog m_changeLog; private final Mirrors m_mirrors; private final RepositoryServer m_server; public LoggingRepository(RepositoryServer server, IRepository repository, File facadeArea) throws ProvisionException { wrappedRepository = repository; m_changeLog = new ChangeLog(new File(facadeArea, "changelog"), 1L, server); m_mirrors = new Mirrors(new File(facadeArea, "mirrors"), server); m_server = server; } @Override @SuppressWarnings("unchecked") public Object getAdapter(Class adapter) { if(IRepository.class.isAssignableFrom(adapter)) return this; return super.getAdapter(adapter); } public ChangeLog getChangeLog() { return m_changeLog; } public String getDescription() { return wrappedRepository.getDescription(); } public URL getLocation() { return wrappedRepository.getLocation(); } public Mirrors getMirrors() { return m_mirrors; } public String getName() { return wrappedRepository.getName(); } @SuppressWarnings("unchecked") public Map getProperties() { return wrappedRepository.getProperties(); } public String getProvider() { return wrappedRepository.getProvider(); } public RepositoryServer getServer() { return m_server; } public String getType() { return wrappedRepository.getType(); } public String getVersion() { return wrappedRepository.getVersion(); } public boolean isModifiable() { return wrappedRepository.isModifiable(); } public void setDescription(String description) { SetDescription change = new SetDescription(); change.setDescription(description); m_changeLog.addChange(change); wrappedRepository.setDescription(description); } public void setName(String name) { SetName change = new SetName(); change.setName(name); m_changeLog.addChange(change); wrappedRepository.setName(name); } public String setProperty(String key, String value) { SetProperty change = new SetProperty(); change.setKey(key); change.setValue(value); m_changeLog.addChange(change); return wrappedRepository.setProperty(key, value); } public void setProvider(String provider) { SetProvider change = new SetProvider(); change.setProvider(provider); m_changeLog.addChange(change); wrappedRepository.setProvider(provider); } }