Compare commits

...

10 commits

12 changed files with 397 additions and 32 deletions

View file

@ -137,6 +137,7 @@ public class PropertyChecker
this.organizationRules.add("organization.geolocation.latitude", DECIMAL_DEGREE, PropertyMode.OPTIONAL);
this.organizationRules.add("organization.geolocation.longitude", DECIMAL_DEGREE, PropertyMode.OPTIONAL);
this.organizationRules.add("organization.geolocation.address", STRING, PropertyMode.OPTIONAL);
this.organizationRules.add("organization.type", "^(ASSOCIATION|INFORMAL|COOPERATIVE|MICROCOMPANY|COMPANY|INDIVIDUAL|OTHER)$", PropertyMode.MANDATORY);
this.organizationRules.add(SUBS, URL, PropertyMode.OPTIONAL);
this.organizationRules.add(METRICS_NAME, STRING, PropertyMode.OPTIONAL);
@ -186,6 +187,7 @@ public class PropertyChecker
this.serviceRules.add("host.server.distribution", STRING, PropertyMode.MANDATORY);
this.serviceRules.add("host.server.type", "^(NANO|PHYSICAL|VIRTUAL|SHARED|CLOUD)$", PropertyMode.MANDATORY);
this.serviceRules.add("host.provider.type", "^(HOME|HOSTEDBAY|HOSTEDSERVER|OUTSOURCED)$", PropertyMode.MANDATORY);
this.serviceRules.add("host.provider.hypervisor", STRING, PropertyMode.OPTIONAL);
this.serviceRules.add("host.country.name", STRING, PropertyMode.WISHED);
this.serviceRules.add("host.country.code", COUNTRY_CODE, PropertyMode.MANDATORY);

View file

@ -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.
*

View file

