From 4eb8aa4c83c583907c8971be82c820565e37eb6a Mon Sep 17 00:00:00 2001 From: "Christian P. MOMON" Date: Mon, 4 Jun 2018 14:12:29 +0200 Subject: [PATCH] Introduced XidynException usage. Fixed Factory get. --- src/fr/devinsy/xidyn/pages/Page.java | 37 ++-- src/fr/devinsy/xidyn/pages/PageFactory.java | 18 +- .../xidyn/presenters/DomPresenter.java | 14 +- .../xidyn/presenters/DomPresenterCore.java | 61 +++--- .../xidyn/presenters/FilePresenter.java | 62 ++++--- .../xidyn/presenters/FilePresenters.java | 2 +- .../xidyn/presenters/FilePresentersProxy.java | 16 +- .../xidyn/presenters/GenericPresenter.java | 15 +- .../devinsy/xidyn/presenters/Presenter.java | 20 +- .../xidyn/presenters/PresenterFactory.java | 6 +- .../xidyn/presenters/PresenterUtils.java | 26 +-- .../xidyn/presenters/StringPresenter.java | 13 +- .../xidyn/presenters/TranslatorPresenter.java | 45 ++--- .../xidyn/presenters/URLPresenter.java | 43 +++-- src/fr/devinsy/xidyn/utils/XidynUtils.java | 55 +++--- src/fr/devinsy/xidyn/views/CharterView.java | 6 +- src/fr/devinsy/xidyn/views/View.java | 6 +- src/fr/devinsy/xidyn/views/ViewCache.java | 148 +++++++++++++++ src/fr/devinsy/xidyn/views/ViewCacheItem.java | 175 ++++++++++++++++++ src/fr/devinsy/xidyn/views/ViewProxy.java | 60 ++++++ .../devinsy/xidyn/pages/PageFactoryTest.java | 4 +- 21 files changed, 628 insertions(+), 204 deletions(-) create mode 100644 src/fr/devinsy/xidyn/views/ViewCache.java create mode 100644 src/fr/devinsy/xidyn/views/ViewCacheItem.java create mode 100644 src/fr/devinsy/xidyn/views/ViewProxy.java diff --git a/src/fr/devinsy/xidyn/pages/Page.java b/src/fr/devinsy/xidyn/pages/Page.java index 6d52ce4..a5d0b55 100644 --- a/src/fr/devinsy/xidyn/pages/Page.java +++ b/src/fr/devinsy/xidyn/pages/Page.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2016,2017 Christian Pierre MOMON + * Copyright (C) 2016-2018 Christian Pierre MOMON * * This file is part of Xidyn. * @@ -24,6 +24,7 @@ import java.util.Locale; import org.w3c.dom.Document; +import fr.devinsy.xidyn.XidynException; import fr.devinsy.xidyn.data.TagDataManager; import fr.devinsy.xidyn.presenters.DomPresenter; import fr.devinsy.xidyn.presenters.FilePresenter; @@ -148,10 +149,10 @@ public class Page extends TagDataManager * Dynamize. * * @return the string buffer - * @throws Exception + * @throws XidynException * the exception */ - public StringBuffer dynamize() throws Exception + public StringBuffer dynamize() throws XidynException { StringBuffer result; @@ -174,10 +175,10 @@ public class Page extends TagDataManager * Dynamize to string. * * @return the string - * @throws Exception + * @throws XidynException * the exception */ - public String dynamizeToString() throws Exception + public String dynamizeToString() throws XidynException { String result; @@ -203,10 +204,10 @@ public class Page extends TagDataManager * the id * @param source * the source - * @throws Exception + * @throws XidynException * the exception */ - public void include(final String id, final Page source) throws Exception + public void include(final String id, final Page source) throws XidynException { if ((id != null) && (source != null)) { @@ -251,10 +252,10 @@ public class Page extends TagDataManager * the id * @param source * the source - * @throws Exception + * @throws XidynException * the exception */ - public void includePage(final String id, final CharSequence source) throws Exception + public void includePage(final String id, final CharSequence source) throws XidynException { if ((id != null) && (source != null)) { @@ -271,10 +272,10 @@ public class Page extends TagDataManager * the id * @param source * the source - * @throws Exception + * @throws XidynException * the exception */ - public void includePage(final String id, final Document source) throws Exception + public void includePage(final String id, final Document source) throws XidynException { if ((id != null) && (source != null)) { @@ -291,10 +292,10 @@ public class Page extends TagDataManager * the id * @param source * the source - * @throws Exception + * @throws XidynException * the exception */ - public void includePage(final String id, final File source) throws Exception + public void includePage(final String id, final File source) throws XidynException { if ((id != null) && (source != null)) { @@ -311,10 +312,10 @@ public class Page extends TagDataManager * the id * @param source * the source - * @throws Exception - * the exception + * @throws throws + * XidynException the exception */ - public void includePage(final String id, final URL source) throws Exception + public void includePage(final String id, final URL source) throws XidynException { if ((id != null) && (source != null)) { @@ -350,10 +351,10 @@ public class Page extends TagDataManager * Last version. * * @return the string buffer - * @throws Exception + * @throws XidynException * the exception */ - public StringBuffer lastVersion() throws Exception + public StringBuffer lastVersion() throws XidynException { StringBuffer result; diff --git a/src/fr/devinsy/xidyn/pages/PageFactory.java b/src/fr/devinsy/xidyn/pages/PageFactory.java index ccf36a2..01fbd6d 100644 --- a/src/fr/devinsy/xidyn/pages/PageFactory.java +++ b/src/fr/devinsy/xidyn/pages/PageFactory.java @@ -22,6 +22,8 @@ import java.io.File; import java.net.URL; import java.util.Locale; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.w3c.dom.Document; import fr.devinsy.strings.StringsUtils; @@ -35,6 +37,8 @@ import fr.devinsy.xidyn.utils.cache.Cache; */ public class PageFactory { + private static Logger logger = LoggerFactory.getLogger(PageFactory.class); + /** * http://thecodersbreakfast.net/index.php?post/2008/02/25/26-de-la-bonne- * implementation-du-singleton-en-java @@ -183,7 +187,7 @@ public class PageFactory { Page result; - String key = StringsUtils.toStringSeparatedBy(keys, "-").toString(); + String key = StringsUtils.toStringSeparatedBy(keys, "-"); result = this.cache.get(key); if (result == null) @@ -209,12 +213,12 @@ public class PageFactory { Page result; - String key = StringsUtils.toStringSeparatedBy(keys, "-").toString(); + String key = StringsUtils.toStringSeparatedBy(keys, "-"); result = this.cache.get(key); if (result == null) { - result = get(source); + result = create(source); this.cache.put(key, result); } @@ -235,12 +239,12 @@ public class PageFactory { Page result; - String key = StringsUtils.toStringSeparatedBy(keys, "-").toString(); + String key = StringsUtils.toStringSeparatedBy(keys, "-"); result = this.cache.get(key); if (result == null) { - result = get(source); + result = create(source); this.cache.put(key, result); } @@ -261,12 +265,12 @@ public class PageFactory { Page result; - String key = StringsUtils.toStringSeparatedBy(keys, "-").toString(); + String key = StringsUtils.toStringSeparatedBy(keys, "-"); result = this.cache.get(key); if (result == null) { - result = get(source); + result = create(source); this.cache.put(key, result); } diff --git a/src/fr/devinsy/xidyn/presenters/DomPresenter.java b/src/fr/devinsy/xidyn/presenters/DomPresenter.java index 8b5e3b7..72c6301 100644 --- a/src/fr/devinsy/xidyn/presenters/DomPresenter.java +++ b/src/fr/devinsy/xidyn/presenters/DomPresenter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2017 Christian Pierre MOMON + * Copyright (C) 2006-2018 Christian Pierre MOMON * * This file is part of Xidyn. * @@ -24,6 +24,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.w3c.dom.Document; +import fr.devinsy.xidyn.XidynException; import fr.devinsy.xidyn.data.TagDataManager; import fr.devinsy.xidyn.utils.XidynUtils; @@ -33,6 +34,7 @@ import fr.devinsy.xidyn.utils.XidynUtils; public class DomPresenter implements Presenter { private static Logger logger = LoggerFactory.getLogger(DomPresenter.class); + private Document dom; private boolean isOutdated; private StringBuffer defaultHtmlTarget; @@ -61,7 +63,7 @@ public class DomPresenter implements Presenter * {@inheritDoc} */ @Override - public StringBuffer dynamize() throws Exception + public StringBuffer dynamize() throws XidynException { StringBuffer result; @@ -81,7 +83,7 @@ public class DomPresenter implements Presenter * {@inheritDoc} */ @Override - public StringBuffer dynamize(final TagDataManager data) throws Exception + public StringBuffer dynamize(final TagDataManager data) throws XidynException { StringBuffer result; @@ -94,7 +96,7 @@ public class DomPresenter implements Presenter String errorMessage = "source not defined"; logger.error(errorMessage); result = null; - throw new Exception(errorMessage); + throw new XidynException(errorMessage); } else { @@ -163,7 +165,7 @@ public class DomPresenter implements Presenter * {@inheritDoc} */ @Override - public boolean isOutdated() throws Exception + public boolean isOutdated() throws XidynException { boolean result; @@ -202,7 +204,7 @@ public class DomPresenter implements Presenter * @see fr.devinsy.xidyn.presenters.Presenter#update() */ @Override - public void update() throws Exception + public void update() throws XidynException { } diff --git a/src/fr/devinsy/xidyn/presenters/DomPresenterCore.java b/src/fr/devinsy/xidyn/presenters/DomPresenterCore.java index 43db729..20affa2 100644 --- a/src/fr/devinsy/xidyn/presenters/DomPresenterCore.java +++ b/src/fr/devinsy/xidyn/presenters/DomPresenterCore.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2017 Christian Pierre MOMON + * Copyright (C) 2006-2018 Christian Pierre MOMON * * This file is part of Xidyn. * @@ -18,6 +18,7 @@ */ package fr.devinsy.xidyn.presenters; +import java.io.IOException; import java.io.StringWriter; import java.util.HashMap; import java.util.Iterator; @@ -32,6 +33,7 @@ import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; +import fr.devinsy.xidyn.XidynException; import fr.devinsy.xidyn.data.SimpleTagData; import fr.devinsy.xidyn.data.TagAttributes; import fr.devinsy.xidyn.data.TagData; @@ -59,12 +61,19 @@ public class DomPresenterCore * the doc * @param data * the data - * @throws Exception + * @throws XidynException * the exception */ - public static void dynamize(final Appendable result, final Document doc, final TagDataListById data) throws Exception + public static void dynamize(final Appendable result, final Document doc, final TagDataListById data) throws XidynException { - process(result, doc, data); + try + { + process(result, doc, data); + } + catch (IOException exception) + { + throw new XidynException("IO Error detected: " + exception.getMessage(), exception); + } } /** @@ -76,10 +85,10 @@ public class DomPresenterCore * the doc * @param data * the data - * @throws Exception + * @throws XidynException * the exception */ - public static void dynamize(final Appendable result, final Document doc, final TagDataManager data) throws Exception + public static void dynamize(final Appendable result, final Document doc, final TagDataManager data) throws XidynException { dynamize(result, doc, data.getIdsDataById()); } @@ -92,10 +101,10 @@ public class DomPresenterCore * @param data * the data * @return the string buffer - * @throws Exception + * @throws XidynException * the exception */ - public static StringBuffer dynamize(final Document doc, final TagDataListById data) throws Exception + public static StringBuffer dynamize(final Document doc, final TagDataListById data) throws XidynException { StringBuffer result; @@ -115,10 +124,10 @@ public class DomPresenterCore * @param data * the data * @return the string buffer - * @throws Exception + * @throws XidynException * the exception */ - public static StringBuffer dynamize(final Document doc, final TagDataManager data) throws Exception + public static StringBuffer dynamize(final Document doc, final TagDataManager data) throws XidynException { StringBuffer result; @@ -298,10 +307,10 @@ public class DomPresenterCore * the node * @param data * the data - * @throws Exception + * @throws IOException * the exception */ - private static void process(final Appendable result, final Node node, final TagDataListById data) throws Exception + private static void process(final Appendable result, final Node node, final TagDataListById data) throws IOException { process(result, node, data, ""); } @@ -317,10 +326,10 @@ public class DomPresenterCore * the datas * @param suffix * the suffix - * @throws Exception + * @throws IOException * the exception */ - private static void process(final Appendable result, final Node node, final TagDataListById datas, final String suffix) throws Exception + private static void process(final Appendable result, final Node node, final TagDataListById datas, final String suffix) throws IOException { logger.debug("process - started"); String TRANSITIONAL_DTD = "xhtml1-transitional.dtd"; @@ -579,10 +588,10 @@ public class DomPresenterCore * the node * @param datas * the datas - * @throws Exception + * @throws IOException * the exception */ - private static void processChildren(final Appendable result, final Node node, final TagDataListById datas) throws Exception + private static void processChildren(final Appendable result, final Node node, final TagDataListById datas) throws IOException { processChildren(result, node, datas, ""); } @@ -598,10 +607,10 @@ public class DomPresenterCore * the datas * @param suffix * the suffix - * @throws Exception + * @throws IOException * the exception */ - private static void processChildren(final Appendable result, final Node node, final TagDataListById datas, final String suffix) throws Exception + private static void processChildren(final Appendable result, final Node node, final TagDataListById datas, final String suffix) throws IOException { // Get the iteration strategy. SimpleTagData.IterationStrategy strategy; @@ -738,10 +747,10 @@ public class DomPresenterCore * the node * @param datas * the datas - * @throws Exception + * @throws IOException * the exception */ - private static void processElementBasically(final Appendable result, final Node node, final TagDataListById datas) throws Exception + private static void processElementBasically(final Appendable result, final Node node, final TagDataListById datas) throws IOException { processElementBasically(result, node, datas, ""); } @@ -757,10 +766,10 @@ public class DomPresenterCore * the datas * @param suffix * the suffix - * @throws Exception + * @throws IOException * the exception */ - private static void processElementBasically(final Appendable result, final Node node, final TagDataListById datas, final String suffix) throws Exception + private static void processElementBasically(final Appendable result, final Node node, final TagDataListById datas, final String suffix) throws IOException { logger.debug("processElementBasically - started [{}]", node.getNodeName()); @@ -806,10 +815,10 @@ public class DomPresenterCore * The ID. * @param datas * the datas - * @throws Exception + * @throws IOException * the exception */ - private static void processElementWithId(final Appendable result, final Node node, final NamedNodeMap attrs, final Node idAttr, final TagDataListById datas) throws Exception + private static void processElementWithId(final Appendable result, final Node node, final NamedNodeMap attrs, final Node idAttr, final TagDataListById datas) throws IOException { processElementWithId(result, node, attrs, idAttr, datas, ""); } @@ -830,10 +839,10 @@ public class DomPresenterCore * the datas * @param suffix * the suffix - * @throws Exception + * @throws IOException * the exception */ - private static void processElementWithId(final Appendable result, final Node node, final NamedNodeMap attrs, final Node idAttr, final TagDataListById datas, final String suffix) throws Exception + private static void processElementWithId(final Appendable result, final Node node, final NamedNodeMap attrs, final Node idAttr, final TagDataListById datas, final String suffix) throws IOException { String tag = node.getNodeName(); diff --git a/src/fr/devinsy/xidyn/presenters/FilePresenter.java b/src/fr/devinsy/xidyn/presenters/FilePresenter.java index 5c1dbb8..393e828 100644 --- a/src/fr/devinsy/xidyn/presenters/FilePresenter.java +++ b/src/fr/devinsy/xidyn/presenters/FilePresenter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2017 Christian Pierre MOMON + * Copyright (C) 2006-2018 Christian Pierre MOMON * * This file is part of Xidyn. * @@ -19,12 +19,14 @@ package fr.devinsy.xidyn.presenters; import java.io.File; +import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import fr.devinsy.xidyn.XidynException; import fr.devinsy.xidyn.data.TagDataManager; import fr.devinsy.xidyn.utils.XidynUtils; @@ -73,7 +75,7 @@ public class FilePresenter extends StringPresenter * {@inheritDoc} */ @Override - public StringBuffer dynamize() throws Exception + public StringBuffer dynamize() throws XidynException { StringBuffer result; @@ -93,7 +95,7 @@ public class FilePresenter extends StringPresenter * {@inheritDoc} */ @Override - public StringBuffer dynamize(final TagDataManager data) throws Exception + public StringBuffer dynamize(final TagDataManager data) throws XidynException { StringBuffer result; @@ -163,7 +165,7 @@ public class FilePresenter extends StringPresenter * {@inheritDoc} */ @Override - public boolean isOutdated() throws Exception + public boolean isOutdated() throws XidynException { boolean result; @@ -246,36 +248,40 @@ public class FilePresenter extends StringPresenter setSource(file); } - /** - * Update. - * - * @throws Exception - * the exception + /* (non-Javadoc) + * @see fr.devinsy.xidyn.presenters.StringPresenter#update() */ @Override - public void update() throws Exception + public void update() throws XidynException { - // - if (this.source == null) + try { - String errorMessage = "source not defined"; - logger.error(errorMessage); - throw new NullPointerException(errorMessage); - } - else if (!this.source.exists()) - { - String errorMessage = "source file defined but not found (" + this.sourceFilePathname + ")"; - logger.error(errorMessage); - throw new Exception(errorMessage); - } - else - { - long currentTime = this.source.lastModified(); - if ((super.getSource() == null) || (this.sourceTime != currentTime)) + // + if (this.source == null) { - super.setSource(XidynUtils.load(this.source)); - this.sourceTime = currentTime; + String errorMessage = "source not defined"; + logger.error(errorMessage); + throw new NullPointerException(errorMessage); } + else if (!this.source.exists()) + { + String errorMessage = "source file defined but not found (" + this.sourceFilePathname + ")"; + logger.error(errorMessage); + throw new XidynException(errorMessage); + } + else + { + long currentTime = this.source.lastModified(); + if ((super.getSource() == null) || (this.sourceTime != currentTime)) + { + super.setSource(XidynUtils.load(this.source)); + this.sourceTime = currentTime; + } + } + } + catch (IOException exception) + { + throw new XidynException(exception); } } } diff --git a/src/fr/devinsy/xidyn/presenters/FilePresenters.java b/src/fr/devinsy/xidyn/presenters/FilePresenters.java index 3f14da9..190b49b 100644 --- a/src/fr/devinsy/xidyn/presenters/FilePresenters.java +++ b/src/fr/devinsy/xidyn/presenters/FilePresenters.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2017 Christian Pierre MOMON + * Copyright (C) 2006-2018 Christian Pierre MOMON * * This file is part of Xidyn. * diff --git a/src/fr/devinsy/xidyn/presenters/FilePresentersProxy.java b/src/fr/devinsy/xidyn/presenters/FilePresentersProxy.java index 5852088..b7d6e1b 100644 --- a/src/fr/devinsy/xidyn/presenters/FilePresentersProxy.java +++ b/src/fr/devinsy/xidyn/presenters/FilePresentersProxy.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2017 Christian Pierre MOMON + * Copyright (C) 2006-2018 Christian Pierre MOMON * * This file is part of Xidyn. * @@ -21,6 +21,8 @@ package fr.devinsy.xidyn.presenters; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import fr.devinsy.xidyn.XidynException; + /** * The Class FilePresentersProxy. */ @@ -34,10 +36,10 @@ public class FilePresentersProxy /** * Instantiates a new file presenters proxy. * - * @throws Exception + * @throws XidynException * the exception */ - protected FilePresentersProxy() throws Exception + protected FilePresentersProxy() throws XidynException { this.presenters = new FilePresenters(); } @@ -48,10 +50,10 @@ public class FilePresentersProxy * @param source * the source * @return the by source - * @throws Exception + * @throws XidynException * the exception */ - public FilePresenter getBySource(final String source) throws Exception + public FilePresenter getBySource(final String source) throws XidynException { FilePresenter result; @@ -77,10 +79,10 @@ public class FilePresentersProxy * Instance. * * @return the file presenters proxy - * @throws Exception + * @throws XidynException * the exception */ - public static FilePresentersProxy instance() throws Exception + public static FilePresentersProxy instance() throws XidynException { FilePresentersProxy result; diff --git a/src/fr/devinsy/xidyn/presenters/GenericPresenter.java b/src/fr/devinsy/xidyn/presenters/GenericPresenter.java index d56dbd1..20484d5 100644 --- a/src/fr/devinsy/xidyn/presenters/GenericPresenter.java +++ b/src/fr/devinsy/xidyn/presenters/GenericPresenter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2017 Christian Pierre MOMON + * Copyright (C) 2006-2018 Christian Pierre MOMON * * This file is part of Xidyn. * @@ -23,6 +23,7 @@ import java.net.URL; import org.w3c.dom.Document; +import fr.devinsy.xidyn.XidynException; import fr.devinsy.xidyn.data.TagDataManager; /** @@ -110,7 +111,7 @@ public class GenericPresenter implements Presenter * @see fr.devinsy.xidyn.presenters.Presenter#dynamize() */ @Override - public StringBuffer dynamize() throws Exception + public StringBuffer dynamize() throws XidynException { StringBuffer result; @@ -124,7 +125,7 @@ public class GenericPresenter implements Presenter * @see fr.devinsy.xidyn.presenters.Presenter#dynamize(fr.devinsy.xidyn.data.TagDataManager) */ @Override - public StringBuffer dynamize(final TagDataManager datas) throws Exception + public StringBuffer dynamize(final TagDataManager datas) throws XidynException { StringBuffer result; @@ -166,7 +167,7 @@ public class GenericPresenter implements Presenter * @see fr.devinsy.xidyn.presenters.Presenter#isOutdated() */ @Override - public boolean isOutdated() throws Exception + public boolean isOutdated() throws XidynException { boolean result; @@ -254,10 +255,10 @@ public class GenericPresenter implements Presenter * @param language * the language * @return the string - * @throws Exception + * @throws XidynException * the exception */ - public String toString(final String language) throws Exception + public String toString(final String language) throws XidynException { String result; @@ -271,7 +272,7 @@ public class GenericPresenter implements Presenter * @see fr.devinsy.xidyn.presenters.Presenter#update() */ @Override - public void update() throws Exception + public void update() throws XidynException { this.presenter.update(); } diff --git a/src/fr/devinsy/xidyn/presenters/Presenter.java b/src/fr/devinsy/xidyn/presenters/Presenter.java index bf82734..f8fb940 100644 --- a/src/fr/devinsy/xidyn/presenters/Presenter.java +++ b/src/fr/devinsy/xidyn/presenters/Presenter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2017 Christian Pierre MOMON + * Copyright (C) 2006-2018 Christian Pierre MOMON * * This file is part of Xidyn. * @@ -18,6 +18,7 @@ */ package fr.devinsy.xidyn.presenters; +import fr.devinsy.xidyn.XidynException; import fr.devinsy.xidyn.data.TagDataManager; /** @@ -32,15 +33,14 @@ import fr.devinsy.xidyn.data.TagDataManager; */ public interface Presenter { - /** * Dynamize. * * @return the string buffer - * @throws Exception + * @throws XidynException * the exception */ - public StringBuffer dynamize() throws Exception; + public StringBuffer dynamize() throws XidynException; /** * Dynamize. @@ -48,10 +48,10 @@ public interface Presenter * @param datas * the datas * @return the string buffer - * @throws Exception + * @throws XidynException * the exception */ - public StringBuffer dynamize(final TagDataManager datas) throws Exception; + public StringBuffer dynamize(final TagDataManager datas) throws XidynException; /** * Gets the source. @@ -71,16 +71,16 @@ public interface Presenter * Checks if is outdated. * * @return true, if is outdated - * @throws Exception + * @throws XidynException * the exception */ - public boolean isOutdated() throws Exception; + public boolean isOutdated() throws XidynException; /** * Update. * - * @throws Exception + * @throws XidynException * the exception */ - public void update() throws Exception; + public void update() throws XidynException; } diff --git a/src/fr/devinsy/xidyn/presenters/PresenterFactory.java b/src/fr/devinsy/xidyn/presenters/PresenterFactory.java index 6043733..d213120 100644 --- a/src/fr/devinsy/xidyn/presenters/PresenterFactory.java +++ b/src/fr/devinsy/xidyn/presenters/PresenterFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2017 Christian Pierre MOMON + * Copyright (C) 2006-2018 Christian Pierre MOMON * * This file is part of Xidyn. * @@ -35,6 +35,8 @@ import fr.devinsy.xidyn.utils.cache.Cache; */ public class PresenterFactory { + private static Logger logger = LoggerFactory.getLogger(PresenterFactory.class); + /** * http://thecodersbreakfast.net/index.php?post/2008/02/25/26-de-la-bonne- * implementation-du-singleton-en-java @@ -44,8 +46,6 @@ public class PresenterFactory private final static PresenterFactory INSTANCE = new PresenterFactory(); } - private static Logger logger = LoggerFactory.getLogger(PresenterFactory.class); - private Cache cache; /** diff --git a/src/fr/devinsy/xidyn/presenters/PresenterUtils.java b/src/fr/devinsy/xidyn/presenters/PresenterUtils.java index ec782a3..6143a85 100644 --- a/src/fr/devinsy/xidyn/presenters/PresenterUtils.java +++ b/src/fr/devinsy/xidyn/presenters/PresenterUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2017 Christian Pierre MOMON + * Copyright (C) 2006-2018 Christian Pierre MOMON * * This file is part of Xidyn. * @@ -24,6 +24,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.w3c.dom.Document; +import fr.devinsy.xidyn.XidynException; import fr.devinsy.xidyn.data.TagDataListById; import fr.devinsy.xidyn.data.TagDataManager; @@ -49,10 +50,10 @@ public class PresenterUtils * @param data * the data * @return the string buffer - * @throws Exception + * @throws XidynException * the exception */ - public static StringBuffer dynamize(final Document doc, final TagDataListById data) throws Exception + public static StringBuffer dynamize(final Document doc, final TagDataListById data) throws XidynException { StringBuffer result; @@ -70,10 +71,10 @@ public class PresenterUtils * @param data * the data * @return the string buffer - * @throws Exception + * @throws XidynException * the exception */ - public static StringBuffer dynamize(final Document doc, final TagDataManager data) throws Exception + public static StringBuffer dynamize(final Document doc, final TagDataManager data) throws XidynException { StringBuffer result; @@ -89,10 +90,10 @@ public class PresenterUtils * @param source * the source * @return the string buffer - * @throws Exception + * @throws XidynException * the exception */ - public static StringBuffer dynamize(final File source) throws Exception + public static StringBuffer dynamize(final File source) throws XidynException { StringBuffer result; @@ -112,10 +113,10 @@ public class PresenterUtils * @param datas * the datas * @return the string buffer - * @throws Exception + * @throws XidynException * the exception */ - public static StringBuffer dynamize(final File source, final TagDataManager datas) throws Exception + public static StringBuffer dynamize(final File source, final TagDataManager datas) throws XidynException { StringBuffer result; @@ -128,18 +129,17 @@ public class PresenterUtils } /** - * Dynamize a string with HTML in, or with file path name in, or with URL - * in. + * Dynamize a string with HTML in, or with file path name in, or with URL in. * * @param source * the source * @param datas * the datas * @return the string buffer - * @throws Exception + * @throws XidynException * the exception */ - public static StringBuffer dynamize(final String source, final TagDataManager datas) throws Exception + public static StringBuffer dynamize(final String source, final TagDataManager datas) throws XidynException { StringBuffer result; diff --git a/src/fr/devinsy/xidyn/presenters/StringPresenter.java b/src/fr/devinsy/xidyn/presenters/StringPresenter.java index 7768729..471848d 100644 --- a/src/fr/devinsy/xidyn/presenters/StringPresenter.java +++ b/src/fr/devinsy/xidyn/presenters/StringPresenter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2017 Christian Pierre MOMON + * Copyright (C) 2006-2018 Christian Pierre MOMON * * This file is part of Xidyn. * @@ -24,6 +24,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.w3c.dom.Document; +import fr.devinsy.xidyn.XidynException; import fr.devinsy.xidyn.data.TagDataManager; import fr.devinsy.xidyn.utils.XidynUtils; @@ -61,7 +62,7 @@ public class StringPresenter implements Presenter * {@inheritDoc} */ @Override - public StringBuffer dynamize() throws Exception + public StringBuffer dynamize() throws XidynException { StringBuffer result; @@ -75,7 +76,7 @@ public class StringPresenter implements Presenter * {@inheritDoc} */ @Override - public StringBuffer dynamize(final TagDataManager data) throws Exception + public StringBuffer dynamize(final TagDataManager data) throws XidynException { StringBuffer result; @@ -89,7 +90,7 @@ public class StringPresenter implements Presenter String errorMessage = "source not defined"; logger.error(errorMessage); result = null; - throw new Exception(errorMessage); + throw new XidynException(errorMessage); } else { @@ -200,7 +201,7 @@ public class StringPresenter implements Presenter * {@inheritDoc} */ @Override - public boolean isOutdated() throws Exception + public boolean isOutdated() throws XidynException { boolean result; @@ -234,7 +235,7 @@ public class StringPresenter implements Presenter * @see fr.devinsy.xidyn.presenters.Presenter#update() */ @Override - public void update() throws Exception + public void update() throws XidynException { // Nothing to do. } diff --git a/src/fr/devinsy/xidyn/presenters/TranslatorPresenter.java b/src/fr/devinsy/xidyn/presenters/TranslatorPresenter.java index 9c9f829..e21ffe8 100644 --- a/src/fr/devinsy/xidyn/presenters/TranslatorPresenter.java +++ b/src/fr/devinsy/xidyn/presenters/TranslatorPresenter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2017 Christian Pierre MOMON + * Copyright (C) 2006-2018 Christian Pierre MOMON * * This file is part of Xidyn. * @@ -23,6 +23,7 @@ import java.util.Locale; import java.util.Map; import fr.devinsy.util.FileTools; +import fr.devinsy.xidyn.XidynException; import fr.devinsy.xidyn.data.TagDataManager; /** @@ -58,7 +59,7 @@ public class TranslatorPresenter implements Presenter * @see fr.devinsy.xidyn.presenters.Presenter#dynamize() */ @Override - public StringBuffer dynamize() throws Exception + public StringBuffer dynamize() throws XidynException { StringBuffer result; @@ -82,10 +83,10 @@ public class TranslatorPresenter implements Presenter * @param locale * the locale * @return the string buffer - * @throws Exception + * @throws XidynException * the exception */ - public StringBuffer dynamize(final Locale locale) throws Exception + public StringBuffer dynamize(final Locale locale) throws XidynException { StringBuffer result; @@ -113,10 +114,10 @@ public class TranslatorPresenter implements Presenter * @param language * the language * @return the string buffer - * @throws Exception + * @throws XidynException * the exception */ - public StringBuffer dynamize(final String language) throws Exception + public StringBuffer dynamize(final String language) throws XidynException { StringBuffer result; @@ -130,7 +131,7 @@ public class TranslatorPresenter implements Presenter * @see fr.devinsy.xidyn.presenters.Presenter#dynamize(fr.devinsy.xidyn.data.TagDataManager) */ @Override - public StringBuffer dynamize(final TagDataManager datas) throws Exception + public StringBuffer dynamize(final TagDataManager datas) throws XidynException { StringBuffer result; @@ -156,10 +157,10 @@ public class TranslatorPresenter implements Presenter * @param locale * the locale * @return the string buffer - * @throws Exception + * @throws XidynException * the exception */ - public StringBuffer dynamize(final TagDataManager datas, final Locale locale) throws Exception + public StringBuffer dynamize(final TagDataManager datas, final Locale locale) throws XidynException { StringBuffer result; @@ -189,10 +190,10 @@ public class TranslatorPresenter implements Presenter * @param language * the language * @return the string buffer - * @throws Exception + * @throws XidynException * the exception */ - public StringBuffer dynamize(final TagDataManager datas, final String language) throws Exception + public StringBuffer dynamize(final TagDataManager datas, final String language) throws XidynException { StringBuffer result; @@ -208,10 +209,10 @@ public class TranslatorPresenter implements Presenter * @param locale * the locale * @return the presenter - * @throws Exception + * @throws XidynException * the exception */ - public Presenter getPresenter(final Locale locale) throws Exception + public Presenter getPresenter(final Locale locale) throws XidynException { Presenter result; @@ -239,10 +240,10 @@ public class TranslatorPresenter implements Presenter * @param language * the language * @return the presenter - * @throws Exception + * @throws XidynException * the exception */ - public Presenter getPresenter(final String language) throws Exception + public Presenter getPresenter(final String language) throws XidynException { Presenter result; @@ -264,7 +265,7 @@ public class TranslatorPresenter implements Presenter } else { - throw new Exception("Undefined default language file."); + throw new XidynException("Undefined default language file."); } } else @@ -335,7 +336,7 @@ public class TranslatorPresenter implements Presenter * @see fr.devinsy.xidyn.presenters.Presenter#isOutdated() */ @Override - public boolean isOutdated() throws Exception + public boolean isOutdated() throws XidynException { return false; } @@ -346,10 +347,10 @@ public class TranslatorPresenter implements Presenter * @param locale * the locale * @return the string - * @throws Exception + * @throws XidynException * the exception */ - public String toString(final Locale locale) throws Exception + public String toString(final Locale locale) throws XidynException { String result; @@ -377,10 +378,10 @@ public class TranslatorPresenter implements Presenter * @param language * the language * @return the string - * @throws Exception + * @throws XidynException * the exception */ - public String toString(final String language) throws Exception + public String toString(final String language) throws XidynException { String result; @@ -402,7 +403,7 @@ public class TranslatorPresenter implements Presenter * @see fr.devinsy.xidyn.presenters.Presenter#update() */ @Override - public void update() throws Exception + public void update() throws XidynException { } } diff --git a/src/fr/devinsy/xidyn/presenters/URLPresenter.java b/src/fr/devinsy/xidyn/presenters/URLPresenter.java index 79da481..e52a8e8 100644 --- a/src/fr/devinsy/xidyn/presenters/URLPresenter.java +++ b/src/fr/devinsy/xidyn/presenters/URLPresenter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2017 Christian Pierre MOMON + * Copyright (C) 2006-2018 Christian Pierre MOMON * * This file is part of Xidyn. * @@ -25,6 +25,7 @@ import java.net.URL; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import fr.devinsy.xidyn.XidynException; import fr.devinsy.xidyn.data.TagDataManager; import fr.devinsy.xidyn.utils.XidynUtils; @@ -76,11 +77,11 @@ public class URLPresenter extends StringPresenter * No need to be synchronized. * * @return the string buffer - * @throws Exception + * @throws XidynException * the exception */ @Override - public StringBuffer dynamize() throws Exception + public StringBuffer dynamize() throws XidynException { StringBuffer result; @@ -100,11 +101,11 @@ public class URLPresenter extends StringPresenter * @param data * the data * @return the string buffer - * @throws Exception + * @throws XidynException * the exception */ @Override - public StringBuffer dynamize(final TagDataManager data) throws Exception + public StringBuffer dynamize(final TagDataManager data) throws XidynException { StringBuffer result; @@ -204,22 +205,28 @@ public class URLPresenter extends StringPresenter * @throws IOException */ @Override - public boolean isOutdated() throws Exception + public boolean isOutdated() throws XidynException { boolean result; - // - if (super.isOutdated()) + try { - result = true; + if (super.isOutdated()) + { + result = true; + } + else if (this.sourceTime == this.source.openConnection().getLastModified()) + { + result = true; + } + else + { + result = false; + } } - else if (this.sourceTime == this.source.openConnection().getLastModified()) + catch (IOException exception) { - result = true; - } - else - { - result = false; + throw new XidynException(exception); } // @@ -332,11 +339,11 @@ public class URLPresenter extends StringPresenter /** * No need to be synchronized. * - * @throws Exception + * @throws XidynException * the exception */ @Override - public void update() throws Exception + public void update() throws XidynException { // if (this.source == null) @@ -367,7 +374,7 @@ public class URLPresenter extends StringPresenter */ String errorMessage = "source file defined but not readable (" + this.source.toString() + ")"; logger.error(errorMessage); - throw new Exception(errorMessage); + throw new XidynException(errorMessage); } } } diff --git a/src/fr/devinsy/xidyn/utils/XidynUtils.java b/src/fr/devinsy/xidyn/utils/XidynUtils.java index af2bb9e..49f325d 100644 --- a/src/fr/devinsy/xidyn/utils/XidynUtils.java +++ b/src/fr/devinsy/xidyn/utils/XidynUtils.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2006-2017 Christian Pierre MOMON + * Copyright (C) 2006-2018 Christian Pierre MOMON * * This file is part of Xidyn. * @@ -43,6 +43,8 @@ import org.w3c.dom.NodeList; import org.xml.sax.InputSource; import org.xml.sax.SAXException; +import fr.devinsy.xidyn.XidynException; + /** * The Class XidynUtils. */ @@ -89,10 +91,10 @@ public class XidynUtils * @param source * the source * @return the document - * @throws Exception + * @throws XidynException * the exception */ - public static Document buildDom(final InputStream source) throws Exception + public static Document buildDom(final InputStream source) throws XidynException { Document result; @@ -129,7 +131,8 @@ public class XidynUtils if (errorHandler.hasError()) { // Most time, error is (with StringPresenter): - // "Error at line 1 : Document root element "html", must match DOCTYPE root "null". + // "Error at line 1 : Document root element "html", must match DOCTYPE root + // "null". // Error at line 1 : Document is invalid: no grammar found. // We ignore it. STU logger.debug(errorHandler.toString()); @@ -140,21 +143,21 @@ public class XidynUtils String errorMessage = "Parser configuration exception: " + exception.getMessage(); logger.error(errorMessage); result = null; - throw new Exception(errorMessage, exception); + throw new XidynException(errorMessage, exception); } catch (SAXException exception) { String errorMessage = "Error during SAX parsing: " + exception.getMessage(); logger.error(errorMessage); result = null; - throw new Exception(errorMessage, exception); + throw new XidynException(errorMessage, exception); } catch (IOException exception) { String errorMessage = "IOError during parsing." + exception.getMessage(); logger.error(errorMessage); result = null; - throw new Exception(errorMessage, exception); + throw new XidynException(errorMessage, exception); } // @@ -167,10 +170,10 @@ public class XidynUtils * @param source * the source * @return the document - * @throws Exception + * @throws XidynException * the exception */ - public static Document buildDom(final String source) throws Exception + public static Document buildDom(final String source) throws XidynException { Document result; @@ -207,7 +210,8 @@ public class XidynUtils if (errorHandler.hasError()) { // Most time, error is (with StringPresenter): - // "Error at line 1 : Document root element "html", must match DOCTYPE root "null". + // "Error at line 1 : Document root element "html", must match DOCTYPE root + // "null". // Error at line 1 : Document is invalid: no grammar found. // We ignore it. STU logger.debug(errorHandler.toString()); @@ -218,21 +222,21 @@ public class XidynUtils String errorMessage = "Parser configuration exception: " + exception.getMessage(); logger.error(errorMessage); result = null; - throw new Exception(errorMessage, exception); + throw new XidynException(errorMessage, exception); } catch (SAXException exception) { String errorMessage = "Error during SAX parsing: " + exception.getMessage(); logger.error(errorMessage); result = null; - throw new Exception(errorMessage, exception); + throw new XidynException(errorMessage, exception); } catch (IOException exception) { String errorMessage = "IOError during parsing." + exception.getMessage(); logger.error(errorMessage); result = null; - throw new Exception(errorMessage, exception); + throw new XidynException(errorMessage, exception); } // @@ -311,12 +315,11 @@ public class XidynUtils /** * This method extracts the string before the html tag. * - * A possible way is to use pattern searching for - * $(.*)<html>.*^. But if there is no html tag, all the - * source is read for nothing. + * A possible way is to use pattern searching for $(.*)<html>.*^. + * But if there is no html tag, all the source is read for nothing. * - * A best way is to analyze each < while it is a XML tag or a DOCTYPE tag - * or the <HTML> tag. + * A best way is to analyze each < while it is a XML tag or a DOCTYPE tag or + * the <HTML> tag. * * Uses cases: * @@ -327,8 +330,8 @@ public class XidynUtils * * @param source * the source - * @return the string before the html tag or null if no html - * tag found. So, "" if there is a html tag without doctype. + * @return the string before the html tag or null if no html tag + * found. So, "" if there is a html tag without doctype. */ public static String extractDoctype(final String source) { @@ -397,7 +400,7 @@ public class XidynUtils * @param source * the source * @return the document - * @throws Exception + * @throws XidynException * the exception */ public static Document fileToDom(final File source) throws Exception @@ -711,8 +714,8 @@ public class XidynUtils } /** - * Any ampersand lt;, ampersand gt; and ampersand amp; sequences in text - * nodes get read in as symbols. This method converts them back to entities. + * Any ampersand lt;, ampersand gt; and ampersand amp; sequences in text nodes + * get read in as symbols. This method converts them back to entities. * * @param source * String that is to have the entities restored.. @@ -773,10 +776,10 @@ public class XidynUtils * @param source * the source * @return the document - * @throws Exception + * @throws XidynException * the exception */ - public static Document urlToDom(final URL source) throws Exception + public static Document urlToDom(final URL source) throws XidynException { Document result; @@ -789,7 +792,7 @@ public class XidynUtils String errorMessage = "IOError during parsing." + exception.getMessage(); logger.error(errorMessage); result = null; - throw new Exception(errorMessage, exception); + throw new XidynException(errorMessage, exception); } // diff --git a/src/fr/devinsy/xidyn/views/CharterView.java b/src/fr/devinsy/xidyn/views/CharterView.java index abff1e7..57f2309 100644 --- a/src/fr/devinsy/xidyn/views/CharterView.java +++ b/src/fr/devinsy/xidyn/views/CharterView.java @@ -20,6 +20,8 @@ package fr.devinsy.xidyn.views; import java.util.Locale; +import fr.devinsy.xidyn.XidynException; + /** * The Interface CharterView. */ @@ -35,10 +37,10 @@ public interface CharterView extends View * @param content * the content * @return the html - * @throws Exception + * @throws XidynException * the exception */ - public StringBuffer getHtml(final Long userId, final Locale language, final CharSequence content) throws Exception; + public StringBuffer getHtml(final Long userId, final Locale language, final CharSequence content) throws XidynException; } // //////////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/src/fr/devinsy/xidyn/views/View.java b/src/fr/devinsy/xidyn/views/View.java index 3abc517..68efef6 100644 --- a/src/fr/devinsy/xidyn/views/View.java +++ b/src/fr/devinsy/xidyn/views/View.java @@ -18,6 +18,8 @@ */ package fr.devinsy.xidyn.views; +import fr.devinsy.xidyn.XidynException; + /** * The Interface View. */ @@ -27,10 +29,10 @@ public interface View * Gets the html. * * @return the html - * @throws Exception + * @throws XidynException * the exception */ - public StringBuffer getHtml() throws Exception; + public StringBuffer getHtml() throws XidynException; } diff --git a/src/fr/devinsy/xidyn/views/ViewCache.java b/src/fr/devinsy/xidyn/views/ViewCache.java new file mode 100644 index 0000000..9640ec2 --- /dev/null +++ b/src/fr/devinsy/xidyn/views/ViewCache.java @@ -0,0 +1,148 @@ +/* + * Copyright (C) 2006-2017 Christian Pierre MOMON + * + * This file is part of Xidyn. + * + * Xidyn is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Xidyn 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Xidyn. If not, see + */ +package fr.devinsy.xidyn.views; + +import java.util.HashMap; +import java.util.Map; + +import fr.devinsy.xidyn.XidynException; + +/** + * The Class ViewCache. + */ +public class ViewCache +{ + private Map cache; + + /** + * Instantiates a new view cache. + */ + public ViewCache() + { + this.cache = new HashMap(); + } + + /** + * Gets the HT ml. + * + * @param key + * the key + * @return the HT ml + * @throws XidynException + * the exception + */ + public String getHTMl(final String key) throws XidynException + { + String result; + + ViewCacheItem item = this.cache.get(key); + if (item == null) + { + result = null; + } + else + { + if (item.isDeprecated()) + { + item.update(); + } + + result = item.view().getHtml().toString(); + } + + // + return result; + } + + /** + * Gets the view. + * + * @param key + * the key + * @return the view + */ + public View getView(final String key) + { + View result; + + ViewCacheItem item = this.cache.get(key); + if (item == null) + { + result = null; + } + else + { + result = item.view(); + } + + // + return result; + } + + /** + * Checks if is empty. + * + * @return true, if is empty + */ + public boolean isEmpty() + { + boolean result; + + result = this.cache.isEmpty(); + + // + return result; + } + + /** + * Purge. + */ + public void purge() + { + for (ViewCacheItem item : this.cache.values()) + { + + } + } + + /** + * Put. + * + * @param view + * the view + * @param key + * the key + * @return the string + */ + public String put(final View view, final String key) + { + String result; + + ViewCacheItem item = new ViewCacheItem(view); + this.cache.put(key, item); + + // + result = item.html().toString(); + + // + return result; + } +} + +// //////////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/src/fr/devinsy/xidyn/views/ViewCacheItem.java b/src/fr/devinsy/xidyn/views/ViewCacheItem.java new file mode 100644 index 0000000..8d3cb0a --- /dev/null +++ b/src/fr/devinsy/xidyn/views/ViewCacheItem.java @@ -0,0 +1,175 @@ +/* + * Copyright (C) 2006-2017 Christian Pierre MOMON + * + * This file is part of Xidyn. + * + * Xidyn is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Xidyn 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Xidyn. If not, see + */ +package fr.devinsy.xidyn.views; + +import java.util.Date; + +/** + * The Class ViewCacheItem. + */ +public class ViewCacheItem +{ + private View view; + private long creationDate; + private long editionDate; + private long lastUseDate; + private StringBuffer html; + + /** + * Instantiates a new view cache item. + * + * @param source + * the source + */ + public ViewCacheItem(final View source) + { + this.view = source; + this.creationDate = time(); + update(); + this.editionDate = this.creationDate; + this.lastUseDate = this.creationDate; + } + + /** + * Creation date. + * + * @return the long + */ + public long creationDate() + { + long result; + + result = this.creationDate; + + // + return result; + } + + /** + * Edition date. + * + * @return the long + */ + public long editionDate() + { + long result; + + result = this.editionDate; + + // + return result; + } + + /** + * Html. + * + * @return the string buffer + */ + public StringBuffer html() + { + return this.html; + } + + /** + * Checks if is deprecated. + * + * @return true, if is deprecated + */ + public boolean isDeprecated() + { + boolean result; + + if ((this.view == null) || (this.html == null)) + { + result = true; + } + else + { + // TODO + // result = this.view.isOutdated(); + result = false; + } + + // + return result; + } + + /** + * Last use date. + * + * @return the long + */ + public long lastUseDate() + { + long result; + + result = this.lastUseDate; + + // + return result; + } + + /** + * Last use time. + * + * @return the long + */ + public long lastUseTime() + { + return this.lastUseDate; + } + + /** + * Update. + */ + public void update() + { + this.editionDate = time(); + this.lastUseDate = this.editionDate; + // TODO + // this.html = this.view.getHtml(); + } + + /** + * View. + * + * @return the view + */ + public View view() + { + return this.view; + } + + /** + * Time. + * + * @return the long + */ + public static long time() + { + long result; + + result = new Date().getTime(); + + // + return result; + } +} + +// //////////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/src/fr/devinsy/xidyn/views/ViewProxy.java b/src/fr/devinsy/xidyn/views/ViewProxy.java new file mode 100644 index 0000000..f5bd7af --- /dev/null +++ b/src/fr/devinsy/xidyn/views/ViewProxy.java @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2006-2017 Christian Pierre MOMON + * + * This file is part of Xidyn. + * + * Xidyn is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Xidyn 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Xidyn. If not, see + */ +package fr.devinsy.xidyn.views; + +import java.io.Serializable; + +/** + * The Class ViewProxy. + */ +public class ViewProxy implements Serializable +{ + /** + * + */ + private static class Holder + { + private final static ViewProxy INSTANCE = new ViewProxy(); + } + + private static final long serialVersionUID = -5517300613792689510L; + + /** + * Instance. + * + * @return the view proxy + */ + public ViewProxy instance() + { + return Holder.INSTANCE; + } + + /** + * http://thecodersbreakfast.net/index.php?post/2008/02/25/26-de-la-bonne- + * implementation-du-singleton-en-java + * + * @return the object + */ + private Object readResolve() + { + return Holder.INSTANCE; + } +} + +// //////////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/test/fr/devinsy/xidyn/pages/PageFactoryTest.java b/test/fr/devinsy/xidyn/pages/PageFactoryTest.java index 2e27832..1a2ff03 100644 --- a/test/fr/devinsy/xidyn/pages/PageFactoryTest.java +++ b/test/fr/devinsy/xidyn/pages/PageFactoryTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2016,2017 Christian Pierre MOMON + * Copyright (C) 2016-2018 Christian Pierre MOMON * * This file is part of Xidyn. * @@ -37,7 +37,7 @@ public class PageFactoryTest public void before() { BasicConfigurator.configure(); - Logger.getRootLogger().setLevel(Level.ERROR); + Logger.getRootLogger().setLevel(Level.INFO); } /**