/* * Copyright (C) 2020 Christian Pierre MOMON * * This file is part of StatoolInfos, simple service statistics tool. * * StatoolInfos is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * StatoolInfos is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with StatoolInfos. If not, see . */ package fr.devinsy.statoolinfos.core; import java.io.File; import java.net.MalformedURLException; import java.net.URL; import org.apache.commons.lang3.StringUtils; import fr.devinsy.statoolinfos.properties.PathProperties; import fr.devinsy.statoolinfos.properties.PathPropertyList; /** * The Class PathProperty. */ public class Federation extends PathPropertyList { private static final long serialVersionUID = -8970835291634661580L; private Organizations organizations; private File inputFile; /** * Instantiates a new federation. */ public Federation() { super(); this.organizations = new Organizations(); } /** * Instantiates a new federation. * * @param properties * the properties */ public Federation(final PathProperties properties) { super(properties); if ((properties == null) || (StringUtils.isBlank(properties.get("federation.name")))) { throw new IllegalArgumentException("Not a federation."); } else { this.organizations = new Organizations(); } } /** * Gets the all services. * * @return the all services */ public Services getAllServices() { Services result; result = new Services(); for (Organization organization : this.organizations) { result.addAll(organization.getServices()); } // return result; } /** * Gets the description. * * @return the description */ public String getDescription() { String result; result = get("federation.description"); // return result; } public File getInputFile() { return this.inputFile; } /** * Gets the logo URL. * * @return the logo URL * @throws MalformedURLException */ public URL getLogoURL() throws MalformedURLException { URL result; String path = get("federation.logo"); if ((StringUtils.isBlank(path)) || (!StringUtils.startsWith(path, "http"))) { result = null; } else { result = new URL(path); } // return result; } /** * Gets the name. * * @return the name */ public String getName() { String result; result = get("federation.name"); // return result; } /** * Gets the organiation count. * * @return the organiation count */ public int getOrganiationCount() { int result; result = this.organizations.size(); // return result; } public Organizations getOrganizations() { return this.organizations; } /** * Gets the service count. * * @return the service count */ public int getServiceCount() { int result; result = 0; for (Organization organization : this.organizations) { result += organization.getServiceCount(); } // return result; } /** * Gets the software catalog. * * @return the software catalog */ public Softwares getSoftwares() { Softwares result; result = new Softwares(); for (Service service : getAllServices()) { if (StringUtils.isNotBlank(service.getSoftwareName())) { Software software = result.get(service.getSoftwareName()); if (software == null) { software = new Software(service.getSoftwareName(), service.get("software.description")); result.put(software); } } } // return result; } /** * Gets the technical name. * * @return the technical name */ public String getTechnicalName() { String result; result = StatoolInfosUtils.toTechnicalName(getName()); // return result; } public void setInputFile(final File inputFile) { this.inputFile = inputFile; } }