package org.axway.grapes.server.webapp.views; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.yammer.dropwizard.views.View; import org.axway.grapes.commons.datamodel.Module; import org.axway.grapes.server.webapp.views.serialization.ModuleSerializer; import java.util.HashMap; import java.util.Map; import java.util.Set; @JsonSerialize(using=ModuleSerializer.class) public class ModuleView extends View{ private Module module; private Map<Module, Integer> submodules; private String organization; public ModuleView() { super("ModuleView.ftl"); } public void setModule(final Module module) { this.module = module; submodules = new HashMap<Module, Integer>(); for (Module submodule : module.getSubmodules()) { addSubmodules(submodule, 1); } } private void addSubmodules(final Module submodule, final Integer depth) { submodules.put(submodule, depth); for(Module subsubmodule: submodule.getSubmodules()){ addSubmodules(subsubmodule, depth + 1); } } public Module getModule() { return module; } public Set<Module> getSubmodules() { return submodules.keySet(); } public Integer getDepth(final Module submodule) { return submodules.get(submodule); } public void setOrganization(final String organization) { this.organization = organization; } public String getOrganization() { return organization; } }