Compare commits

...

7 commits

50 changed files with 578 additions and 234 deletions

View file

@ -16,5 +16,10 @@
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
<classpathentry combineaccessrules="false" kind="src" path="/StatoolInfos"/>
<classpathentry combineaccessrules="false" kind="src" path="/kiss4web"/>
<classpathentry kind="src" path=".apt_generated">
<attributes>
<attribute name="optional" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="build/classes"/>
</classpath>

1
.gitignore vendored
View file

@ -1,2 +1,3 @@
/build/
*~
/.apt_generated/

View file

@ -0,0 +1,5 @@
eclipse.preferences.version=1
org.eclipse.jdt.apt.aptEnabled=true
org.eclipse.jdt.apt.genSrcDir=.apt_generated
org.eclipse.jdt.apt.genTestSrcDir=.apt_generated_tests
org.eclipse.jdt.apt.reconcileEnabled=true

View file

@ -21,6 +21,7 @@ org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.processAnnotations=enabled
org.eclipse.jdt.core.compiler.release=enabled
org.eclipse.jdt.core.compiler.source=17
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
@ -30,7 +31,7 @@ org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_annotations_on_enum_constant=49
org.eclipse.jdt.core.formatter.alignment_for_annotations_on_enum_constant=0
org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field=49
org.eclipse.jdt.core.formatter.alignment_for_annotations_on_local_variable=49
org.eclipse.jdt.core.formatter.alignment_for_annotations_on_method=49
@ -356,7 +357,7 @@ org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constan
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.join_lines_in_comments=true
org.eclipse.jdt.core.formatter.join_wrapped_lines=false
org.eclipse.jdt.core.formatter.join_wrapped_lines=true
org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never
@ -379,7 +380,7 @@ org.eclipse.jdt.core.formatter.keep_switch_body_block_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.keep_switch_case_with_arrow_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.lineSplit=200
org.eclipse.jdt.core.formatter.lineSplit=150
org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block=0

View file

@ -25,9 +25,9 @@ cleanup.comparison_statement=false
cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
cleanup.convert_to_enhanced_for_loop_if_loop_var_used=false
cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=true
cleanup.correct_indentation=false
cleanup.do_while_rather_than_while=true
cleanup.double_negation=false
cleanup.else_if=false
@ -82,7 +82,7 @@ cleanup.redundant_comparator=false
cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=false
cleanup.remove_redundant_semicolons=true
cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
@ -139,18 +139,18 @@ cleanup.use_var=false
cleanup.useless_continue=false
cleanup.useless_return=false
cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_StaoolInfos
cleanup_profile=_StatoolInfosWeb
cleanup_settings_version=2
eclipse.preferences.version=1
editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
formatter_profile=_StatoolInfos
formatter_profile=_StatoolInfosWeb
formatter_settings_version=23
jautodoc.cleanup.add_header=false
jautodoc.cleanup.javadoc=false
jautodoc.cleanup.replace_header=false
org.eclipse.jdt.ui.exception.name=exception
org.eclipse.jdt.ui.gettersetter.use.is=true
org.eclipse.jdt.ui.keywordthis=false
org.eclipse.jdt.ui.keywordthis=true
org.eclipse.jdt.ui.overrideannotation=true
org.eclipse.jdt.ui.text.custom_code_templates=
sp_cleanup.add_all=false
@ -213,7 +213,7 @@ sp_cleanup.no_string_creation=false
sp_cleanup.no_super=false
sp_cleanup.number_suffix=false
sp_cleanup.objects_equals=false
sp_cleanup.on_save_use_additional_actions=false
sp_cleanup.on_save_use_additional_actions=true
sp_cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
sp_cleanup.operand_factorization=false
sp_cleanup.organize_imports=true

View file

@ -1,23 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="StatoolInfosWeb">
<wb-resource deploy-path="/" source-path="/webapp" tag="defaultRootSource"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/test"/>
<dependent-module archiveName="SikevaDB.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/StatoolInfos/StatoolInfos">
<dependency-type>uses</dependency-type>
</dependent-module>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/.apt_generated"/>
<dependent-module archiveName="kiss4web.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/kiss4web/kiss4web">
<dependency-type>uses</dependency-type>
</dependent-module>
<dependent-module archiveName="StatooInfos.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/StatoolInfos/StatoolInfos">
<dependency-type>uses</dependency-type>
</dependent-module>
<property name="context-root" value="StatoolInfosWeb"/>
<property name="java-output-path" value="/StatoolInfosWeb/build/classes"/>
</wb-module>
</project-modules>

View file

