/*
* 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.model.manifest.dom;
import java.util.LinkedList;
import java.util.List;
import org.eclipse.core.runtime.IStatus;
/**
* Class that represents an <application> node on AndroidManifest.xml file
*/
public class ApplicationNode extends AbstractIconLabelNameNode
{
static
{
defaultProperties.add(PROP_ALLOWCLEARUSERDATA);
defaultProperties.add(PROP_ALLOWTASKREPARENTING);
defaultProperties.add(PROP_DEBUGGABLE);
defaultProperties.add(PROP_DESCRIPTION);
defaultProperties.add(PROP_ENABLED);
defaultProperties.add(PROP_HASCODE);
defaultProperties.add(PROP_MANAGESPACEACTIVITY);
defaultProperties.add(PROP_PERMISSION);
defaultProperties.add(PROP_PERSISTENT);
defaultProperties.add(PROP_PROCESS);
defaultProperties.add(PROP_TASKAFFINITY);
defaultProperties.add(PROP_THEME);
}
/**
* The allowClearUserData property
*/
private Boolean propAllowClearUserData = null;
/**
* The allowTaskReparenting property
*/
private Boolean propAllowTaskReparenting = null;
/**
* The debuggable property
*/
private Boolean propDebuggable = null;
/**
* The description property
*/
private String propDescription = null;
/**
* The enabled property
*/
private Boolean propEnabled = null;
/**
* The hasCode property
*/
private Boolean propHasCode = null;
/**
* The manageSpaceActivity property
*/
private String propManageSpaceActivity = null;
/**
* The permission property
*/
private String propPermission = null;
/**
* The persistent property
*/
private Boolean propPersistent = null;
/**
* The process property
*/
private String propProcess = null;
/**
* The taskAffinity property
*/
private String propTaskAffinity = null;
/**
* The theme property
*/
private String propTheme = null;
/**
* Default constructor
*
* @param name The name property. It must not be null.
*/
public ApplicationNode(String name)
{
super(name);
}
/* (non-Javadoc)
* @see com.motorola.studio.android.model.manifest.dom.AndroidManifestNode#canContains(com.motorola.studio.android.model.manifest.dom.AndroidManifestNode.NodeType)
*/
@Override
protected boolean canContains(NodeType nodeType)
{
return (nodeType == NodeType.Activity) || (nodeType == NodeType.ActivityAlias)
|| (nodeType == NodeType.Service) || (nodeType == NodeType.Receiver)
|| (nodeType == NodeType.Provider) || (nodeType == NodeType.UsesLibrary)
|| (nodeType == NodeType.Comment) || (nodeType == NodeType.MetaData);
}
/* (non-Javadoc)
* @see com.motorola.studio.android.model.manifest.dom.AbstractIconLabelNameNode#addAdditionalProperties()
*/
@Override
protected void addAdditionalProperties()
{
if (propAllowClearUserData != null)
{
properties.put(PROP_ALLOWCLEARUSERDATA, propAllowClearUserData.toString());
}
if (propAllowTaskReparenting != null)
{
properties.put(PROP_ALLOWTASKREPARENTING, propAllowTaskReparenting.toString());
}
if (propDebuggable != null)
{
properties.put(PROP_DEBUGGABLE, propDebuggable.toString());
}
if (propDescription != null)
{
properties.put(PROP_DESCRIPTION, propDescription);
}
if (propEnabled != null)
{
properties.put(PROP_ENABLED, propEnabled.toString());
}
if (propHasCode != null)
{
properties.put(PROP_HASCODE, propHasCode.toString());
}
if (propManageSpaceActivity != null)
{
properties.put(PROP_MANAGESPACEACTIVITY, propManageSpaceActivity);
}
if (propPermission != null)
{
properties.put(PROP_PERMISSION, propPermission);
}
if (propPersistent != null)
{
properties.put(PROP_PERSISTENT, propPersistent.toString());
}
if (propProcess != null)
{
properties.put(PROP_PROCESS, propProcess);
}
if (propTaskAffinity != null)
{
properties.put(PROP_TASKAFFINITY, propTaskAffinity);
}
if (propTheme != null)
{
properties.put(PROP_THEME, propTheme);
}
}
/* (non-Javadoc)
* @see com.motorola.studio.android.model.manifest.dom.AndroidManifestNode#getNodeType()
*/
@Override
public NodeType getNodeType()
{
return NodeType.Application;
}
/* (non-Javadoc)
* @see com.motorola.studio.android.model.manifest.dom.AndroidManifestNode#isNodeValid()
*/
@Override
protected boolean isNodeValid()
{
return super.isNodeValid();
}
/**
* Gets the allowClearUserData property value
*
* @return the allowClearUserData property value
*/
public Boolean getAllowClearUserData()
{
return propAllowClearUserData;
}
/**
* Sets the allowClearUserData property value. Set it to null to remove it.
*
* @param allowClearUserData the allowClearUserData property value
*/
public void setAllowClearUserData(Boolean allowClearUserData)
{
this.propAllowClearUserData = allowClearUserData;
}
/**
* Gets the allowTaskReparenting property value
*
* @return the allowTaskReparenting property value
*/
public Boolean getAllowTaskReparenting()
{
return propAllowTaskReparenting;
}
/**
* Sets the allowTaskReparenting property value. Set it to null to remove it.
*
* @param allowTaskReparenting the allowTaskReparenting property value
*/
public void setAllowTaskReparenting(Boolean allowTaskReparenting)
{
this.propAllowTaskReparenting = allowTaskReparenting;
}
/**
* Gets the debuggable property value
*
* @return the debuggable property value
*/
public Boolean getDebuggable()
{
return propDebuggable;
}
/**
* Sets the debuggable property value. Set it to null to remove it.
*
* @param debuggable the debuggable property value
*/
public void setDebuggable(Boolean debuggable)
{
this.propDebuggable = debuggable;
}
/**
* Gets the description property value
*
* @return the description property value
*/
public String getDescription()
{
return propDescription;
}
/**
* Sets the description property value. Set it to null to remove it.
*
* @param description the description property value
*/
public void setDescription(String description)
{
this.propDescription = description;
}
/**
* Gets the enabled property value
*
* @return the enabled property value
*/
public Boolean getEnabled()
{
return propEnabled;
}
/**
* Sets the enabled property value. Set it to null to remove it.
*
* @param enabled the enabled property value
*/
public void setEnabled(Boolean enabled)
{
this.propEnabled = enabled;
}
/**
* Gets the hasCode property value
*
* @return the hasCode property value
*/
public Boolean getHasCode()
{
return propHasCode;
}
/**
* Sets the hasCode property value. Set it to null to remove it.
*
* @param hasCode the hasCode property value
*/
public void setHasCode(Boolean hasCode)
{
this.propHasCode = hasCode;
}
/**
* Gets the manageSpaceActivity property value
*
* @return the manageSpaceActivity property value
*/
public String getManageSpaceActivity()
{
return propManageSpaceActivity;
}
/**
* Sets the manageSpaceActivity property value. Set it to null to remove it.
*
* @param manageSpaceActivity the manageSpaceActivity property value
*/
public void setManageSpaceActivity(String manageSpaceActivity)
{
this.propManageSpaceActivity = manageSpaceActivity;
}
/**
* Gets the permission property value
*
* @return the permission property value
*/
public String getPermission()
{
return propPermission;
}
/**
* Sets the permission property value. Set it to null to remove it.
*
* @param permission the permission property value
*/
public void setPermission(String permission)
{
this.propPermission = permission;
}
/**
* Gets the persistent property value
*
* @return the persistent property value
*/
public Boolean getPersistent()
{
return propPersistent;
}
/**
* Sets the persistent property value. Set it to null to remove it.
*
* @param persistent the persistent property value
*/
public void setPersistent(Boolean persistent)
{
this.propPersistent = persistent;
}
/**
* Gets the process property value
*
* @return the process property value
*/
public String getProcess()
{
return propProcess;
}
/**
* Sets the process property value. Set it to null to remove it.
*
* @param process the process property value
*/
public void setProcess(String process)
{
this.propProcess = process;
}
/**
* Gets the taskAffinity property value
*
* @return the taskAffinity property value
*/
public String getTaskAffinity()
{
return propTaskAffinity;
}
/**
* Sets the taskAffinity property value. Set it to null to remove it.
*
* @param taskAffinity the taskAffinity property value
*/
public void setTaskAffinity(String taskAffinity)
{
this.propTaskAffinity = taskAffinity;
}
/**
* Gets the theme property value
*
* @return the theme property value
*/
public String getTheme()
{
return propTheme;
}
/**
* Sets the theme property value. Set it to null to remove it.
*
* @param theme the theme property value
*/
public void setTheme(String theme)
{
this.propTheme = theme;
}
/**
* Adds an Activity Node to the Application Node
*
* @param activity The Activity Node
*/
public void addActivityNode(ActivityNode activity)
{
if (activity != null)
{
if (!children.contains(activity))
{
children.add(activity);
}
}
}
/**
* Retrieves all Activity Nodes from the Application Node
*
* @return all Activity Nodes from the Application Node
*/
public List<ActivityNode> getActivityNodes()
{
List<ActivityNode> activities = new LinkedList<ActivityNode>();
for (AndroidManifestNode node : getAllChildrenFromType(NodeType.Activity))
{
activities.add((ActivityNode) node);
}
return activities;
}
/**
* Removes an Activity Node from the Application Node
*
* @param activity the Activity Node to be removed
*/
public void removeActivityNode(ActivityNode activity)
{
if (activity != null)
{
children.remove(activity);
}
}
/**
* Adds an Activity Alias Node to the Application Node
*
* @param activityAlias The Activity Alias Node
*/
public void addActivityAliasNode(ActivityAliasNode activityAlias)
{
if (activityAlias != null)
{
if (!children.contains(activityAlias))
{
children.add(activityAlias);
}
}
}
/**
* Retrieves all Activity Alias Nodes from the Application Node
*
* @return all Activity Alias Nodes from the Application Node
*/
public List<ActivityAliasNode> getActivityAliasNodes()
{
List<ActivityAliasNode> activityAliases = new LinkedList<ActivityAliasNode>();
for (AndroidManifestNode node : getAllChildrenFromType(NodeType.ActivityAlias))
{
activityAliases.add((ActivityAliasNode) node);
}
return activityAliases;
}
/**
* Removes an Activity Alias Node from the Application Node
*
* @param activityAlias the Activity Alias Node to be removed
*/
public void removeActivityAliasNode(ActivityAliasNode activityAlias)
{
if (activityAlias != null)
{
children.remove(activityAlias);
}
}
/**
* Adds a Service Node to the Application Node
*
* @param service The Service Node
*/
public void addServiceNode(ServiceNode service)
{
if (service != null)
{
if (!children.contains(service))
{
children.add(service);
}
}
}
/**
* Retrieves all Service Nodes from the Application Node
*
* @return all Service Nodes from the Application Node
*/
public List<ServiceNode> getServiceNodes()
{
List<ServiceNode> services = new LinkedList<ServiceNode>();
for (AndroidManifestNode node : getAllChildrenFromType(NodeType.Service))
{
services.add((ServiceNode) node);
}
return services;
}
/**
* Removes a Service Node from the Application Node
*
* @param service the Service Node to be removed
*/
public void removeServiceNode(ServiceNode service)
{
if (service != null)
{
children.remove(service);
}
}
/**
* Adds a Receiver Node to the Application Node
*
* @param receiver The Receiver Node
*/
public void addReceiverNode(ReceiverNode receiver)
{
if (receiver != null)
{
if (!children.contains(receiver))
{
children.add(receiver);
}
}
}
/**
* Retrieves all Receiver Nodes from the Application Node
*
* @return all Receiver Nodes from the Application Node
*/
public List<ReceiverNode> getReceiverNodes()
{
List<ReceiverNode> receivers = new LinkedList<ReceiverNode>();
for (AndroidManifestNode node : getAllChildrenFromType(NodeType.Receiver))
{
receivers.add((ReceiverNode) node);
}
return receivers;
}
/**
* Removes a Receiver Node from the Application Node
*
* @param receiver the Receiver Node to be removed
*/
public void removeReceiverNode(ReceiverNode receiver)
{
if (receiver != null)
{
children.remove(receiver);
}
}
/**
* Adds a Provider Node to the Application Node
*
* @param provider The Provider Node
*/
public void addProviderNode(ProviderNode provider)
{
if (provider != null)
{
if (!children.contains(provider))
{
children.add(provider);
}
}
}
/**
* Retrieves all Provider Nodes from the Application Node
*
* @return all Provider Nodes from the Application Node
*/
public List<ProviderNode> getProviderNodes()
{
List<ProviderNode> providers = new LinkedList<ProviderNode>();
for (AndroidManifestNode node : getAllChildrenFromType(NodeType.Provider))
{
providers.add((ProviderNode) node);
}
return providers;
}
/**
* Removes a Provider Node from the Application Node
*
* @param provider the Provider Node to be removed
*/
public void removeProviderNode(ProviderNode provider)
{
if (provider != null)
{
children.remove(provider);
}
}
/**
* Adds an Uses Library Node to the Application Node
*
* @param usesLibrary The Uses Library Node
*/
public void addUsesLibraryNode(UsesLibraryNode usesLibrary)
{
if (usesLibrary != null)
{
if (!children.contains(usesLibrary))
{
children.add(usesLibrary);
}
}
}
/**
* Retrieves all Uses Library Nodes from the Application Node
*
* @return all Uses Library Nodes from the Application Node
*/
public List<UsesLibraryNode> getUsesLibraryNodes()
{
List<UsesLibraryNode> usesLibraries = new LinkedList<UsesLibraryNode>();
for (AndroidManifestNode node : getAllChildrenFromType(NodeType.UsesLibrary))
{
usesLibraries.add((UsesLibraryNode) node);
}
return usesLibraries;
}
/**
* Removes an Uses Library Node from the Application Node
*
* @param usesLibrary the Uses Library Node to be removed
*/
public void removeUsesLibraryNode(UsesLibraryNode usesLibrary)
{
if (usesLibrary != null)
{
children.remove(usesLibrary);
}
}
/* (non-Javadoc)
* @see com.motorola.studio.android.model.manifest.dom.AndroidManifestNode#getSpecificNodeErrors()
*/
@Override
protected List<IStatus> getSpecificNodeProblems()
{
return null;
}
}