@ -275,6 +275,21 @@ public class Service extends PathPropertyList
return result;
}
/**
* Gets the host provider hypervisor.
*
* @return the host provider hypervisor
*/
public String getHostProviderHypervisor()
{
String result;
result = get("host.provider.hypervisor");
//
return result;
}
/**
* Gets the host provider type.
*

View file

@ -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;
@ -219,7 +220,70 @@ public class ChartHtmlizer
pie.setLegendPosition(Position.RIGHT);
int index = 0;
while ((index < list.size() && (index < 9)))
while ((index < list.size() && (index < 8)))
{
ChartColor color = colors.get(index);
StringCounter counter = list.get(index);
pie.add(counter.getString(), counter.getCounter(), color);
index += 1;
}
int others = 0;
while (index < list.size())
{
StringCounter counter = list.get(index);
others += counter.getCounter();
index += 1;
}
pie.add("Autres", others, ChartColor.GREY);
pie.add("Inconnus", unknowns, ChartColor.BLUE);
result = DoughnutChartView.build(pie);
//
return result;
}
/**
* Htmlize host provider hypervisor chart.
*
* @param services
* the services
* @return the string
* @throws StatoolInfosException
* the statool infos exception
*/
public static String htmlizeHostProviderHypervisorChart(final Services services) throws StatoolInfosException
{
String result;
ChartColors colors = ChartColor.valueList();
colors.remove(ChartColor.BLUE);
StringCounters counters = new StringCounters();
long unknowns = 0;
for (Service service : services)
{
String hypervisor = service.getHostProviderHypervisor();
if (StringUtils.isBlank(hypervisor))
{
unknowns += 1;
}
else
{
counters.inc(StringUtils.capitalize(hypervisor.toLowerCase()));
}
}
StringCounterList list = counters.toList().sortByCounter().reverse();
PieChart pie = new PieChart("Distributions des hyperviseurs");
pie.setLegendPosition(Position.RIGHT);
int index = 0;
while ((index < list.size() && (index < 7)))
{
ChartColor color = colors.get(index);
StringCounter counter = list.get(index);
@ -913,19 +977,19 @@ public class ChartHtmlizer
BarChart chart = new BarChart("Entrées/Sorties");
// chart.setStacked(true);
chart.addDataset("Sorties");
PathPropertyList values = federation.getByYearPrefix("metrics.members.out").sortByPath();
for (PathProperty property : values)
{
chart.add(0, Double.parseDouble(property.getValue()), ChartColor.RED);
}
chart.addDataset("Entrées");
PathPropertyList values = federation.getByYearPrefix("metrics.members.in").sortByPath();
values = federation.getByYearPrefix("metrics.members.in").sortByPath();
for (PathProperty property : values)
{
chart.getLabels().add(property.getLeaf());
chart.add(0, Double.parseDouble(property.getValue()), ChartColor.GREEN);
}
chart.addDataset("Sorties");
values = federation.getByYearPrefix("metrics.members.out").sortByPath();
for (PathProperty property : values)
{
chart.add(1, Double.parseDouble(property.getValue()), ChartColor.RED);
chart.add(1, Double.parseDouble(property.getValue()), ChartColor.GREEN);
}
result = BarChartView.build(chart);
@ -1011,6 +1075,62 @@ public class ChartHtmlizer
return result;
}
/**
* Htmlize organization type chart.
*
* @param organization
* the organization
* @return the string
* @throws StatoolInfosException
* the statool infos exception
*/
public static String htmlizeOrganizationTypeChart(final Organization organization) throws StatoolInfosException
{
String result;
Organizations organizations = new Organizations();
organizations.add(organization);
result = htmlizeOrganizationTypeChart(organizations);
//
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.
*
@ -1452,7 +1572,7 @@ public class ChartHtmlizer
}
}
chart.add(String.valueOf(current), count, ChartColor.VIOLET);
chart.add(String.valueOf(current), count, ChartColor.YELLOW);
current += 1;
}
@ -1520,13 +1640,13 @@ public class ChartHtmlizer
ServiceInstallTypeStats stats = StatAgent.statServiceInstallType(services);
PieChart pie = new PieChart("Types d'installation du service");
pie.add("Distribution", stats.getDistributionCount(), ChartColor.PURPLE);
pie.add("Distribution", stats.getDistributionCount(), ChartColor.GREEN0);
pie.add("Fournisseur", stats.getProviderCount(), ChartColor.GREEN);
pie.add("Paquet", stats.getPackageCount(), ChartColor.YELLOW);
pie.add("Outillage", stats.getToolingCount(), ChartColor.ORANGE);
pie.add("Dépôt cloné", stats.getClonerepoCount(), ChartColor.RED);
pie.add("Archive", stats.getArchiveCount(), ChartColor.VIOLET);
pie.add("Sources", stats.getSourcesCount(), ChartColor.GREY);
pie.add("Sources", stats.getSourcesCount(), ChartColor.PURPLE);
pie.add("Containeur", stats.getContainerCount(), ChartColor.TURQUOISE);
pie.add("Inconnu", stats.getUnknownCount(), ChartColor.BLUE);
pie.setLegendPosition(Position.RIGHT);

View file

@ -74,12 +74,15 @@ public class FederationStatsPage
data.setContent("organizationCountChart", ChartHtmlizer.htmlizeOrganizationCountChart(federation));
data.setContent("organizationInOutChart", ChartHtmlizer.htmlizeOrganizationInOutChart(federation));
data.setContent("hostServerDistributionChart", ChartHtmlizer.htmlizeHostServerDistributionChart(services));
data.setContent("serviceCountYearChart", ChartHtmlizer.htmlizeServiceCountYearChart(federation));
data.setContent("hostServerTypeChart", ChartHtmlizer.htmlizeHostServerTypeChart(services));
data.setContent("hostProviderTypeChart", ChartHtmlizer.htmlizeHostProviderTypeChart(services));
data.setContent("serviceCountryChart", ChartHtmlizer.htmlizeServiceCountryChart(services));
data.setContent("hostNameChart", ChartHtmlizer.htmlizeHostNamePieChart(services));
data.setContent("hostProviderHypervisorChart", ChartHtmlizer.htmlizeHostProviderHypervisorChart(services));
data.setContent("hostServerDistributionChart", ChartHtmlizer.htmlizeHostServerDistributionChart(services));
data.setContent("serviceInstallTypeChart", ChartHtmlizer.htmlizeServiceInstallTypeChart(services));
{
@ -92,13 +95,15 @@ public class FederationStatsPage
data.setContent("registrationClientTypeChart", ChartHtmlizer.htmlizeRegistrationClientPieChart(stats));
}
data.setContent("serviceCountYearChart", ChartHtmlizer.htmlizeServiceCountYearChart(federation));
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();

View file

@ -67,12 +67,15 @@ public class OrganizationStatsPage
data.setContent("turnoutChart", ChartHtmlizer.htmlizeOrganizationTurnoutChart(organization));
Services services = organization.getActiveServices();
data.setContent("hostServerDistributionChart", ChartHtmlizer.htmlizeHostServerDistributionChart(services));
data.setContent("serviceCountYearChart", ChartHtmlizer.htmlizeServiceCountYearChart(organization));
data.setContent("hostServerTypeChart", ChartHtmlizer.htmlizeHostServerTypeChart(services));
data.setContent("hostProviderTypeChart", ChartHtmlizer.htmlizeHostProviderTypeChart(services));
data.setContent("serviceCountryChart", ChartHtmlizer.htmlizeServiceCountryChart(services));
data.setContent("hostNameChart", ChartHtmlizer.htmlizeHostNamePieChart(services));
data.setContent("hostProviderHypervisorChart", ChartHtmlizer.htmlizeHostProviderHypervisorChart(services));
data.setContent("hostServerDistributionChart", ChartHtmlizer.htmlizeHostServerDistributionChart(services));
data.setContent("serviceInstallTypeChart", ChartHtmlizer.htmlizeServiceInstallTypeChart(services));
{
@ -86,7 +89,7 @@ public class OrganizationStatsPage
}
data.setContent("serviceDateStatusChart", ChartHtmlizer.htmlizeServiceDateStatusChart(services));
data.setContent("serviceCountYearChart", ChartHtmlizer.htmlizeServiceCountYearChart(organization));
data.setContent("organisationTypeChart", ChartHtmlizer.htmlizeOrganizationTypeChart(organization));
//
String content = PresenterUtils.dynamize("/fr/devinsy/statoolinfos/htmlize/organizationStatsPage.xhtml", data).toString();

View file

