/**
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for
* license information.
*/
package com.microsoft.azure.management.batch.implementation;
import com.microsoft.azure.management.apigeneration.LangDefinition;
import com.microsoft.azure.management.batch.Application;
import com.microsoft.azure.management.batch.ApplicationPackage;
import com.microsoft.azure.management.resources.fluentcore.arm.collection.implementation.ExternalChildResourcesCachedImpl;
import java.util.List;
import java.util.Map;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Collections;
/**
* Represents a applicationPackage collection associated with an application.
*/
@LangDefinition
class ApplicationPackagesImpl extends
ExternalChildResourcesCachedImpl<ApplicationPackageImpl,
ApplicationPackage,
ApplicationPackageInner,
ApplicationImpl,
Application> {
private final ApplicationImpl parent;
ApplicationPackagesImpl(ApplicationImpl parent) {
super(parent, "ApplicationPackage");
this.parent = parent;
this.cacheCollection();
}
public ApplicationPackageImpl define(String name) {
return this.prepareDefine(name);
}
public void remove(String applicationPackageName) {
this.prepareRemove(applicationPackageName);
}
@Override
protected List<ApplicationPackageImpl> listChildResources() {
List<ApplicationPackageImpl> childResources = new ArrayList<>();
if (this.parent().inner().packages() == null || this.parent().inner().packages().size() == 0) {
return childResources;
}
List<ApplicationPackageInner> applicationPackageList = this.parent.inner().packages();
for (ApplicationPackageInner applicationPackage: applicationPackageList) {
childResources.add(new ApplicationPackageImpl(
applicationPackage.version(),
this.parent(),
applicationPackage,
this.parent().parent().manager().inner().applicationPackages()));
}
return childResources;
}
@Override
protected ApplicationPackageImpl newChildResource(String name) {
ApplicationPackageImpl applicationPackage = ApplicationPackageImpl
.newApplicationPackage(name, this.parent(), this.parent().parent().manager().inner().applicationPackages());
return applicationPackage;
}
public void addApplicationPackage(ApplicationPackageImpl applicationPackage) {
this.addChildResource(applicationPackage);
}
public Map<String, ApplicationPackage> asMap() {
Map<String, ApplicationPackage> result = new HashMap<>();
for (Map.Entry<String, ApplicationPackageImpl> entry : this.collection().entrySet()) {
ApplicationPackageImpl applicationPackage = entry.getValue();
result.put(entry.getKey(), applicationPackage);
}
return Collections.unmodifiableMap(result);
}
}