@ -55,6 +55,7 @@ Read CONCEPT.md and ONTOLOGY.md files.
## INSTALL
### Requirements
Install Java :
```
@ -63,9 +64,87 @@ apt-get install openjdk-17-jre-headless
Download the last release: https://forge.devinsy.fr/statool/statoolinfosweb/releases
### Apache Web Server
TODO
Add a JK section:
```
# Configure du mod-jk.
JkUnMount /.well-known/statoolinfos/* ajp13_worker
JkUnMount /.well-known/acme-challenge/* ajp13_worker
JkMount /* ajp13_worker
```
## Usage
Enable the JK module:
```
a2enmod jk
```
### Tomcat Server
Create a dedicated directory:
```
mkdir /srv/infos.mydomain.eu/
```
Create a log configuration file:
```
cd /srv/infos.mydomain.eu/
wget https://forge.devinsy.fr/statool/statoolinfosweb/src/branch/main/webapp/WEB-INF/log4j2.properties
```
Edit the `/srv/infos.mydomain.eu/log4j2.properties`:
```
appender.logfile.fileName = /var/log/tomcat10/statoolinfosweb.log
appender.logfile.filePattern = /var/log/tomcat10/statoolinfosweb-%i.log.gz
```
Create a directory dedicated to webapps:
```
mkdir /var/log/tomcat10# cd /var/lib/tomcat10/webapps/statoolinfoweb
cd /srv/infos.mydomain.eu/
ln -s /var/log/tomcat10# cd /var/lib/tomcat10/webapps/statoolinfoweb webapps
```
Put the StatoolInfosWeb WAR file in `/srv/infos.mydomain.eu/` and create a link into the webapps directory:
```
cd /srv/infos.mydomain.eu/webapps/
ln -s /srv/infos.mydomain.eu/SIW.ar ROOT.war
```
Create a context file:
```
cd /etc/tomcat10/Catalina
mkdir infos.mydomain.eu
cd infos.mydomain.eu
wget https://forge.devinsy.fr/statool/statoolinfosweb/src/branch/main/webapp/META-INF/context.xml -o ROOT.xml
```
Edit it:
```
<Environment name="kiss4web.environment.name" value="PROD" type="java.lang.String" override="true"/>
<Environment name="kiss4web.website.url" value="https://infos.mydomain.eu/" type="java.lang.String" override="true"/>
<Environment name="kiss4web.log4j2.path" value="/srv/infos.mydomain.eu/log4j2.properties" type="java.lang.String" override="true"/>
<Environment name="statoosinfosweb.configuration.file" value="/srv/statoolinfos/conf/mydomain.eu.conf" type="java.lang.String" override="true"/>
```
Add a dedicated `host` section in `/etc/tomcat10/server.xml`:
```
<Host name="infos.libre-service.eu" appBase="webapps/infoslibreserviceeu"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="infos.libre-service.eu-access_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
```
### StatoolInfos
The `cache` directory must be readable by Tomcat.
TODO

View file

@ -0,0 +1,112 @@
/*
* Copyright (C) 2021-2024 Christian Pierre MOMON christian.momon@devinsy.fr>>
*
* This file is part of StatoolInfosWeb, webapp to value service statistics.
*
* StatoolInfosWeb 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.
*
* StatoolInfosWeb 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 StatoolInfosWeb. If not, see <http://www.gnu.org/licenses/>.
*/
package fr.devinsy.statoolinfosweb;
import jakarta.servlet.ServletContextEvent;
import jakarta.servlet.ServletContextListener;
import jakarta.servlet.annotation.WebListener;
/**
* The Class Checker.
*/
@WebListener
public class CrawlCacheChecker implements ServletContextListener
{
private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(CrawlCacheChecker.class);
private static final int CHECK_DELAY = 60 * 1000;
private Thread checker;
@Override
public void contextInitialized(ServletContextEvent event)
{
logger.info("Starting checker thread…");
this.checker = new Thread()
{
@Override
public void run()
{
// while (!Thread.currentThread().isInterrupted())
// {
// try
// {
// Thread.sleep(CHECK_DELAY);
// StatoolInfosWeb.instance().check();
// }
// catch (InterruptedException exception)
// {
// Thread.currentThread().interrupt();
// logger.error("Check sleep interrupted so ending checker: {}",
// exception.getMessage());
// }
// }
//
// boolean ended = false;
// while (!ended)
// {
// try
// {
// Thread.sleep(CHECK_DELAY);
// StatoolInfosWeb.instance().check();
// if (Thread.currentThread().isInterrupted())
// {
// logger.error("Interrupted status detected so ending
// checker.");
// ended = true;
// }
// }
// catch (InterruptedException exception)
// {
// logger.error("Check sleep interrupted so ending checker: {}",
// exception.getMessage());
// ended = true;
// }
// }
try
{
boolean ended = false;
while (!ended)
{
Thread.sleep(CHECK_DELAY);
StatoolInfosWeb.instance().check();
if (Thread.currentThread().isInterrupted())
{
logger.error("Interrupted status detected so ending checker.");
ended = true;
}
}
}
catch (InterruptedException exception)
{
logger.error("Check sleep interrupted so ending checker: {}", exception.getMessage());
}
}
};
this.checker.start();
}
@Override
public void contextDestroyed(ServletContextEvent event)
{
logger.info("Stopping checker thread…");
this.checker.interrupt();
}
}

View file

