Added federation organization type chart. Improved federation charts.
This commit is contained in:
parent
fbf6e50b49
commit
edc60840d0
6 changed files with 253 additions and 5 deletions
|
@ -43,9 +43,6 @@ public class Organization extends PathPropertyList
|
|||
{
|
||||
private static final long serialVersionUID = -2709210934548224213L;
|
||||
|
||||
/**
|
||||
* The Enum Status.
|
||||
*/
|
||||
public enum Status
|
||||
{
|
||||
ACTIVE,
|
||||
|
@ -53,6 +50,17 @@ public class Organization extends PathPropertyList
|
|||
AWAY
|
||||
}
|
||||
|
||||
public enum Type
|
||||
{
|
||||
ASSOCIATION,
|
||||
COMPANY,
|
||||
COOPERATIVE,
|
||||
INDIVIDUAL,
|
||||
INFORMAL,
|
||||
MICROCOMPANY,
|
||||
OTHER
|
||||
}
|
||||
|
||||
private Federation federation;
|
||||
private Services services;
|
||||
private File inputFile;
|
||||
|
@ -813,6 +821,49 @@ public class Organization extends PathPropertyList
|
|||
return result;
|
||||
}
|
||||
|
||||
public Type getType()
|
||||
{
|
||||
Type result;
|
||||
|
||||
String value = get("organization.type");
|
||||
|
||||
if (StringUtils.isBlank(value))
|
||||
{
|
||||
result = null;
|
||||
}
|
||||
else if (StringUtils.equalsIgnoreCase(value, "ASSOCIATION"))
|
||||
{
|
||||
result = Type.ASSOCIATION;
|
||||
}
|
||||
else if (StringUtils.equalsIgnoreCase(value, "COOPERATIVE"))
|
||||
{
|
||||
result = Type.COOPERATIVE;
|
||||
}
|
||||
else if (StringUtils.equalsIgnoreCase(value, "MICROCOMPANY"))
|
||||
{
|
||||
result = Type.MICROCOMPANY;
|
||||
}
|
||||
else if (StringUtils.equalsIgnoreCase(value, "COMPANY"))
|
||||
{
|
||||
result = Type.COMPANY;
|
||||
}
|
||||
else if (StringUtils.equalsIgnoreCase(value, "INDIVIDUAL"))
|
||||
{
|
||||
result = Type.INDIVIDUAL;
|
||||
}
|
||||
else if (StringUtils.equalsIgnoreCase(value, "OTHER"))
|
||||
{
|
||||
result = Type.OTHER;
|
||||
}
|
||||
else
|
||||
{
|
||||
result = null;
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the URL all.
|
||||
*
|
||||
|
|
|
@ -60,6 +60,7 @@ import fr.devinsy.statoolinfos.stats.categories.CategoryStat;
|
|||
import fr.devinsy.statoolinfos.stats.categories.CategoryStats;
|
||||
import fr.devinsy.statoolinfos.stats.country.CountryStats;
|
||||
import fr.devinsy.statoolinfos.stats.organizations.OrganizationTurnoutStats;
|
||||
import fr.devinsy.statoolinfos.stats.organizations.OrganizationTypeStats;
|
||||
import fr.devinsy.statoolinfos.stats.services.HostProviderTypeStats;
|
||||
import fr.devinsy.statoolinfos.stats.services.HostServerTypeStats;
|
||||
import fr.devinsy.statoolinfos.stats.services.RegistrationStats;
|
||||
|
@ -1074,6 +1075,40 @@ public class ChartHtmlizer
|
|||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Htmlize organization type chart.
|
||||
*
|
||||
* @param services
|
||||
* the services
|
||||
* @return the string
|
||||
* @throws StatoolInfosException
|
||||
* the statool infos exception
|
||||
*/
|
||||
public static String htmlizeOrganizationTypeChart(final Organizations organizations) throws StatoolInfosException
|
||||
{
|
||||
String result;
|
||||
|
||||
OrganizationTypeStats stats = StatAgent.statOrganizationType(organizations);
|
||||
|
||||
// {ASSOCIATION, INFORMAL, COOPERATIVE, MICROCOMPANY, COMPANY,
|
||||
// INDIVIDUAL, OTHER}, obligatoire).
|
||||
PieChart pie = new PieChart("Types d'organisations");
|
||||
pie.add("Association", stats.getAssociationCount(), ChartColor.GREEN);
|
||||
pie.add("Informel", stats.getInformalCount(), ChartColor.YELLOW);
|
||||
pie.add("Coopérative", stats.getCooperativeCount(), ChartColor.ORANGE);
|
||||
pie.add("Micro-entreprise", stats.getMicrocompanyCount(), ChartColor.RED);
|
||||
pie.add("Entreprise", stats.getCompanyCount(), ChartColor.VIOLET);
|
||||
pie.add("Individu", stats.getIndividualCount(), ChartColor.PURPLE);
|
||||
pie.add("Autre", stats.getOtherCount(), ChartColor.GREY);
|
||||
pie.add("Inconnu", stats.getUnknownCount(), ChartColor.BLUE);
|
||||
pie.setLegendPosition(Position.RIGHT);
|
||||
|
||||
result = DoughnutChartView.build(pie);
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Htmlize registration chart.
|
||||
*
|
||||
|
|
|
@ -96,11 +96,14 @@ public class FederationStatsPage
|
|||
}
|
||||
|
||||
data.setContent("serviceDateStatusChart", ChartHtmlizer.htmlizeServiceDateStatusChart(services));
|
||||
data.setContent("organisationTypeChart", ChartHtmlizer.htmlizeOrganizationTypeChart(organizations));
|
||||
|
||||
data.setContent("softwareDistributionPieChart", ChartHtmlizer.htmlizeSoftwareDistributionPieChart(services));
|
||||
data.setContent("categoryDistributionPieChart", ChartHtmlizer.htmlizeCatergoryDistributionPieChart(services));
|
||||
|
||||
data.setContent("softwareDistributionChart", ChartHtmlizer.htmlizeSoftwareDistributionChart());
|
||||
data.setContent("softwareDistributionPieChart", ChartHtmlizer.htmlizeSoftwareDistributionPieChart(services));
|
||||
|
||||
data.setContent("categoryDistributionChart", ChartHtmlizer.htmlizeCategoryDistributionChart());
|
||||
data.setContent("categoryDistributionPieChart", ChartHtmlizer.htmlizeCatergoryDistributionPieChart(services));
|
||||
|
||||
//
|
||||
String content = PresenterUtils.dynamize("/fr/devinsy/statoolinfos/htmlize/federationStats.xhtml", data).toString();
|
||||
|
|
|
@ -50,6 +50,7 @@
|
|||
</div>
|
||||
<div id="serviceDateStatusChart" class="chartborder" style="width: 250px; height: 200px; display: inline-block;"/>
|
||||
</div>
|
||||
<div id="organisationTypeChart" class="chartborder" style="width: 500px; height: 250px; display: inline-block;"/>
|
||||
<div>
|
||||
<div id="categoryDistributionPieChart" class="chartborder" style="width: 500px; height: 300px; display: inline-block;"/>
|
||||
<div id="softwareDistributionPieChart" class="chartborder" style="width: 500px; height: 300px; display: inline-block;"/>
|
||||
|
|
|
@ -44,6 +44,7 @@ import fr.devinsy.statoolinfos.stats.categories.CategoryStat;
|
|||
import fr.devinsy.statoolinfos.stats.categories.CategoryStats;
|
||||
import fr.devinsy.statoolinfos.stats.country.CountryStats;
|
||||
import fr.devinsy.statoolinfos.stats.organizations.OrganizationTurnoutStats;
|
||||
import fr.devinsy.statoolinfos.stats.organizations.OrganizationTypeStats;
|
||||
import fr.devinsy.statoolinfos.stats.properties.PropertyStats;
|
||||
import fr.devinsy.statoolinfos.stats.propertyfiles.PropertiesFileStats;
|
||||
import fr.devinsy.statoolinfos.stats.services.HostProviderTypeStats;
|
||||
|
@ -328,6 +329,29 @@ public class StatAgent
|
|||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Stat organization type.
|
||||
*
|
||||
* @param organization
|
||||
* the organization
|
||||
* @return the organization type stats
|
||||
*/
|
||||
public static OrganizationTypeStats statOrganizationType(final Organizations organizations)
|
||||
{
|
||||
OrganizationTypeStats result;
|
||||
|
||||
result = new OrganizationTypeStats();
|
||||
|
||||
//
|
||||
for (Organization organization : organizations)
|
||||
{
|
||||
result.inc(organization.getType());
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Stat registration types.
|
||||
*
|
||||
|
|
|
@ -0,0 +1,134 @@
|
|||
/*
|
||||
* Copyright (C) 2022 Christian Pierre MOMON <christian@momon.org>
|
||||
*
|
||||
* 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package fr.devinsy.statoolinfos.stats.organizations;
|
||||
|
||||
import fr.devinsy.statoolinfos.core.Organization;
|
||||
|
||||
/**
|
||||
* The Class OrganizationTypeStats.
|
||||
*/
|
||||
public class OrganizationTypeStats
|
||||
{
|
||||
private long associationCount;
|
||||
private long informalCount;
|
||||
private long cooperativeCount;
|
||||
private long microcompanyCount;
|
||||
private long companyCount;
|
||||
private long individualCount;
|
||||
private long otherCount;
|
||||
private long unknownCount;
|
||||
|
||||
/**
|
||||
* Instantiates a new organization type stats.
|
||||
*/
|
||||
public OrganizationTypeStats()
|
||||
{
|
||||
this.associationCount = 0;
|
||||
this.informalCount = 0;
|
||||
this.cooperativeCount = 0;
|
||||
this.microcompanyCount = 0;
|
||||
this.companyCount = 0;
|
||||
this.individualCount = 0;
|
||||
this.otherCount = 0;
|
||||
this.unknownCount = 0;
|
||||
}
|
||||
|
||||
public long getAssociationCount()
|
||||
{
|
||||
return this.associationCount;
|
||||
}
|
||||
|
||||
public long getCompanyCount()
|
||||
{
|
||||
return this.companyCount;
|
||||
}
|
||||
|
||||
public long getCooperativeCount()
|
||||
{
|
||||
return this.cooperativeCount;
|
||||
}
|
||||
|
||||
public long getIndividualCount()
|
||||
{
|
||||
return this.individualCount;
|
||||
}
|
||||
|
||||
public long getInformalCount()
|
||||
{
|
||||
return this.informalCount;
|
||||
}
|
||||
|
||||
public long getMicrocompanyCount()
|
||||
{
|
||||
return this.microcompanyCount;
|
||||
}
|
||||
|
||||
public long getOtherCount()
|
||||
{
|
||||
return this.otherCount;
|
||||
}
|
||||
|
||||
public long getUnknownCount()
|
||||
{
|
||||
return this.unknownCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Inc.
|
||||
*
|
||||
* @param type
|
||||
* the type
|
||||
*/
|
||||
public void inc(final Organization.Type type)
|
||||
{
|
||||
if (type == null)
|
||||
{
|
||||
this.unknownCount += 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case ASSOCIATION:
|
||||
this.associationCount += 1;
|
||||
break;
|
||||
case COMPANY:
|
||||
this.companyCount += 1;
|
||||
break;
|
||||
case COOPERATIVE:
|
||||
this.cooperativeCount += 1;
|
||||
break;
|
||||
case INDIVIDUAL:
|
||||
this.individualCount += 1;
|
||||
break;
|
||||
case INFORMAL:
|
||||
this.informalCount += 1;
|
||||
break;
|
||||
case MICROCOMPANY:
|
||||
this.microcompanyCount += 1;
|
||||
break;
|
||||
case OTHER:
|
||||
this.otherCount += 1;
|
||||
break;
|
||||
default:
|
||||
this.unknownCount += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue