Improved status management in organizations and services display.

This commit is contained in:
Christian P. MOMON 2022-01-22 03:31:16 +01:00
parent 251d4ef761
commit 6bf8037cc5
13 changed files with 196 additions and 54 deletions

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2020 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2020-2022 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -81,6 +81,60 @@ public class Federation extends PathPropertyList
}
}
/**
* Gets the organizations active.
*
* @return the organizations active
*/
public Organizations getActiveOrganizations()
{
Organizations result;
result = this.organizations.filterActiveFor(getTechnicalName());
//
return result;
}
/**
* Gets the active services.
*
* @return the active services
*/
public Services getActiveServices()
{
Services result;
result = new Services();
for (Organization organization : getActiveOrganizations())
{
result.addAll(organization.getActiveServices());
}
//
return result;
}
/**
* Gets the active services.
*
* @return the active services
*/
public long getActiveServiceCount()
{
long result;
result = 0;
for (Organization organization : getActiveOrganizations())
{
result += organization.getActiveServiceCount();
}
//
return result;
}
/**
* Gets the contact email.
*
@ -386,21 +440,6 @@ public class Federation extends PathPropertyList
return this.organizations;
}
/**
* Gets the organizations active.
*
* @return the organizations active
*/
public Organizations getActiveOrganizations()
{
Organizations result;
result = this.organizations.filterActiveFor(getTechnicalName());
//
return result;
}
/**
* Gets the service count.
*
@ -411,7 +450,7 @@ public class Federation extends PathPropertyList
int result;
result = 0;
for (Organization organization : this.organizations)
for (Organization organization : getActiveOrganizations())
{
result += organization.getServiceCount();
}
@ -420,6 +459,26 @@ public class Federation extends PathPropertyList
return result;
}
/**
* Gets the all services.
*
* @return the all services
*/
public Services getServices()
{
Services result;
result = new Services();
for (Organization organization : getActiveOrganizations())
{
result.addAll(organization.getServices());
}
//
return result;
}
/**
* Gets the all services.
*

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2020-2021 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2020-2022 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -86,6 +86,51 @@ public class Organization extends PathPropertyList
this.crawlJournal = new CrawlJournal();
}
/**
* Gets the active services.
*
* @return the active services
*/
public Services getActiveServices()
{
Services result;
result = new Services();
for (Service service : this.services)
{
if (service.isActive())
{
result.add(service);
}
}
//
return result;
}
/**
* Gets the service active count.
*
* @return the service active count
*/
public int getActiveServiceCount()
{
int result;
result = 0;
for (Service service : this.services)
{
if (service.isActive())
{
result += 1;
}
}
//
return result;
}
/**
* Gets the age.
*
@ -665,21 +710,6 @@ public class Organization extends PathPropertyList
return result;
}
/**
* Gets the service active count.
*
* @return the service active count
*/
public int getServiceActiveCount()
{
int result;
result = this.services.getBy(Service.Status.OK).size();
//
return result;
}
/**
* Gets the service count.
*

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2020 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2020-2022 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -110,18 +110,18 @@ public class Organizations extends ArrayList<Organization>
}
/**
* Gets the service active count.
* Gets the active service count.
*
* @return the service active count
* @return the active service count
*/
public int getServiceActiveCount()
public int getActiveServiceCount()
{
int result;
result = 0;
for (Organization organization : this)
{
result += organization.getServiceCount();
result += organization.getActiveServiceCount();
}
//

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2020-2021 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2020-2022 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -860,6 +860,59 @@ public class Service extends PathPropertyList
return result;
}
/**
* Checks if is active.
*
* @return true, if is active
*/
public boolean isActive()
{
boolean result;
if (((getStatus() == Service.Status.OK) || (getStatus() == Status.WARNING) || (getStatus() == Status.ERROR)) && (!isAway()))
{
result = true;
}
else
{
result = false;
}
//
return result;
}
/**
* Checks if is away.
*
* @return true, if is away
*/
public boolean isAway()
{
boolean result;
if (getEndDate() == null)
{
result = false;
}
else
{
LocalDate endDate = getDate("service.enddate");
if ((endDate == null) || (endDate.isAfter(LocalDate.now())))
{
result = false;
}
else
{
result = true;
}
}
//
return result;
}
/**
* Checks if is registration client.
*

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2020 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2020-2022 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -60,7 +60,7 @@ public class CategoryPage
logger.info("Htmlize category pages.");
for (Category category : categories)
{
Services services = federation.getServicesAll().getBy(category);
Services services = federation.getServices().getBy(category);
String page = CategoryPage.htmlize(category, services);
FileUtils.write(new File(htmlizeDirectory, "category-" + category.getTechnicalName() + ".xhtml"), page, StandardCharsets.UTF_8);
}

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2020-2021 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2020-2022 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*

View file

@ -78,7 +78,7 @@ public class FederationServicesPage
TagDataManager data = new TagDataManager();
data.setContent("federationHeaderView", FederationHeaderView.htmlize(federation));
data.setContent("serviceListView", ServiceListView.htmlize(federation.getServicesAll()));
data.setContent("serviceListView", ServiceListView.htmlize(federation.getServices()));
String content = PresenterUtils.dynamize("/fr/devinsy/statoolinfos/htmlize/federationServices.xhtml", data).toString();

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2021-2022 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -81,7 +81,7 @@ public class FederationUptimePage
TagDataManager data = new TagDataManager();
data.setContent("headerView", FederationHeaderView.htmlize(federation));
data.setContent("uptimeView", UptimeView.htmlize(federation.getServicesAll(), journal));
data.setContent("uptimeView", UptimeView.htmlize(federation.getActiveServices(), journal));
String content = PresenterUtils.dynamize("/fr/devinsy/statoolinfos/htmlize/uptimePage.xhtml", data).toString();

View file

@ -61,7 +61,7 @@ public class OrganizationListView
TagDataManager data = new TagDataManager();
data.setContent("organizationCount", organizations.size());
data.setContent("serviceCount", organizations.getServiceCount());
data.setContent("serviceCount", organizations.getActiveServiceCount());
String monthLabel = LocalDate.now().minusMonths(1).format(DateTimeFormatter.ofPattern("MMMM yyyy")).replace(" ", "&#160;");
data.setContent("monthLabel", monthLabel);
@ -81,7 +81,7 @@ public class OrganizationListView
data.setEscapedContent("organizationListLine", index, "organizationListLineUrlLink", organization.getWebsiteURL().toString());
data.setEscapedAttribute("organizationListLine", index, "organizationListLineUrlLink", "href", organization.getWebsiteURL().toString());
}
data.setContent("organizationListLine", index, "organizationListLineServiceCount", StatoolInfosUtils.defaultIfZero(organization.getServiceActiveCount(), "😿"));
data.setContent("organizationListLine", index, "organizationListLineServiceCount", StatoolInfosUtils.defaultIfZero(organization.getActiveServiceCount(), "😿"));
data.setContent("organizationListLine", index, "organizationListLineUserCount", StatoolInfosUtils.defaultIfZero(organization.getPreviousMonthUserCount(), "😢"));
data.setContent("organizationListLine", index, "organizationListLineVisitCount", StatoolInfosUtils.defaultIfZero(organization.getPreviousMonthVisitCount(), "😞"));

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2020-2021 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2020-2022 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -95,8 +95,8 @@ public class ServiceListView
data.setEscapedContent("serviceListLine", index, "serviceListLineSoftwareLink", service.getSoftwareName());
data.setAttribute("serviceListLine", index, "serviceListLineSoftwareLink", "href", "software-" + service.getSoftwareTechnicalName() + ".xhtml");
data.setContent("serviceListLine", index, "serviceListLineUserCount", StatoolInfosUtils.defaultIfZero(service.getPreviousMonthUserCount(), "😞"));
data.setContent("serviceListLine", index, "serviceListLineVisitCount", StatoolInfosUtils.defaultIfZero(service.getPreviousMonthVisitCount(), "😢"));
data.setContent("serviceListLine", index, "serviceListLineUserCount", StatoolInfosUtils.defaultIfZero(service.getPreviousMonthUserCount(), "😢"));
data.setContent("serviceListLine", index, "serviceListLineVisitCount", StatoolInfosUtils.defaultIfZero(service.getPreviousMonthVisitCount(), "😞"));
data.setEscapedContent("serviceListLine", index, "serviceListLineDate", service.getCrawledDate().format(DateTimeFormatter.ofPattern("dd/MM/YYYY")));
data.setEscapedAttribute("serviceListLine", index, "serviceListLineDate", "title", service.getCrawledDate().format(DateTimeFormatter.ofPattern("HH:mm:ss")));

View file

@ -53,7 +53,7 @@ public class ServicesPage
File htmlizeDirectory = HtmlizerContext.instance().getHtmlizeDirectory();
logger.info("Htmlize services page.");
String page = ServicesPage.htmlize(federation.getServicesAll());
String page = ServicesPage.htmlize(federation.getServices());
FileUtils.write(new File(htmlizeDirectory, "services.xhtml"), page, StandardCharsets.UTF_8);
}

View file

@ -58,7 +58,7 @@ public class SoftwarePage
Softwares catalog = federation.getSoftwares();
for (Software software : catalog.values())
{
Services services = federation.getServicesAll().getBy(software);
Services services = federation.getServices().getBy(software);
String page = SoftwarePage.htmlize(software, services);
FileUtils.write(new File(htmlizeDirectory, "software-" + software.getTechnicalName() + ".xhtml"), page, StandardCharsets.UTF_8);
}

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2021-2022 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -156,7 +156,7 @@ public class UptimeView
}
int index = 0;
for (Service service : services.getBy(Service.Status.OK).sortByName())
for (Service service : services.sortByName())
{
//
data.setAttribute("line", index, "lineLogo", "src", service.getLogoFileName());