@ -28,12 +28,14 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.exception.ExceptionUtils;
import fr.devinsy.kiss4web.EnvironmentInformation;
import fr.devinsy.kiss4web.HtmlCache;
import fr.devinsy.kiss4web.Kiss4web;
import fr.devinsy.kiss4web.Kiss4web.Mode;
import fr.devinsy.kiss4web.dispatcher.KissDispatcher;
import fr.devinsy.kiss4web.dispatcher.hooks.BlankHook;
import fr.devinsy.kiss4web.dispatcher.hooks.FolderHook;
import fr.devinsy.kiss4web.dispatcher.hooks.Hook;
import fr.devinsy.kiss4web.dispatcher.hooks.HookRegister;
import fr.devinsy.kiss4web.dispatcher.hooks.RewriteHook;
import fr.devinsy.kiss4web.dispatcher.hooks.RootHook;
import fr.devinsy.kiss4web.dispatcher.hooks.WebContentHook;
import fr.devinsy.kiss4web.dispatcher.hooks.WebInfHook;
@ -46,6 +48,7 @@ import fr.devinsy.statoolinfos.core.Organization;
import fr.devinsy.statoolinfos.core.Service;
import fr.devinsy.statoolinfos.core.Software;
import fr.devinsy.statoolinfos.core.StatoolInfosContext;
import fr.devinsy.statoolinfos.core.StatoolInfosException;
import fr.devinsy.statoolinfos.crawl.CrawlCache;
import fr.devinsy.statoolinfos.uptime.UptimeJournal;
import fr.devinsy.xidyn.XidynException;
@ -64,8 +67,10 @@ public class StatoolInfosWeb
private static final StatoolInfosWeb instance = new StatoolInfosWeb();
}
private File configurationFile;
private BuildInformation buildInformation;
private StatoolInfosContext context;
private HtmlCache htmlCache;
/**
* Instantiates a new manager.
@ -78,6 +83,9 @@ public class StatoolInfosWeb
//
try
{
//
this.htmlCache = new HtmlCache();
//
currentLog = "StatoolInfosWeb";
logger.info("StatoolInfosWeb initializing...");
@ -91,7 +99,7 @@ public class StatoolInfosWeb
logInit(currentLog, "PASSED");
//
File configurationFile = new EnvironmentInformation().getStatoolInfosConfigurationFile();
configurationFile = new EnvironmentInformation().getStatoolInfosConfigurationFile();
if (configurationFile == null)
{
throw new StatoolInfosWebException("StatoolInfos configuration file is null.");
@ -120,62 +128,29 @@ public class StatoolInfosWeb
hooks.register(new BlankHook());
hooks.register(new RootHook());
hooks.register(new RewriteHook("^/federation/logo.(jpg|png|gif|svg)$", "website.federation.LogoDo"));
hooks.register(new RewriteHook("^/federation/[^./]+\\.properties$", "website.federation.PropertiesDo"));
hooks.register(new RewriteHook("^/federation/categories/[^/]+\\.xhtml", "website.federation.categories.CategoryPage"));
hooks.register(new RewriteHook("^/federation/exports/[^/]+\\.(csv|json|ods)", "website.federation.exports.ExportDo"));
hooks.register(new RewriteHook("^/federation/metrics/summary.xhtml$", "website.federation.metrics.MetricSummaryPage"));
hooks.register(new RewriteHook("^/federation/metrics/generic.xhtml$", "website.federation.metrics.MetricGenericPage"));
hooks.register(new RewriteHook("^/federation/metrics/specific.xhtml$", "website.federation.metrics.MetricSpecificPage"));
hooks.register(new RewriteHook("^/federation/metrics/web.xhtml$", "website.federation.metrics.MetricWebPage"));
hooks.register(KissDispatcher.instance().getAnnotationHooks());
hooks.register(new RewriteHook("^/federation/organizations/[^/]+/$", "website.federation.organizations.organization.IndexPage"));
hooks.register(new RewriteHook("^/federation/organizations/[^/]+/logo.(jpg|png|gif|svg)$", "website.federation.organizations.organization.LogoDo"));
hooks.register(new RewriteHook("^/federation/organizations/[^/]+/[^./]+\\.properties$", "website.federation.organizations.organization.PropertiesDo"));
hooks.register(new RewriteHook("^/federation/organizations/[^/]+/crawl.xhtml$", "website.federation.organizations.organization.CrawlPage"));
hooks.register(new RewriteHook("^/federation/organizations/[^/]+/propertyAlert.xhtml$", "website.federation.organizations.organization.PropertyAlertPage"));
hooks.register(new RewriteHook("^/federation/organizations/[^/]+/propertyCheck.xhtml$", "website.federation.organizations.organization.PropertyCheckPage"));
hooks.register(new RewriteHook("^/federation/organizations/[^/]+/services.xhtml$", "website.federation.organizations.organization.ServicesPage"));
hooks.register(new RewriteHook("^/federation/organizations/[^/]+/stats.xhtml$", "website.federation.organizations.organization.StatsPage"));
hooks.register(new RewriteHook("^/federation/organizations/[^/]+/uptime.xhtml$", "website.federation.organizations.organization.UptimePage"));
hooks.register(new RewriteHook("^/federation/organizations/[^/]+/softwares/", "website.federation.organizations.organization.softwares.IndexPage"));
hooks.register(new RewriteHook("^/federation/organizations/[^/]+/softwares/[^/]+.xhtml", "website.federation.organizations.organization.softwares.SoftwarePage"));
hooks.register(new RewriteHook("^/federation/organizations/[^/]+/metrics/", "website.federation.organizations.organization.metrics.IndexPage"));
hooks.register(new RewriteHook("^/federation/organizations/[^/]+/metrics/summary.xhtml$", "website.federation.organizations.organization.metrics.MetricSummaryPage"));
hooks.register(new RewriteHook("^/federation/organizations/[^/]+/metrics/generic.xhtml$", "website.federation.organizations.organization.metrics.MetricGenericPage"));
hooks.register(new RewriteHook("^/federation/organizations/[^/]+/metrics/specific.xhtml$", "website.federation.organizations.organization.metrics.MetricSpecificPage"));
hooks.register(new RewriteHook("^/federation/organizations/[^/]+/metrics/web.xhtml$", "website.federation.organizations.organization.metrics.MetricWebPage"));
hooks.register(new RewriteHook("^/federation/organizations/[^/]+/services/[^/]+/$", "website.federation.organizations.organization.services.service.IndexPage"));
hooks.register(new RewriteHook("^/federation/organizations/[^/]+/services/[^/]+/logo.(jpg|png|gif|svg)$", "website.federation.organizations.organization.services.service.LogoDo"));
hooks.register(new RewriteHook("^/federation/organizations/[^/]+/services/[^/]+/[^./]+\\.properties$", "website.federation.organizations.organization.services.service.PropertiesDo"));
hooks.register(new RewriteHook("^/federation/organizations/[^/]+/services/[^/]+/crawl.xhtml$", "website.federation.organizations.organization.services.service.CrawlPage"));
hooks.register(new RewriteHook("^/federation/organizations/[^/]+/services/[^/]+/propertyAlert.xhtml$", "website.federation.organizations.organization.services.service.PropertyAlertPage"));
hooks.register(new RewriteHook("^/federation/organizations/[^/]+/services/[^/]+/propertyCheck.xhtml$", "website.federation.organizations.organization.services.service.PropertyCheckPage"));
hooks.register(new RewriteHook("^/federation/organizations/[^/]+/services/[^/]+/services.xhtml$", "website.federation.organizations.organization.services.service.ServicesPage"));
hooks.register(new RewriteHook("^/federation/organizations/[^/]+/services/[^/]+/stats.xhtml$", "website.federation.organizations.organization.services.service.StatsPage"));
hooks.register(new RewriteHook("^/federation/organizations/[^/]+/services/[^/]+/uptime.xhtml$", "website.federation.organizations.organization.services.service.UptimePage"));
hooks.register(new RewriteHook("^/federation/organizations/[^/]+/services/[^/]+/metrics/", "website.federation.organizations.organization.services.service.metrics.IndexPage"));
hooks.register(new RewriteHook("^/federation/organizations/[^/]+/services/[^/]+/metrics/summary.xhtml$",
"website.federation.organizations.organization.services.service.metrics.MetricSummaryPage"));
hooks.register(new RewriteHook("^/federation/organizations/[^/]+/services/[^/]+/metrics/generic.xhtml$",
"website.federation.organizations.organization.services.service.metrics.MetricGenericPage"));
hooks.register(new RewriteHook("^/federation/organizations/[^/]+/services/[^/]+/metrics/specific.xhtml$",
"website.federation.organizations.organization.services.service.metrics.MetricSpecificPage"));
hooks.register(new RewriteHook("^/federation/organizations/[^/]+/services/[^/]+/metrics/web.xhtml$",
"website.federation.organizations.organization.services.service.metrics.MetricWebPage"));
hooks.register(new RewriteHook("^/federation/organizations/[^/]+/services/[^/]+/softwares/", "website.federation.organizations.organization.services.service.softwares.IndexPage"));
hooks.register(
new RewriteHook("^/federation/organizations/[^/]+/services/[^/]+/softwares/", "website.federation.organizations.organization.services.service.softwares.IndexPage"));
hooks.register(
new RewriteHook("^/federation/organizations/[^/]+/services/[^/]+/softwares/index.xhtml", "website.federation.organizations.organization.services.service.softwares.IndexPage"));
hooks.register(
new RewriteHook("^/federation/organizations/[^/]+/services/[^/]+/softwares/[^/]+.xhtml", "website.federation.organizations.organization.services.service.softwares.SoftwarePage"));
hooks.register(new RewriteHook("^/federation/softwares/[^/]+\\.xhtml", "website.federation.softwares.SoftwarePage"));
// hooks.register(new
// RewriteHook("^/federation/organizations/[^/]+/softwares/",
// "website.federation.organizations.organization.softwares.IndexPage"));
// hooks.register(new
// RewriteHook("^/federation/organizations/[^/]+/softwares/[^/]+.xhtml",
// "website.federation.organizations.organization.softwares.SoftwarePage"));
// hooks.register(new
// RewriteHook("^/federation/organizations/[^/]+/services/[^/]+/softwares/",
// "website.federation.organizations.organization.services.service.softwares.IndexPage"));
// hooks.register(
// new
// RewriteHook("^/federation/organizations/[^/]+/services/[^/]+/softwares/",
// "website.federation.organizations.organization.services.service.softwares.IndexPage"));
// hooks.register(
// new
// RewriteHook("^/federation/organizations/[^/]+/services/[^/]+/softwares/index.xhtml",
// "website.federation.organizations.organization.services.service.softwares.IndexPage"));
// hooks.register(
// new
// RewriteHook("^/federation/organizations/[^/]+/services/[^/]+/softwares/[^/]+.xhtml",
// "website.federation.organizations.organization.services.service.softwares.SoftwarePage"));
// hooks.register(new LongURLHook());
hooks.register(new FolderHook());
@ -185,8 +160,23 @@ public class StatoolInfosWeb
hooks.register(new WebInfHook());
Kiss4web.instance().setModeCustom(hooks);
// System.out.println("AAAANNOTATION=" +
// website.federation.organizations.organization.IndexPage.class.isAnnotationPresent(fr.devinsy.kiss4web.dispatcher.annotation.KissServlet.class));
// website.federation.organizations.organization.IndexPage page =
// new website.federation.organizations.organization.IndexPage();
// System.out.println("REGEXXXXXXX=" +
// page.getClass().getAnnotation(KissServlet.class).value());
System.out.println("Annotation hooks:");
for (Hook hook : KissDispatcher.instance().getAnnotationHooks())
{
System.out.println(hook.toString());
}
}
catch (Exception exception)
catch (
Exception exception)
{
logInit(currentLog, "FAILED");
logger.warn("StatoolInfosWeb INIT FAILED: " + exception.getMessage());
@ -196,18 +186,55 @@ public class StatoolInfosWeb
}
/**
* Log init.
*
* @param currentLogItem
* the current log item
* @param status
* the status
* Check.
*/
private static void logInit(final String currentLogItem, final String status)
public void check()
{
logger.info(String.format("%s%s%s", currentLogItem, StringUtils.repeat('.', 40 - StringUtils.length(currentLogItem)), status));
try
{
if (this.context.isExpired())
{
logger.info("Context expiration: KO, reloading context…");
StatoolInfosContext newContext = new StatoolInfosContext(this.configurationFile);
this.context = newContext;
clear();
}
else
{
logger.info("Context expiration: OK.");
}
}
catch (StatoolInfosException | IOException exception)
{
logger.error("Context update failed: {}", exception.getMessage());
exception.printStackTrace();
}
}
/**
* Clear caches.
*/
public void clear()
{
KissDispatcher.instance().clear();
this.htmlCache.clear();
}
/**
* Gets the html cache.
*
* @return the html cache
*/
public HtmlCache getHtmlCache()
{
return this.htmlCache;
}
/**
* Gets the builds the information.
*
* @return the builds the information
*/
public BuildInformation getBuildInformation()
{
return this.buildInformation;
@ -243,74 +270,6 @@ public class StatoolInfosWeb
return result;
}
/**
* Gets the configuration.
*
* @return the configuration
*/
public Configuration getConfiguration()
{
Configuration result;
result = this.context.getConfiguration();
//
return result;
}
/**
* Gets the federation.
*
* @return the federation
*/
public Federation getFederation()
{
Federation result;
result = this.context.getFederation();
//
return result;
}
/**
* Gets the organization from pathinfo.
*
* @param pathinfo
* the pathinfo
* @return the organization from pathinfo
*/
public Organization getOrganizationFromPathinfo(String pathinfo)
{
Organization result;
String technicalName = StatoolInfosWebUtils.unrewriteOrganizationTechnicalName(pathinfo);
result = this.context.getFederation().getOrganizations().getByTechnicalName(technicalName);
//
return result;
}
/**
* Gets the software from pathinfo.
*
* @param pathinfo
* the pathinfo
* @return the software from pathinfo
*/
public Software getSoftwareFromPathinfo(String pathinfo)
{
Software result;
String technicalName = StatoolInfosWebUtils.unrewriteSoftwareTechnicalName(pathinfo);
result = this.context.getFederation().getSoftwares().get(technicalName);
//
return result;
}
/**
* Gets the category from pathinfo.
*
@ -331,66 +290,20 @@ public class StatoolInfosWeb
}
/**
* Gets the service by technical name.
* Gets the configuration.
*
* @param organizationTechnicalName
* the organization technical name
* @param serviceTechnicalName
* the service technical name
* @return the service by technical name
* @return the configuration
*/
public Service getServiceByTechnicalName(String organizationTechnicalName, String serviceTechnicalName)
public Configuration getConfiguration()
{
Service result;
Configuration result;
Organization organization = this.context.getFederation().getOrganizations().getByTechnicalName(organizationTechnicalName);
result = organization.getServices().getByTechnicalName(serviceTechnicalName);
result = this.context.getConfiguration();
//
return result;
}
/**
* Gets the service from pathinfo.
*
* @param pathinfo
* the pathinfo
* @return the service from pathinfo
*/
public Service getServiceFromPathinfo(String pathinfo)
{
Service result;
String[] data = StatoolInfosWebUtils.unrewriteServicePathinfo(pathinfo);
String organizationTechnicalName = data[0];
String serviceTechnicalName = data[1];
result = getServiceByTechnicalName(organizationTechnicalName, serviceTechnicalName);
//
return result;
}
/**
* Gets the uptime journal.
*
* @return the uptime journal
*/
public UptimeJournal getUptimeJournal()
{
return this.context.getUptimeJournal();
}
/**
* Instance.
*
* @return the manager
*/
public static StatoolInfosWeb instance()
{
return SingletonHolder.instance;
}
/**
* Gets the edito.
*
@ -440,4 +353,131 @@ public class StatoolInfosWeb
//
return result;
}
/**
* Gets the federation.
*
* @return the federation
*/
public Federation getFederation()
{
Federation result;
result = this.context.getFederation();
//
return result;
}
/**
* Gets the organization from pathinfo.
*
* @param pathinfo
* the pathinfo
* @return the organization from pathinfo
*/
public Organization getOrganizationFromPathinfo(String pathinfo)
{
Organization result;
String technicalName = StatoolInfosWebUtils.unrewriteOrganizationTechnicalName(pathinfo);
result = this.context.getFederation().getOrganizations().getByTechnicalName(technicalName);
//
return result;
}
/**
* Gets the service by technical name.
*
* @param organizationTechnicalName
* the organization technical name
* @param serviceTechnicalName
* the service technical name
* @return the service by technical name
*/
public Service getServiceByTechnicalName(String organizationTechnicalName, String serviceTechnicalName)
{
Service result;
Organization organization = this.context.getFederation().getOrganizations().getByTechnicalName(organizationTechnicalName);
result = organization.getServices().getByTechnicalName(serviceTechnicalName);
//
return result;
}
/**
* Gets the service from pathinfo.
*
* @param pathinfo
* the pathinfo
* @return the service from pathinfo
*/
public Service getServiceFromPathinfo(String pathinfo)
{
Service result;
String[] data = StatoolInfosWebUtils.unrewriteServicePathinfo(pathinfo);
String organizationTechnicalName = data[0];
String serviceTechnicalName = data[1];
result = getServiceByTechnicalName(organizationTechnicalName, serviceTechnicalName);
//
return result;
}
/**
* Gets the software from pathinfo.
*
* @param pathinfo
* the pathinfo
* @return the software from pathinfo
*/
public Software getSoftwareFromPathinfo(String pathinfo)
{
Software result;
String technicalName = StatoolInfosWebUtils.unrewriteSoftwareTechnicalName(pathinfo);
result = this.context.getFederation().getSoftwares().get(technicalName);
//
return result;
}
/**
* Gets the uptime journal.
*
* @return the uptime journal
*/
public UptimeJournal getUptimeJournal()
{
return this.context.getUptimeJournal();
}
/**
* Instance.
*
* @return the manager
*/
public static StatoolInfosWeb instance()
{
return SingletonHolder.instance;
}
/**
* Log init.
*
* @param currentLogItem
* the current log item
* @param status
* the status
*/
private static void logInit(final String currentLogItem, final String status)
{
logger.info(String.format("%s%s%s", currentLogItem, StringUtils.repeat('.', 40 - StringUtils.length(currentLogItem)), status));
}
}

