From 82cd6e374bb8dc089401ffb53e30659b013ddce4 Mon Sep 17 00:00:00 2001 From: "Christian P. MOMON" Date: Sun, 11 Oct 2020 06:57:21 +0200 Subject: [PATCH] Added SocialNetworks pages. --- .../statoolinfos/core/Organization.java | 89 +++++++++++++++ .../statoolinfos/core/Organizations.java | 48 ++++++++ .../statoolinfos/core/SocialNetworks.java | 28 +++++ .../statoolinfos/htmlize/Htmlizer.java | 22 ++++ .../htmlize/SocialNetworksPage.java | 103 ++++++++++++++++++ .../statoolinfos/htmlize/socialNetworks.xhtml | 98 +++++++++++++++++ .../htmlize/stuff/diaspora-logo.png | Bin 0 -> 11420 bytes .../htmlize/stuff/mastodon-logo.png | Bin 0 -> 1833 bytes .../statoolinfos/htmlize/webCharterView.xhtml | 1 + 9 files changed, 389 insertions(+) create mode 100644 src/fr/devinsy/statoolinfos/core/SocialNetworks.java create mode 100644 src/fr/devinsy/statoolinfos/htmlize/SocialNetworksPage.java create mode 100644 src/fr/devinsy/statoolinfos/htmlize/socialNetworks.xhtml create mode 100644 src/fr/devinsy/statoolinfos/htmlize/stuff/diaspora-logo.png create mode 100644 src/fr/devinsy/statoolinfos/htmlize/stuff/mastodon-logo.png diff --git a/src/fr/devinsy/statoolinfos/core/Organization.java b/src/fr/devinsy/statoolinfos/core/Organization.java index ac79356..6b04274 100644 --- a/src/fr/devinsy/statoolinfos/core/Organization.java +++ b/src/fr/devinsy/statoolinfos/core/Organization.java @@ -123,6 +123,21 @@ public class Organization extends PathPropertyList return result; } + /** + * Gets the diaspora page. + * + * @return the diaspora page + */ + public String getDiasporaWebpage() + { + String result; + + result = get("organization.socialnetworks.diaspora"); + + // + return result; + } + /** * Gets the end date. * @@ -203,6 +218,21 @@ public class Organization extends PathPropertyList return result; } + /** + * Gets the mastodon page. + * + * @return the mastodon page + */ + public String getMastodonWebpage() + { + String result; + + result = get("organization.socialnetworks.mastodon"); + + // + return result; + } + /** * Gets the name. * @@ -332,6 +362,65 @@ public class Organization extends PathPropertyList return result; } + /** + * Checks for social network. + * + * @return true, if successful + */ + public boolean hasSocialNetwork() + { + boolean result; + + if (StringUtils.isAllBlank(getDiasporaWebpage(), getMastodonWebpage())) + { + result = false; + } + else + { + result = true; + } + + // + return result; + } + + /** + * Checks for social network. + * + * @param value + * the value + * @return true, if successful + */ + public boolean hasSocialNetwork(final SocialNetworks value) + { + boolean result; + + String link; + switch (value) + { + case DIASPORA: + link = getDiasporaWebpage(); + break; + case MASTODON: + link = getMastodonWebpage(); + break; + default: + link = null; + } + + if (StringUtils.isBlank(link)) + { + result = false; + } + else + { + result = true; + } + + // + return result; + } + public void setFederation(final Federation federation) { this.federation = federation; diff --git a/src/fr/devinsy/statoolinfos/core/Organizations.java b/src/fr/devinsy/statoolinfos/core/Organizations.java index 8af871a..ccdcc58 100644 --- a/src/fr/devinsy/statoolinfos/core/Organizations.java +++ b/src/fr/devinsy/statoolinfos/core/Organizations.java @@ -36,6 +36,54 @@ public class Organizations extends ArrayList super(); } + /** + * Filter by social network. + * + * @return the organizations + */ + public Organizations filterBySocialNetworks() + { + Organizations result; + + result = new Organizations(); + + for (Organization organization : this) + { + if (organization.hasSocialNetwork()) + { + result.add(organization); + } + } + + // + return result; + } + + /** + * Filter by social network. + * + * @param value + * the value + * @return the organizations + */ + public Organizations filterBySocialNetwork(final SocialNetworks value) + { + Organizations result; + + result = new Organizations(); + + for (Organization organization : this) + { + if (organization.hasSocialNetwork(value)) + { + result.add(organization); + } + } + + // + return result; + } + /** * Reverse. * diff --git a/src/fr/devinsy/statoolinfos/core/SocialNetworks.java b/src/fr/devinsy/statoolinfos/core/SocialNetworks.java new file mode 100644 index 0000000..2775a1a --- /dev/null +++ b/src/fr/devinsy/statoolinfos/core/SocialNetworks.java @@ -0,0 +1,28 @@ +/* + * Copyright (C) 2020 Christian Pierre MOMON + * + * This file is part of StatoolInfos, simple service statistics tool. + * + * StatoolInfos is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * StatoolInfos is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with StatoolInfos. If not, see . + */ +package fr.devinsy.statoolinfos.core; + +/** + * The Enum SocialNetworks. + */ +public enum SocialNetworks +{ + DIASPORA, + MASTODON +} diff --git a/src/fr/devinsy/statoolinfos/htmlize/Htmlizer.java b/src/fr/devinsy/statoolinfos/htmlize/Htmlizer.java index 313c344..193d1e4 100644 --- a/src/fr/devinsy/statoolinfos/htmlize/Htmlizer.java +++ b/src/fr/devinsy/statoolinfos/htmlize/Htmlizer.java @@ -33,8 +33,10 @@ import fr.devinsy.statoolinfos.core.Configuration; import fr.devinsy.statoolinfos.core.Factory; import fr.devinsy.statoolinfos.core.Federation; import fr.devinsy.statoolinfos.core.Organization; +import fr.devinsy.statoolinfos.core.Organizations; import fr.devinsy.statoolinfos.core.Service; import fr.devinsy.statoolinfos.core.Services; +import fr.devinsy.statoolinfos.core.SocialNetworks; import fr.devinsy.statoolinfos.core.Software; import fr.devinsy.statoolinfos.core.Softwares; import fr.devinsy.statoolinfos.core.StatoolInfosException; @@ -129,6 +131,10 @@ public class Htmlizer StatoolInfosUtils.copyRessource(source + "status-over.png", targetDirectory); StatoolInfosUtils.copyRessource(source + "status-void.png", targetDirectory); + // + StatoolInfosUtils.copyRessource(source + "diaspora-logo.png", targetDirectory); + StatoolInfosUtils.copyRessource(source + "mastodon-logo.png", targetDirectory); + // File color = new File(targetDirectory, "circle-icons/color"); color.mkdirs(); @@ -401,6 +407,22 @@ public class Htmlizer FileUtils.write(new File(htmlizeDirectory, "software-" + software.getTechnicalName() + ".xhtml"), page, StandardCharsets.UTF_8); } } + + // + { + logger.info("Htmlize social networks pages."); + Organizations organizations = federation.getOrganizations().filterBySocialNetworks(); + page = SocialNetworksPage.build("Tous", organizations); + FileUtils.write(new File(htmlizeDirectory, "socialNetworks.xhtml"), page, StandardCharsets.UTF_8); + + organizations = federation.getOrganizations().filterBySocialNetwork(SocialNetworks.DIASPORA); + page = SocialNetworksPage.build("Disapora*", organizations); + FileUtils.write(new File(htmlizeDirectory, "socialNetworks-diaspora.xhtml"), page, StandardCharsets.UTF_8); + + organizations = federation.getOrganizations().filterBySocialNetwork(SocialNetworks.MASTODON); + page = SocialNetworksPage.build("Mastodon", organizations); + FileUtils.write(new File(htmlizeDirectory, "socialNetworks-mastodon.xhtml"), page, StandardCharsets.UTF_8); + } } /** diff --git a/src/fr/devinsy/statoolinfos/htmlize/SocialNetworksPage.java b/src/fr/devinsy/statoolinfos/htmlize/SocialNetworksPage.java new file mode 100644 index 0000000..70baa6d --- /dev/null +++ b/src/fr/devinsy/statoolinfos/htmlize/SocialNetworksPage.java @@ -0,0 +1,103 @@ +/* + * Copyright (C) 2020 Christian Pierre MOMON + * + * This file is part of StatoolInfos, simple service statistics tool. + * + * StatoolInfos is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * StatoolInfos is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with StatoolInfos. If not, see . + */ +package fr.devinsy.statoolinfos.htmlize; + +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import fr.devinsy.statoolinfos.core.Organization; +import fr.devinsy.statoolinfos.core.Organizations; +import fr.devinsy.statoolinfos.core.StatoolInfosException; +import fr.devinsy.xidyn.XidynException; +import fr.devinsy.xidyn.data.DisplayMode; +import fr.devinsy.xidyn.data.TagDataManager; +import fr.devinsy.xidyn.presenters.PresenterUtils; + +/** + * The Class SocialNetworks. + */ +public class SocialNetworksPage +{ + private static Logger logger = LoggerFactory.getLogger(SocialNetworksPage.class); + + /** + * Builds the. + * + * @param federation + * the federation + * @return the string + * @throws StatoolInfosException + * the statool infos exception + */ + public static String build(final String title, final Organizations organizations) throws StatoolInfosException + { + String result; + + try + { + logger.debug("Building social networks page {}…"); + + TagDataManager data = new TagDataManager(); + + data.setEscapedContent("title", title); + data.setContent("organizationCount", organizations.size()); + + int index = 0; + for (Organization organization : organizations) + { + data.setAttribute("organizationListLine", index, "organizationListLineNameLink", "href", organization.getTechnicalName() + ".xhtml"); + data.setAttribute("organizationListLine", index, "organizationListLineLogo", "src", organization.getTechnicalName() + "-logo.png"); + data.setAttribute("organizationListLine", index, "organizationListLineLogo", "alt", organization.getName()); + data.setEscapedContent("organizationListLine", index, "organizationListLineNameValue", organization.getName()); + + data.setEscapedContent("organizationListLine", index, "organizationListLineUrlLink", organization.getWebsite()); + data.setAttribute("organizationListLine", index, "organizationListLineUrlLink", "href", organization.getWebsite()); + + if (StringUtils.isNotBlank(organization.getDiasporaWebpage())) + { + data.setAttribute("organizationListLine", index, "organizationListLineDiasporaImg", "class", ""); + data.getIdData("organizationListLine", index, "organizationListLineDiasporaImg").getAttribute("class").setMode(DisplayMode.REPLACE); + data.setAttribute("organizationListLine", index, "organizationListLineDiasporaLink", "href", organization.getDiasporaWebpage()); + } + + if (StringUtils.isNotBlank(organization.getMastodonWebpage())) + { + data.setAttribute("organizationListLine", index, "organizationListLineMastodonImg", "class", ""); + data.getIdData("organizationListLine", index, "organizationListLineMastodonImg").getAttribute("class").setMode(DisplayMode.REPLACE); + data.setAttribute("organizationListLine", index, "organizationListLineMastodonLink", "href", organization.getMastodonWebpage()); + } + + index += 1; + } + + String content = PresenterUtils.dynamize("/fr/devinsy/statoolinfos/htmlize/socialNetworks.xhtml", data).toString(); + + BreadcrumbTrail trail = new BreadcrumbTrail(); + result = WebCharterView.build(content, trail); + } + catch (XidynException exception) + { + throw new StatoolInfosException("Error building social networks page: " + exception.getMessage(), exception); + } + + // + return result; + } +} diff --git a/src/fr/devinsy/statoolinfos/htmlize/socialNetworks.xhtml b/src/fr/devinsy/statoolinfos/htmlize/socialNetworks.xhtml new file mode 100644 index 0000000..23b2539 --- /dev/null +++ b/src/fr/devinsy/statoolinfos/htmlize/socialNetworks.xhtml @@ -0,0 +1,98 @@ + + + + + StatoolInfos + + + + + + + +
+ + + +
+

n/a

+
Nombre de membres : n/a
+
+ +
+
+
+ Diaspora*
+ Mastodon
+
+
+ + + + + + + + + + + + + + + + +
Nom du membreURLRéseaux sociaux
+ + +  n/a + + n/a
+
+
+ + + diff --git a/src/fr/devinsy/statoolinfos/htmlize/stuff/diaspora-logo.png b/src/fr/devinsy/statoolinfos/htmlize/stuff/diaspora-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2192afb47343de74b1613689f649ee53d9c8f4d9 GIT binary patch literal 11420 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 X-;-THD@a#600000NkvXXu0mjfl`&@v literal 0 HcmV?d00001 diff --git a/src/fr/devinsy/statoolinfos/htmlize/webCharterView.xhtml b/src/fr/devinsy/statoolinfos/htmlize/webCharterView.xhtml index 242d6c9..9a42f2e 100644 --- a/src/fr/devinsy/statoolinfos/htmlize/webCharterView.xhtml +++ b/src/fr/devinsy/statoolinfos/htmlize/webCharterView.xhtml @@ -23,6 +23,7 @@ Services Catégories Logiciels + Réseaux sociaux