@ -61,12 +61,14 @@ public class ServiceStatsView
data.setContent("turnoutChart", ChartHtmlizer.htmlizeOrganizationTurnoutChart(service));
Services services = Services.of(service);
data.setContent("hostServerDistributionChart", ChartHtmlizer.htmlizeHostServerDistributionChart(services));
data.setContent("hostServerTypeChart", ChartHtmlizer.htmlizeHostServerTypeChart(services));
data.setContent("hostProviderTypeChart", ChartHtmlizer.htmlizeHostProviderTypeChart(services));
data.setContent("serviceCountryChart", ChartHtmlizer.htmlizeServiceCountryChart(services));
data.setContent("hostNameChart", ChartHtmlizer.htmlizeHostNamePieChart(services));
data.setContent("hostProviderHypervisorChart", ChartHtmlizer.htmlizeHostProviderHypervisorChart(services));
data.setContent("hostServerDistributionChart", ChartHtmlizer.htmlizeHostServerDistributionChart(services));
data.setContent("serviceInstallTypeChart", ChartHtmlizer.htmlizeServiceInstallTypeChart(services));
{

View file

@ -23,14 +23,18 @@
<div id="organizationInOutChart" class="chartborder" style="width: 250px; height: 200px; display: inline-block;"/>
</div>
<div>
<div id="hostServerDistributionChart" class="chartborder" style="width: 250px; height: 200px; display: inline-block;"/>
<div id="serviceCountYearChart" class="chartborder" style="width: 250px; height: 200px; display: inline-block;"/>
<div id="hostServerTypeChart" class="chartborder" style="width: 250px; height: 200px; display: inline-block;"/>
<div id="hostProviderTypeChart" class="chartborder" style="width: 250px; height: 200px; display: inline-block;"/>
<div id="serviceCountryChart" class="chartborder" style="width: 250px; height: 200px; display: inline-block;"/>
</div>
<div>
<div id="hostNameChart" class="chartborder" style="width: 500px; height: 250px; display: inline-block;"/>
<div id="serviceInstallTypeChart" class="chartborder" style="width: 500px; height: 250px; display: inline-block; vertical-align: top;"/>
<div id="hostProviderHypervisorChart" class="chartborder" style="width: 500px; height: 250px; display: inline-block;"/>
</div>
<div>
<div id="hostServerDistributionChart" class="chartborder" style="width: 500px; height: 250px; display: inline-block;"/>
<div id="serviceInstallTypeChart" class="chartborder" style="width: 500px; height: 250px; display: inline-block;"/>
</div>
<div class="row">
<div id="registrationTypeChart" class="column chartborder" style="width: 250px; height: 200px; display: inline-block;"/>
@ -44,11 +48,9 @@
<div id="registrationClientTypeChart" class="chartborder" style="width: 122px; height: 97px; display: inline-block;"/>
</div>
</div>
</div>
<div>
<div id="serviceDateStatusChart" class="chartborder" style="width: 250px; height: 200px; display: inline-block;"/>
<div id="serviceCountYearChart" 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;"/>

View file

@ -19,13 +19,17 @@
<div id="turnoutChart" class="chartborder" style="width: 250px; height: 200px; display: inline-block;"/>
</div>
<div>
<div id="hostServerDistributionChart" class="chartborder" style="width: 250px; height: 200px; display: inline-block;"/>
<div id="serviceCountYearChart" class="chartborder" style="width: 250px; height: 200px; display: inline-block;"/>
<div id="hostServerTypeChart" class="chartborder" style="width: 250px; height: 200px; display: inline-block;"/>
<div id="hostProviderTypeChart" class="chartborder" style="width: 250px; height: 200px; display: inline-block;"/>
<div id="serviceCountryChart" class="chartborder" style="width: 250px; height: 200px; display: inline-block;"/>
</div>
<div>
<div id="hostNameChart" class="chartborder" style="width: 500px; height: 250px; display: inline-block;"/>
<div id="hostProviderHypervisorChart" class="chartborder" style="width: 500px; height: 250px; display: inline-block;"/>
</div>
<div>
<div id="hostServerDistributionChart" class="chartborder" style="width: 500px; height: 250px; display: inline-block;"/>
<div id="serviceInstallTypeChart" class="chartborder" style="width: 500px; height: 250px; display: inline-block; vertical-align: top;"/>
</div>
<div class="row">
@ -43,7 +47,7 @@
</div>
<div>
<div id="serviceDateStatusChart" class="chartborder" style="width: 250px; height: 200px; display: inline-block;"/>
<div id="serviceCountYearChart" class="chartborder" style="width: 250px; height: 200px; display: inline-block;"/>
<div id="organisationTypeChart" class="chartborder" style="width: 250px; height: 200px; display: inline-block;"/>
</div>
</div>
</div>

View file

@ -17,13 +17,17 @@
<div id="turnoutChart" class="chartborder" style="width: 250px; height: 200px; display: inline-block;"/>
</div>
<div>
<div id="hostServerDistributionChart" class="chartborder" style="width: 250px; height: 200px; display: inline-block;"/>
<div id="serviceCountYearChart" class="chartborder" style="width: 250px; height: 200px; display: inline-block;"/>
<div id="hostServerTypeChart" class="chartborder" style="width: 250px; height: 200px; display: inline-block;"/>
<div id="hostProviderTypeChart" class="chartborder" style="width: 250px; height: 200px; display: inline-block;"/>
<div id="serviceCountryChart" class="chartborder" style="width: 250px; height: 200px; display: inline-block;"/>
</div>
<div>
<div id="hostNameChart" class="chartborder" style="width: 500px; height: 250px; display: inline-block;"/>
<div id="hostProviderHypervisorChart" class="chartborder" style="width: 500px; height: 250px; display: inline-block;"/>
</div>
<div>
<div id="hostServerDistributionChart" class="chartborder" style="width: 500px; height: 250px; display: inline-block;"/>
<div id="serviceInstallTypeChart" class="chartborder" style="width: 500px; height: 250px; display: inline-block; vertical-align: top;"/>
</div>
<div class="row">
@ -41,7 +45,6 @@
</div>
<div>
<div id="serviceDateStatusChart" class="chartborder" style="width: 250px; height: 200px; display: inline-block;"/>
<div id="serviceCountYearChart" class="chartborder" style="width: 250px; height: 200px; display: inline-block;"/>
</div>
</div>
</body>

View file

@ -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.
*

View file

@ -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;
}
}
}
}