/*
* Copyright (C) 2012 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.motorola.studio.android.installer.utilities;
import java.net.URI;
import java.util.Collection;
import java.util.List;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import com.motorola.studio.android.common.log.StudioLogger;
import com.motorola.studio.android.installer.InstallerException;
import com.motorola.studio.android.installer.InstallerPlugin;
import com.motorola.studio.android.installer.i18n.InstallerNLS;
/**
* Utility methods for downloading and installing updates
*
*/
public class InstallManager implements IInstallManager
{
private static InstallManager instance;
P2Installer p2Installer = new P2Installer();
/*
* This class is a singleton.
*/
private InstallManager()
{
//Do nothing, singleton class.
}
/**
* Returns an instance of the Install Manager
* @return
*/
public static synchronized IInstallManager getInstance()
{
if (instance == null)
{
instance = new InstallManager();
}
return instance;
}
/**
* Updates studio in one single operation based in a link to look
* for the available updates. The backend parameter
* tells the manager how to look for updates on the site (for instance
* a P2 update site).
*
* IMPORTANT: the method listAllAvailableUpdates MUST be called first
*/
public IStatus updateStudio(List<URI> links, BACKEND backEnd, IProgressMonitor monitor)
{
Status status =
new Status(IStatus.ERROR, InstallerPlugin.PLUGIN_ID, 0,
InstallerNLS.InstallManager_Could_Not_Find_Proper_Backend, null);
switch (backEnd)
{
case P2:
{
return p2Installer.updateStudio(monitor);
}
default:
{
StudioLogger.debug(this, "updateStudio felt back to default.");
break;
}
}
return status;
}
/* (non-Javadoc)
* @see com.motorola.studio.android.installer.utilities.IInstallManager#listAllAvailableUpdates(java.util.Collection, java.util.List, com.motorola.studio.android.installer.utilities.IInstallManager.CATEGORY, com.motorola.studio.android.installer.utilities.IInstallManager.BACKEND, org.eclipse.core.runtime.IProgressMonitor)
*/
public IStatus listAllAvailableUpdates(Collection<InstallableItem> listToFill, List<URI> links,
CATEGORY category, BACKEND backEnd, IProgressMonitor monitor) throws InstallerException
{
IStatus status = null;
switch (backEnd)
{
case P2:
status =
p2Installer.listAllAvailableUpdates(listToFill, links, category, backEnd,
monitor);
break;
default:
{
StudioLogger.debug(this, "listAllAvailableUpdates felt back to default.");
break;
}
}
return status;
}
}