| /* |
| * 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.emulator.logic; |
| |
| import static com.motorola.studio.android.common.log.StudioLogger.error; |
| |
| import java.io.IOException; |
| import java.util.Collection; |
| import java.util.LinkedList; |
| |
| import org.eclipse.core.runtime.IProgressMonitor; |
| import org.eclipse.core.runtime.IStatus; |
| |
| import com.motorola.studio.android.adt.DDMSFacade; |
| import com.motorola.studio.android.emulator.core.exception.InstanceStartException; |
| import com.motorola.studio.android.emulator.core.exception.StartCancelledException; |
| import com.motorola.studio.android.emulator.core.exception.StartTimeoutException; |
| import com.motorola.studio.android.emulator.i18n.EmulatorNLS; |
| |
| public class TransferFilesLogic implements IAndroidLogic |
| { |
| private String localDir = ""; |
| |
| private String remoteDir = ""; |
| |
| private final Collection<String> filenames = new LinkedList<String>(); |
| |
| public void execute(IAndroidLogicInstance instance, int timeout, IProgressMonitor monitor) |
| throws InstanceStartException, StartCancelledException, StartTimeoutException, |
| IOException |
| { |
| if ((instance != null) && (timeout > 0) && (localDir != null) && (!"".equals(localDir)) |
| && (remoteDir != null) && ("".equals(remoteDir))) |
| { |
| error("Cannot transfer files because the parameters provided are not as expected."); |
| throw new InstanceStartException( |
| EmulatorNLS.ERR_TransferFilesLogic_NotEnoughInformation); |
| } |
| |
| String serialNumber = DDMSFacade.getSerialNumberByName(instance.getName()); |
| IStatus status = |
| DDMSFacade.pushFiles(serialNumber, getLocalDir(), getFilenames(), getRemoteDir(), |
| timeout, monitor, null); |
| if (status.getSeverity() == IStatus.CANCEL) |
| { |
| throw new StartCancelledException(); |
| } |
| else if (status.getSeverity() == IStatus.ERROR) |
| { |
| throw new InstanceStartException(status.getMessage()); |
| } |
| } |
| |
| public void setLocalDir(String localDir) |
| { |
| this.localDir = localDir; |
| } |
| |
| public String getLocalDir() |
| { |
| return localDir; |
| } |
| |
| public void addFilename(String filename) |
| { |
| filenames.add(filename); |
| } |
| |
| public Collection<String> getFilenames() |
| { |
| return filenames; |
| } |
| |
| public void setRemoteDir(String remoteDir) |
| { |
| this.remoteDir = remoteDir; |
| } |
| |
| public String getRemoteDir() |
| { |
| return remoteDir; |
| } |
| |
| } |