View file

@ -28,6 +28,7 @@ import org.slf4j.LoggerFactory;
import fr.devinsy.catgenerator.core.CatGenerator;
import fr.devinsy.kiss4web.dispatcher.KissDispatcherUtils;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Federation;
import fr.devinsy.statoolinfos.crawl.CrawlCache;
import fr.devinsy.statoolinfos.util.URLUtils;
@ -40,6 +41,7 @@ import jakarta.servlet.http.HttpServletResponse;
/**
* The Class LogoDo.
*/
@KissServlet("^/federation/logo.(jpg|png|gif|svg)$")
public class LogoDo extends HttpServlet
{
private static final long serialVersionUID = -8274687319890495722L;

View file

@ -25,6 +25,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.kiss4web.dispatcher.KissDispatcherUtils;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Federation;
import fr.devinsy.statoolinfosweb.StatoolInfosWeb;
import jakarta.servlet.ServletException;
@ -35,6 +36,7 @@ import jakarta.servlet.http.HttpServletResponse;
/**
* The Class PropertiesDo.
*/
@KissServlet("^/federation/[^./]+\\.properties$")
public class PropertiesDo extends HttpServlet
{
private static final long serialVersionUID = 2011776119103724440L;

View file

@ -23,6 +23,7 @@ import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Category;
import fr.devinsy.statoolinfos.core.Federation;
import fr.devinsy.statoolinfos.core.Services;
@ -47,6 +48,7 @@ import website.views.ServiceListView;
/**
* The Class CategoryPage.
*/
@KissServlet("^/federation/categories/[^/]+\\.xhtml")
public class CategoryPage extends HttpServlet
{
private static final long serialVersionUID = -8941975927886103680L;

View file

@ -25,6 +25,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.kiss4web.dispatcher.KissDispatcherUtils;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Categories;
import fr.devinsy.statoolinfos.core.Federation;
import fr.devinsy.statoolinfos.io.CSVFile;
@ -43,6 +44,7 @@ import website.charter.ErrorView;
/**
* The Class ExportDo.
*/
@KissServlet("^/federation/exports/[^/]+\\.(csv|json|ods)")
public class ExportDo extends HttpServlet
{
private static final long serialVersionUID = -5777871435901453590L;

View file

@ -23,6 +23,7 @@ import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Federation;
import fr.devinsy.statoolinfos.uptime.UptimeJournal;
import fr.devinsy.statoolinfosweb.StatoolInfosWeb;
@ -48,6 +49,7 @@ import website.views.MetricMenuView.ViewMenu;
/**
* The Class MetricGenericPage.
*/
@KissServlet("^/federation/metrics/generic.xhtml$")
public class MetricGenericPage extends HttpServlet
{
private static final long serialVersionUID = -336093970361316946L;

View file

@ -23,6 +23,7 @@ import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Federation;
import fr.devinsy.statoolinfos.core.StatoolInfosException;
import fr.devinsy.statoolinfos.uptime.UptimeJournal;
@ -48,6 +49,7 @@ import website.views.MetricMenuView.ViewMenu;
/**
* The Class FederationMetricSpecificPage.
*/
@KissServlet("^/federation/metrics/specific.xhtml$")
public class MetricSpecificPage extends HttpServlet
{
private static final long serialVersionUID = -5683860151390848979L;

View file

@ -23,6 +23,7 @@ import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Federation;
import fr.devinsy.statoolinfos.core.StatoolInfosException;
import fr.devinsy.statoolinfos.uptime.UptimeJournal;
@ -49,6 +50,7 @@ import website.views.MetricMenuView.ViewMenu;
/**
* The Class FederationMetricSummaryPage.
*/
@KissServlet("^/federation/metrics/summary.xhtml$")
public class MetricSummaryPage extends HttpServlet
{
private static final long serialVersionUID = 7230118796571304083L;

View file

@ -23,6 +23,7 @@ import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Federation;
import fr.devinsy.statoolinfos.uptime.UptimeJournal;
import fr.devinsy.statoolinfosweb.StatoolInfosWeb;
@ -48,6 +49,7 @@ import website.views.MetricMenuView.ViewMenu;
/**
* The Class FederationMetricWebPage.
*/
@KissServlet("^/federation/metrics/web.xhtml$")
public class MetricWebPage extends HttpServlet
{
private static final long serialVersionUID = 8775832114835327758L;

View file

@ -52,24 +52,29 @@ public class IndexPage extends HttpServlet
{
try
{
// Get parameters.
// ===============
String html = StatoolInfosWeb.instance().getHtmlCache().get(IndexPage.class.getCanonicalName());
if (html == null)
{
// Get parameters.
// ===============
// Use parameters.
// ===============
Federation federation = StatoolInfosWeb.instance().getFederation();
UptimeJournal uptimes = StatoolInfosWeb.instance().getUptimeJournal();
// Use parameters.
// ===============
Federation federation = StatoolInfosWeb.instance().getFederation();
UptimeJournal uptimes = StatoolInfosWeb.instance().getUptimeJournal();
// Send response.
// ==============
String headerView = FederationHeaderView.htmlize(federation, uptimes);
String contentView = OrganizationListView.htmlize(federation.getMemberOrganizations(), federation.getAwayOrganizations());
// Send response.
// ==============
String headerView = FederationHeaderView.htmlize(federation, uptimes);
String contentView = OrganizationListView.htmlize(federation.getMemberOrganizations(), federation.getAwayOrganizations());
BreadcrumbTrail trail = new BreadcrumbTrail();
trail.add(federation.getName(), "/federation/organizations/");
trail.add("Organisations", "/federation/organizations/");
BreadcrumbTrail trail = new BreadcrumbTrail();
trail.add(federation.getName(), "/federation/organizations/");
trail.add("Organisations", "/federation/organizations/");
String html = WebCharterView.build(headerView, contentView, trail);
html = WebCharterView.build(headerView, contentView, trail);
StatoolInfosWeb.instance().getHtmlCache().put(IndexPage.class.getCanonicalName(), html);
}
// Display page.
response.setContentType("application/xhtml+xml; charset=UTF-8");

View file

@ -23,6 +23,7 @@ import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Organization;
import fr.devinsy.statoolinfos.uptime.UptimeJournal;
import fr.devinsy.statoolinfosweb.StatoolInfosWeb;
@ -39,6 +40,7 @@ import website.views.CrawlView;
/**
* The Class CrawlJournalOrganizationPage.
*/
@KissServlet("^/federation/organizations/[^/]+/crawl.xhtml$")
public class CrawlPage extends HttpServlet
{
private static final long serialVersionUID = 7853379029845860784L;

View file

@ -21,6 +21,7 @@ package website.federation.organizations.organization;
import java.io.IOException;
import fr.devinsy.kiss4web.Redirector;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Organization;
import fr.devinsy.statoolinfosweb.StatoolInfosWeb;
import jakarta.servlet.ServletException;
@ -32,6 +33,7 @@ import website.charter.ErrorView;
/**
* The Class IndexPage.
*/
@KissServlet("^/federation/organizations/[^/]+/$")
public class IndexPage extends HttpServlet
{
private static final long serialVersionUID = 2821248331871306876L;

View file

@ -28,6 +28,7 @@ import org.slf4j.LoggerFactory;
import fr.devinsy.catgenerator.core.CatGenerator;
import fr.devinsy.kiss4web.dispatcher.KissDispatcherUtils;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Organization;
import fr.devinsy.statoolinfos.crawl.CrawlCache;
import fr.devinsy.statoolinfos.util.URLUtils;
@ -40,6 +41,7 @@ import jakarta.servlet.http.HttpServletResponse;
/**
* The Class LogoDo.
*/
@KissServlet("^/federation/organizations/[^/]+/logo.(jpg|png|gif|svg)$")
public class LogoDo extends HttpServlet
{
private static final long serialVersionUID = -1543822343614877475L;

View file

@ -25,6 +25,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.kiss4web.dispatcher.KissDispatcherUtils;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Organization;
import fr.devinsy.statoolinfosweb.StatoolInfosWeb;
import jakarta.servlet.ServletException;
@ -35,6 +36,7 @@ import jakarta.servlet.http.HttpServletResponse;
/**
* The Class PropertiesDo.
*/
@KissServlet("^/federation/organizations/[^/]+/[^./]+\\.properties$")
public class PropertiesDo extends HttpServlet
{
private static final long serialVersionUID = 2011776119103724440L;

View file

@ -23,6 +23,7 @@ import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Organization;
import fr.devinsy.statoolinfos.uptime.UptimeJournal;
import fr.devinsy.statoolinfosweb.StatoolInfosWeb;
@ -39,6 +40,7 @@ import website.views.PropertyAlertView;
/**
* The Class OrganizationPropertyFileAlertPage.
*/
@KissServlet("^/federation/organizations/[^/]+/propertyAlert.xhtml$")
public class PropertyAlertPage extends HttpServlet
{
private static final long serialVersionUID = -3993435430180839228L;

View file

@ -23,6 +23,7 @@ import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Organization;
import fr.devinsy.statoolinfos.uptime.UptimeJournal;
import fr.devinsy.statoolinfosweb.StatoolInfosWeb;
@ -39,6 +40,7 @@ import website.views.PropertyCheckView;
/**
* The Class OrganizationPropertyFileCheckView.
*/
@KissServlet("^/federation/organizations/[^/]+/propertyCheck.xhtml$")
public class PropertyCheckPage extends HttpServlet
{
private static final long serialVersionUID = 4502376450331214457L;

View file

@ -23,6 +23,7 @@ import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Organization;
import fr.devinsy.statoolinfos.uptime.UptimeJournal;
import fr.devinsy.statoolinfosweb.StatoolInfosWeb;
@ -39,6 +40,7 @@ import website.views.ServiceListView;
/**
* The Class ServicesPage.
*/
@KissServlet("^/federation/organizations/[^/]+/services.xhtml$")
public class ServicesPage extends HttpServlet
{
private static final long serialVersionUID = -2335594717538422436L;

View file

@ -23,6 +23,7 @@ import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Organization;
import fr.devinsy.statoolinfos.core.Services;
import fr.devinsy.statoolinfos.core.StatoolInfosException;
@ -47,6 +48,7 @@ import website.views.ChartViews;
/**
* The Class StatsPage.
*/
@KissServlet("^/federation/organizations/[^/]+/stats.xhtml$")
public class StatsPage extends HttpServlet
{
private static final long serialVersionUID = 2693926398275508310L;

View file

@ -23,6 +23,7 @@ import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Organization;
import fr.devinsy.statoolinfos.uptime.UptimeJournal;
import fr.devinsy.statoolinfosweb.StatoolInfosWeb;
@ -39,6 +40,7 @@ import website.views.UptimeView;
/**
* The Class OrganizationUptimePage.
*/
@KissServlet("^/federation/organizations/[^/]+/uptime.xhtml$")
public class UptimePage extends HttpServlet
{
private static final long serialVersionUID = 5127514597658312329L;

View file

@ -21,6 +21,7 @@ package website.federation.organizations.organization.metrics;
import java.io.IOException;
import fr.devinsy.kiss4web.Redirector;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Organization;
import fr.devinsy.statoolinfosweb.StatoolInfosWeb;
import jakarta.servlet.ServletException;
@ -32,6 +33,7 @@ import website.charter.ErrorView;
/**
* The Class IndexPage.
*/
@KissServlet("^/federation/organizations/[^/]+/metrics/")
public class IndexPage extends HttpServlet
{
private static final long serialVersionUID = 2794788000773558854L;

View file

@ -23,6 +23,7 @@ import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Organization;
import fr.devinsy.statoolinfos.core.StatoolInfosException;
import fr.devinsy.statoolinfos.uptime.UptimeJournal;
@ -49,6 +50,7 @@ import website.views.MetricMenuView.ViewMenu;
/**
* The Class MetricGenericPage.
*/
@KissServlet("^/federation/organizations/[^/]+/metrics/generic.xhtml$")
public class MetricGenericPage extends HttpServlet
{
private static final long serialVersionUID = -4940164173332474735L;

View file

@ -23,6 +23,7 @@ import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Organization;
import fr.devinsy.statoolinfos.uptime.UptimeJournal;
import fr.devinsy.statoolinfosweb.StatoolInfosWeb;
@ -47,6 +48,7 @@ import website.views.MetricMenuView.ViewMenu;
/**
* The Class MetricSpecificPage.
*/
@KissServlet("^/federation/organizations/[^/]+/metrics/specific.xhtml$")
public class MetricSpecificPage extends HttpServlet
{
private static final long serialVersionUID = -4487103076137276432L;

View file

@ -23,6 +23,7 @@ import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Organization;
import fr.devinsy.statoolinfos.core.StatoolInfosException;
import fr.devinsy.statoolinfos.uptime.UptimeJournal;
@ -49,6 +50,7 @@ import website.views.MetricMenuView.ViewMenu;
/**
* The Class MetricSummaryPage.
*/
@KissServlet("^/federation/organizations/[^/]+/metrics/summary.xhtml$")
public class MetricSummaryPage extends HttpServlet
{
private static final long serialVersionUID = -7774639830678053490L;

View file

@ -23,6 +23,7 @@ import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Organization;
import fr.devinsy.statoolinfos.uptime.UptimeJournal;
import fr.devinsy.statoolinfosweb.StatoolInfosWeb;
@ -48,6 +49,7 @@ import website.views.MetricMenuView.ViewMenu;
/**
* The Class MetricWebPage.
*/
@KissServlet("^/federation/organizations/[^/]+/metrics/web.xhtml$")
public class MetricWebPage extends HttpServlet
{
private static final long serialVersionUID = -8920766780112028933L;

View file

@ -21,6 +21,7 @@ package website.federation.organizations.organization.services;
import java.io.IOException;
import fr.devinsy.kiss4web.Redirector;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Organization;
import fr.devinsy.statoolinfos.core.Service;
import fr.devinsy.statoolinfosweb.StatoolInfosWeb;
@ -33,6 +34,7 @@ import website.charter.ErrorView;
/**
* The Class IndexPage.
*/
@KissServlet("^/federation/organizations/[^/]+/services/[^/]+/$")
public class IndexPage extends HttpServlet
{
private static final long serialVersionUID = -5951233202690068343L;

View file

@ -23,6 +23,7 @@ import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Organization;
import fr.devinsy.statoolinfos.core.Service;
import fr.devinsy.statoolinfos.uptime.UptimeJournal;
@ -40,6 +41,7 @@ import website.views.CrawlView;
/**
* The Class CrawlPage.
*/
@KissServlet("^/federation/organizations/[^/]+/services/[^/]+/crawl.xhtml$")
public class CrawlPage extends HttpServlet
{
private static final long serialVersionUID = 7711286112554720912L;

View file

@ -28,6 +28,7 @@ import org.slf4j.LoggerFactory;
import fr.devinsy.catgenerator.core.BirdGenerator;
import fr.devinsy.kiss4web.dispatcher.KissDispatcherUtils;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Service;
import fr.devinsy.statoolinfos.crawl.CrawlCache;
import fr.devinsy.statoolinfos.util.URLUtils;
@ -40,6 +41,7 @@ import jakarta.servlet.http.HttpServletResponse;
/**
* The Class LogoDo.
*/
@KissServlet("^/federation/organizations/[^/]+/services/[^/]+/logo.(jpg|png|gif|svg)$")
public class LogoDo extends HttpServlet
{
private static final long serialVersionUID = -6159108918214689665L;

View file

@ -25,6 +25,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.kiss4web.dispatcher.KissDispatcherUtils;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Service;
import fr.devinsy.statoolinfosweb.StatoolInfosWeb;
import jakarta.servlet.ServletException;
@ -35,6 +36,7 @@ import jakarta.servlet.http.HttpServletResponse;
/**
* The Class PropertiesDo.
*/
@KissServlet("^/federation/organizations/[^/]+/services/[^/]+/[^./]+\\.properties$")
public class PropertiesDo extends HttpServlet
{
private static final long serialVersionUID = 2011776119103724440L;

View file

@ -23,6 +23,7 @@ import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Organization;
import fr.devinsy.statoolinfos.core.Service;
import fr.devinsy.statoolinfos.uptime.UptimeJournal;
@ -40,6 +41,7 @@ import website.views.PropertyAlertView;
/**
* The Class PropertyAlertPage.
*/
@KissServlet("^/federation/organizations/[^/]+/services/[^/]+/propertyAlert.xhtml$")
public class PropertyAlertPage extends HttpServlet
{
private static final long serialVersionUID = 1909664271041998161L;

View file

@ -23,6 +23,7 @@ import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Organization;
import fr.devinsy.statoolinfos.core.Service;
import fr.devinsy.statoolinfos.uptime.UptimeJournal;
@ -40,6 +41,7 @@ import website.views.PropertyCheckView;
/**
* The Class PropertyCheckPage.
*/
@KissServlet("^/federation/organizations/[^/]+/services/[^/]+/propertyCheck.xhtml$")
public class PropertyCheckPage extends HttpServlet
{
private static final long serialVersionUID = 9023877491741295660L;

View file

@ -27,7 +27,6 @@ import fr.devinsy.statoolinfos.core.Service;
import fr.devinsy.statoolinfos.core.Services;
import fr.devinsy.statoolinfos.core.StatoolInfosException;
import fr.devinsy.statoolinfos.uptime.UptimeJournal;
import fr.devinsy.statoolinfos.uptime.Uptimes;
import fr.devinsy.statoolinfosweb.StatoolInfosWebException;
import fr.devinsy.xidyn.XidynException;
import fr.devinsy.xidyn.data.DisplayMode;
@ -54,7 +53,6 @@ public class ServiceHeaderView
public static String htmlize(final Service service, UptimeJournal uptimeJournal) throws StatoolInfosWebException
{
String result;
Uptimes a;
try
{

View file

@ -23,6 +23,7 @@ import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Organization;
import fr.devinsy.statoolinfos.core.Service;
import fr.devinsy.statoolinfos.core.Services;
@ -41,6 +42,7 @@ import website.views.ServiceListView;
/**
* The Class ServicesPage.
*/
@KissServlet("^/federation/organizations/[^/]+/services/[^/]+/services.xhtml$")
public class ServicesPage extends HttpServlet
{
private static final long serialVersionUID = -7825055903028045121L;

View file

@ -23,6 +23,7 @@ import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Organization;
import fr.devinsy.statoolinfos.core.Service;
import fr.devinsy.statoolinfos.core.Services;
@ -48,6 +49,7 @@ import website.views.ChartViews;
/**
* The Class StatsPage.
*/
@KissServlet("^/federation/organizations/[^/]+/services/[^/]+/stats.xhtml$")
public class StatsPage extends HttpServlet
{
private static final long serialVersionUID = -7295638589683428352L;

View file

@ -23,6 +23,7 @@ import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Organization;
import fr.devinsy.statoolinfos.core.Service;
import fr.devinsy.statoolinfos.core.Services;
@ -41,6 +42,7 @@ import website.views.UptimeView;
/**
* The Class UptimePage.
*/
@KissServlet("^/federation/organizations/[^/]+/services/[^/]+/uptime.xhtml$")
public class UptimePage extends HttpServlet
{
private static final long serialVersionUID = -1383909448472707593L;

View file

@ -21,6 +21,7 @@ package website.federation.organizations.organization.services.service.metrics;
import java.io.IOException;
import fr.devinsy.kiss4web.Redirector;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Organization;
import fr.devinsy.statoolinfos.core.Service;
import fr.devinsy.statoolinfosweb.StatoolInfosWeb;
@ -33,6 +34,7 @@ import website.charter.ErrorView;
/**
* The Class IndexPage.
*/
@KissServlet("^/federation/organizations/[^/]+/services/[^/]+/metrics/")
public class IndexPage extends HttpServlet
{
private static final long serialVersionUID = 2794788000773558854L;

View file

@ -23,6 +23,7 @@ import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Organization;
import fr.devinsy.statoolinfos.core.Service;
import fr.devinsy.statoolinfos.core.StatoolInfosException;
@ -50,6 +51,7 @@ import website.views.MetricMenuView.ViewMenu;
/**
* The Class MetricGenericPage.
*/
@KissServlet("^/federation/organizations/[^/]+/services/[^/]+/metrics/generic.xhtml$")
public class MetricGenericPage extends HttpServlet
{
private static final long serialVersionUID = -5178693752168992169L;

View file

@ -23,6 +23,7 @@ import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Organization;
import fr.devinsy.statoolinfos.core.Service;
import fr.devinsy.statoolinfos.core.StatoolInfosException;
@ -50,6 +51,7 @@ import website.views.MetricMenuView.ViewMenu;
/**
* The Class MetricSpecificPage.
*/
@KissServlet("^/federation/organizations/[^/]+/services/[^/]+/metrics/specific.xhtml$")
public class MetricSpecificPage extends HttpServlet
{
private static final long serialVersionUID = 7386092658784966221L;

View file

@ -23,6 +23,7 @@ import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Organization;
import fr.devinsy.statoolinfos.core.Service;
import fr.devinsy.statoolinfos.core.StatoolInfosException;
@ -50,6 +51,7 @@ import website.views.MetricMenuView.ViewMenu;
/**
* The Class MetricSummaryPage.
*/
@KissServlet("^/federation/organizations/[^/]+/services/[^/]+/metrics/summary.xhtml$")
public class MetricSummaryPage extends HttpServlet
{
private static final long serialVersionUID = -2897466506555028353L;

View file

@ -23,6 +23,7 @@ import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Organization;
import fr.devinsy.statoolinfos.core.Service;
import fr.devinsy.statoolinfos.core.StatoolInfosException;
@ -50,6 +51,7 @@ import website.views.MetricMenuView.ViewMenu;
/**
* The Class MetricWebPage.
*/
@KissServlet("^/federation/organizations/[^/]+/services/[^/]+/metrics/web.xhtml$")
public class MetricWebPage extends HttpServlet
{
private static final long serialVersionUID = -715467405788148758L;

View file

@ -23,6 +23,7 @@ import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.kiss4web.dispatcher.annotation.KissServlet;
import fr.devinsy.statoolinfos.core.Federation;
import fr.devinsy.statoolinfos.core.Services;
import fr.devinsy.statoolinfos.core.Software;
@ -47,6 +48,7 @@ import website.views.ServiceListView;
/**
* The Class SoftwarePage.
*/
@KissServlet("^/federation/softwares/[^/]+\\.xhtml")
public class SoftwarePage extends HttpServlet
{
private static final long serialVersionUID = -6466067659488945069L;

View file

@ -0,0 +1 @@
fr.devinsy.kiss4web.dispatcher.annotation.KissServletProcessor

View file

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="https://jakarta.ee/xml/ns/jakartaee"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
id="WebApp_ID" version="6.0">
<display-name>StatoolInfosWeb</display-name>
<description>