/**
* Copyright 2011-2015 John Ericksen
*
* 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 org.androidtransfuse.model.manifest;
import org.androidtransfuse.annotations.UIOptions;
import org.androidtransfuse.model.Identified;
import org.androidtransfuse.model.Mergeable;
import org.androidtransfuse.processor.Merge;
import org.androidtransfuse.processor.MergeCollection;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
/**
* attributes
* android:allowTaskReparenting=["true" | "false"]
* android:backupAgent="string"
* android:debuggable=["true" | "false"]
* android:fullBackupContent="xml resource"
* android:description="string resource"
* android:enabled=["true" | "false"]
* android:hasCode=["true" | "false"]
* android:hardwareAccelerated=["true" | "false"]
* android:icon="drawable resource"
* android:killAfterRestore=["true" | "false"]
* android:label="string resource"
* android:logo="drawable resource"
* android:manageSpaceActivity="string"
* android:name="string"
* android:permission="string"
* android:persistent=["true" | "false"]
* android:process="string"
* android:restoreAnyVersion=["true" | "false"]
* android:taskAffinity="string"
* android:theme="resource or theme"
* android:uiOptions=["none" | "splitActionBarWhenNarrow"]
*
* can contain:
* <activity>
* <activity-alias>
* <service>
* <receiver>
* <provider>
* <uses-library>
*
* @author John Ericksen
*/
public class Application extends Mergeable implements Identified {
private Boolean allowTaskReparenting;
private String backupAgent;
private Boolean debuggable;
private String description;
private Boolean enabled;
private Boolean hasCode;
private Boolean hardwareAccelerated;
private String icon;
private Boolean killAfterRestore;
private String label;
private String logo;
private String manageSpaceActivity;
private String name;
private String permission;
private Boolean persistent;
private String process;
private Boolean restoreAnyVersion;
private String taskAffinity;
private String theme;
private UIOptions uiOptions;
private Boolean allowBackup;
private String fullBackupContent;
private Boolean largeHeap;
private Boolean supportsRtl;
private Boolean restrictedAccountType;
private Boolean vmSafeMode;
private Boolean testOnly;
private String requiredAccountType;
private List<Activity> activities = new ArrayList<Activity>();
private List<ActivityAlias> activityAliases = new ArrayList<ActivityAlias>();
private List<Service> services = new ArrayList<Service>();
private List<Receiver> receivers = new ArrayList<Receiver>();
private List<Provider> providers = new ArrayList<Provider>();
private List<UsesLibrary> usesLibraries = new ArrayList<UsesLibrary>();
private List<MetaData> metaData = new ArrayList<MetaData>();
@Merge("r")
@XmlAttribute(name = "allowTaskReparenting", namespace = ManifestNamespaceMapper.ANDROID_URI)
public Boolean getAllowTaskReparenting() {
return allowTaskReparenting;
}
public void setAllowTaskReparenting(Boolean allowTaskReparenting) {
this.allowTaskReparenting = allowTaskReparenting;
}
@Merge("a")
@XmlAttribute(name = "backupAgent", namespace = ManifestNamespaceMapper.ANDROID_URI)
public String getBackupAgent() {
return backupAgent;
}
public void setBackupAgent(String backupAgent) {
this.backupAgent = backupAgent;
}
@Merge("b")
@XmlAttribute(name = "debuggable", namespace = ManifestNamespaceMapper.ANDROID_URI)
public Boolean getDebuggable() {
return debuggable;
}
public void setDebuggable(Boolean debuggable) {
this.debuggable = debuggable;
}
@Merge("d")
@XmlAttribute(name = "description", namespace = ManifestNamespaceMapper.ANDROID_URI)
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
@Merge("e")
@XmlAttribute(name = "enabled", namespace = ManifestNamespaceMapper.ANDROID_URI)
public Boolean getEnabled() {
return enabled;
}
public void setEnabled(Boolean enabled) {
this.enabled = enabled;
}
@Merge("c")
@XmlAttribute(name = "hasCode", namespace = ManifestNamespaceMapper.ANDROID_URI)
public Boolean getHasCode() {
return hasCode;
}
public void setHasCode(Boolean hasCode) {
this.hasCode = hasCode;
}
@Merge("h")
@XmlAttribute(name = "hardwareAccelerated", namespace = ManifestNamespaceMapper.ANDROID_URI)
public Boolean getHardwareAccelerated() {
return hardwareAccelerated;
}
public void setHardwareAccelerated(Boolean hardwareAccelerated) {
this.hardwareAccelerated = hardwareAccelerated;
}
@Merge("i")
@XmlAttribute(name = "icon", namespace = ManifestNamespaceMapper.ANDROID_URI)
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
@Merge("k")
@XmlAttribute(name = "killAfterRestore", namespace = ManifestNamespaceMapper.ANDROID_URI)
public Boolean getKillAfterRestore() {
return killAfterRestore;
}
public void setKillAfterRestore(Boolean killAfterRestore) {
this.killAfterRestore = killAfterRestore;
}
@Merge("l")
@XmlAttribute(name = "label", namespace = ManifestNamespaceMapper.ANDROID_URI)
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
@Merge("o")
@XmlAttribute(name = "logo", namespace = ManifestNamespaceMapper.ANDROID_URI)
public String getLogo() {
return logo;
}
public void setLogo(String logo) {
this.logo = logo;
}
@Merge("s")
@XmlAttribute(name = "manageSpaceActivity", namespace = ManifestNamespaceMapper.ANDROID_URI)
public String getManageSpaceActivity() {
return manageSpaceActivity;
}
public void setManageSpaceActivity(String manageSpaceActivity) {
this.manageSpaceActivity = manageSpaceActivity;
}
@Merge("n")
@XmlAttribute(name = "name", namespace = ManifestNamespaceMapper.ANDROID_URI)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Merge("m")
@XmlAttribute(name = "permission", namespace = ManifestNamespaceMapper.ANDROID_URI)
public String getPermission() {
return permission;
}
public void setPermission(String permission) {
this.permission = permission;
}
@Merge("x")
@XmlAttribute(name = "persistent", namespace = ManifestNamespaceMapper.ANDROID_URI)
public Boolean getPersistent() {
return persistent;
}
public void setPersistent(Boolean persistent) {
this.persistent = persistent;
}
@Merge("p")
@XmlAttribute(name = "process", namespace = ManifestNamespaceMapper.ANDROID_URI)
public String getProcess() {
return process;
}
public void setProcess(String process) {
this.process = process;
}
@Merge("v")
@XmlAttribute(name = "restoreAnyVersion", namespace = ManifestNamespaceMapper.ANDROID_URI)
public Boolean getRestoreAnyVersion() {
return restoreAnyVersion;
}
public void setRestoreAnyVersion(Boolean restoreAnyVersion) {
this.restoreAnyVersion = restoreAnyVersion;
}
@Merge("f")
@XmlAttribute(name = "taskAffinity", namespace = ManifestNamespaceMapper.ANDROID_URI)
public String getTaskAffinity() {
return taskAffinity;
}
public void setTaskAffinity(String taskAffinity) {
this.taskAffinity = taskAffinity;
}
@Merge("t")
@XmlAttribute(name = "theme", namespace = ManifestNamespaceMapper.ANDROID_URI)
public String getTheme() {
return theme;
}
public void setTheme(String theme) {
this.theme = theme;
}
@Merge("u")
@XmlAttribute(name = "uiOptions", namespace = ManifestNamespaceMapper.ANDROID_URI)
@XmlJavaTypeAdapter(LabeledConverter.UIOptionsConverter.class)
public UIOptions getUiOptions() {
return uiOptions;
}
public void setUiOptions(UIOptions uiOptions) {
this.uiOptions = uiOptions;
}
@MergeCollection(collectionType = ArrayList.class, type = Activity.class)
@XmlElement(name = "activity")
public List<Activity> getActivities() {
return activities;
}
public void setActivities(List<Activity> activities) {
this.activities = activities;
}
@XmlElement(name = "activity-alias")
public List<ActivityAlias> getActivityAliases() {
return activityAliases;
}
public void setActivityAliases(List<ActivityAlias> activityAliases) {
this.activityAliases = activityAliases;
}
@MergeCollection(collectionType = ArrayList.class, type = Service.class)
@XmlElement(name = "service")
public List<Service> getServices() {
return services;
}
public void setServices(List<Service> services) {
this.services = services;
}
@MergeCollection(collectionType = ArrayList.class, type = Receiver.class)
@XmlElement(name = "receiver")
public List<Receiver> getReceivers() {
return receivers;
}
public void setReceivers(List<Receiver> receivers) {
this.receivers = receivers;
}
@MergeCollection(collectionType = ArrayList.class, type = MetaData.class)
@XmlElement(name = "meta-data")
public List<MetaData> getMetaData() {
return metaData;
}
public void setMetaData(List<MetaData> metaData) {
this.metaData = metaData;
}
@XmlElement(name = "provider")
public List<Provider> getProviders() {
return providers;
}
public void setProviders(List<Provider> providers) {
this.providers = providers;
}
@XmlElement(name = "uses-library")
public List<UsesLibrary> getUsesLibraries() {
return usesLibraries;
}
public void setUsesLibraries(List<UsesLibrary> usesLibraries) {
this.usesLibraries = usesLibraries;
}
@Merge("ab")
@XmlAttribute(name = "allowBackup", namespace = ManifestNamespaceMapper.ANDROID_URI)
public Boolean getAllowBackup() {
return allowBackup;
}
public void setAllowBackup(Boolean allowBackup) {
this.allowBackup = allowBackup;
}
@Merge("fbc")
@XmlAttribute(name = "fullBackupContent", namespace = ManifestNamespaceMapper.ANDROID_URI)
public String getFullBackupContent() {
return fullBackupContent;
}
public void setFullBackupContent(String fullBackupContent) {
this.fullBackupContent = fullBackupContent;
}
@Merge("lh")
@XmlAttribute(name = "largeHeap", namespace = ManifestNamespaceMapper.ANDROID_URI)
public Boolean getLargeHeap() {
return largeHeap;
}
public void setLargeHeap(Boolean largeHeap) {
this.largeHeap = largeHeap;
}
@Merge("rt")
@XmlAttribute(name = "supportsRtl", namespace = ManifestNamespaceMapper.ANDROID_URI)
public Boolean getSupportsRtl() {
return supportsRtl;
}
public void setSupportsRtl(Boolean supportsRtl) {
this.supportsRtl = supportsRtl;
}
@Merge("ra")
@XmlAttribute(name = "restrictedAccountType", namespace = ManifestNamespaceMapper.ANDROID_URI)
public Boolean getRestrictedAccountType() {
return restrictedAccountType;
}
public void setRestrictedAccountType(Boolean restrictedAccountType) {
this.restrictedAccountType = restrictedAccountType;
}
@Merge("vm")
@XmlAttribute(name = "vmSafeMode", namespace = ManifestNamespaceMapper.ANDROID_URI)
public Boolean getVmSafeMode() {
return vmSafeMode;
}
public void setVmSafeMode(Boolean vmSafeMode) {
this.vmSafeMode = vmSafeMode;
}
@Merge("to")
@XmlAttribute(name = "testOnly", namespace = ManifestNamespaceMapper.ANDROID_URI)
public Boolean getTestOnly() {
return testOnly;
}
public void setTestOnly(Boolean testOnly) {
this.testOnly = testOnly;
}
@Merge("rc")
@XmlAttribute(name = "requiredAccountType", namespace = ManifestNamespaceMapper.ANDROID_URI)
public String getRequiredAccountType() {
return requiredAccountType;
}
public void setRequiredAccountType(String requiredAccountType) {
this.requiredAccountType = requiredAccountType;
}
@Override
@XmlTransient
public String getIdentifier() {
return name;
}
public void updatePackage(String manifestPackage) {
if(name != null && name.startsWith(manifestPackage) && containsTag("n")){
name = name.substring(manifestPackage.length());
}
if(activities != null){
for (Activity activity : activities) {
activity.updatePackage(manifestPackage);
}
}
if(services != null){
for (Service service : services) {
service.updatePackage(manifestPackage);
}
}
if(receivers != null){
for (Receiver receiver : receivers) {
receiver.updatePackage(manifestPackage);
}
}
}
}