summaryrefslogtreecommitdiff
path: root/src/plugins/preflighting.core/src/com/motorolamobility/preflighting/core/applicationdata/Element.java
blob: 496818c4d404f067da30e4742518d4673baf28b6 (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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
/*
 * 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.motorolamobility.preflighting.core.applicationdata;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

/***
 * Base element of the Application Data tree. This class represents a node of the tree.
 * <br>  
 * Note: For specialized element types see subclasses of this class.
 */
public class Element
{
    /** 
     * Enumerator for available elements inside Android projects.
     * <br><br>
     * The project tree starts at {@link Element.Type#ROOT}
     * <br>
     * Inside root, there are folders e.g.: {@link Element.Type#FOLDER_RES} or {@link Element.Type#FOLDER_DRAWABLE}.
     * <br>
     * Inside folders there are files e.g.: {@link Element.Type#FILE_JAVA} or {@link Element.Type#FILE_LAYOUT} 
     *  
     */
    public enum Type
    {
        ROOT, FOLDER_SRC, FOLDER_RES, FOLDER_LAYOUT, FOLDER_VALUES, FOLDER_DRAWABLE, FOLDER_LIB,
        FOLDER_UNKNOWN, FILE_DRAWABLE, FILE_LAYOUT, FILE_XML, FILE_STRINGS, FILE_MANIFEST,
        FILE_UNKNOWN, FILE_JAVA
    };

    // Class Properties
    private String name;

    private Element parent;

    private Type type;

    private File file;

    private List<Element> children;

    /***
     * The Constructor.
     * 
     * @param name
     * @param parent
     * @param type
     */
    public Element(String name, Element parent, Type type)
    {
        this.name = name;
        this.parent = parent;
        this.type = type;
        children = new ArrayList<Element>();
    }

    /**
     * Adds a child to the Element.
     * @param childElement
     */
    public void addChild(Element childElement)
    {
        children.add(childElement);
    }

    /**
     * Removes a child from the Element.
     * @param childElement
     */
    public void removeChild(Element childElement)
    {
        children.remove(childElement);
    }

    /**
     * Returns the file which corresponds to the Element.
     * @return file which corresponds to the Element.
     */
    public File getFile()
    {
        return file;
    }

    /**
     * Returns the type which corresponds to this Element.
     * @return Type which corresponds to the Element.
     */
    public Type getType()
    {
        return type;
    }

    /**
     * Sets the type which corresponds to this Element.
     * @return Type which corresponds to the Element.
     */
    public void setType(Type type)
    {
        this.type = type;
    }

    public List<Element> getChildren()
    {
        return children;
    }

    public void setChildren(List<Element> children)
    {
        this.children = children;
    }

    /**
     * Returns the name of the Element.
     * @return String with the name of the Element.
     */
    public String getName()
    {
        return name;
    }

    /**
     * Sets the name of the Element.
     * @param name String with the name.
     */
    public void setName(String name)
    {
        this.name = name;
    }

    /**
     * Returns the parent element of this Element.
     * @return an Element which corresponds to the parent of this Element.
     */
    public Element getParent()
    {
        return parent;
    }

    /**
     * Sets a parent Element to this Element.
     * @param parent The element which will be the parent of this Element.
     */
    public void setParent(Element parent)
    {
        this.parent = parent;
    }

    /**
     * Sets the file of the Element.
     * @param file the File of the Element.
     */
    public void setFile(File file)
    {
        this.file = file;
    }

    /**
     * Cleans this Element removing all of its children.
     * @param file the File of the Element.
     */
    public void clean()
    {
        if (this.children != null)
        {
            for (Element child : this.children)
            {
                child.clean();
            }
        }
        this.children = null;
    }

}