summaryrefslogtreecommitdiff
path: root/src/plugins/emulator/src/com/motorola/studio/android/emulator/logic/IAndroidLogicInstance.java
blob: 5f677164df518f0d1a6b33bc400d04e862b8f10b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/*
* 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 java.io.File;
import java.util.List;
import java.util.Properties;

import com.motorola.studio.android.emulator.core.model.IAndroidEmulatorInstance;

/**
 * DESCRIPTION:
 * This class adds to the Android Emulator instance contract
 * some specific methods related to services logic. 
 *
 * RESPONSIBILITY:
 * Define which additional information is required from a services to
 * plug to the Android Emulator viewer.
 *
 * COLABORATORS:
 * None. 
 *
 * USAGE:
 * Use the methods to retrieve information from a Android Emulator device instance
 */
public interface IAndroidLogicInstance extends IAndroidEmulatorInstance
{
    /**
     * Get the command lines arguments for the instance
     * 
     * @return list of command line arguments
     */
    String getCommandLineArguments();

    /**
     * Get the command lines arguments for the instance, returned as a Property object
     * 
     * @return list of command line arguments
     */
    Properties getCommandLineArgumentsAsProperties();

    /**
     * Get the Start logic for this instance, which is the commands used to start the instance
     * 
     * @return Start logic class
     */
    AbstractStartAndroidEmulatorLogic getStartLogic();

    /**
     * Check if there is a device connected to this instance
     * 
     * @return true if there is a device connected, false otherwise
     */
    boolean hasDevice();

    /**
     * Get the reference to the File that point to the filesystem location where the 
     * user data of the VM is.
     * 
     * @return the File object that references the filesystem location where the userdata 
     * of the given VM should be. Returns a null reference if SDK is not configured 
     * or if there is no VM with the given name.
     */
    File getUserdata();

    /**
     * Get the reference to the files in the VM folder that contain state data.
     * 
     * @return File objects that reference files in the VM folder that contain state data.
     */
    List<File> getStateData();

    /**
     * Tests if there is a userdata file for this android device instance or if it is clean, 
     * i.e, there is no user data file for this Android Device Instance. 
     * 
     * @return True if there is no working copy at that location; false otherwise 
     */
    boolean isClean();

    /**
     * Get the timeout value to start the instance
     * 
     * @return timeout value
     */
    int getTimeout();

    File getSnapshotOriginalFilePath();

}