Added pages features.
This commit is contained in:
parent
03b1be9bb3
commit
7c3d2514ea
2 changed files with 353 additions and 0 deletions
107
src/fr/devinsy/xidyn/pages/Page.java
Normal file
107
src/fr/devinsy/xidyn/pages/Page.java
Normal file
|
@ -0,0 +1,107 @@
|
|||
/**
|
||||
* Copyright (C) 2016 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 <http://www.gnu.org/licenses/>
|
||||
*/
|
||||
package fr.devinsy.xidyn.pages;
|
||||
|
||||
import fr.devinsy.xidyn.data.TagDataManager;
|
||||
import fr.devinsy.xidyn.presenters.Presenter;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public class Page extends TagDataManager
|
||||
{
|
||||
private Presenter presenter;
|
||||
private StringBuffer lastDynamize;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public Page(final Presenter presenter)
|
||||
{
|
||||
super();
|
||||
|
||||
if (presenter == null)
|
||||
{
|
||||
throw new IllegalArgumentException("Null parameter.");
|
||||
}
|
||||
else
|
||||
{
|
||||
this.presenter = presenter;
|
||||
this.lastDynamize = null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public StringBuffer dynamize() throws Exception
|
||||
{
|
||||
StringBuffer result;
|
||||
|
||||
this.lastDynamize = this.presenter.dynamize(this);
|
||||
|
||||
result = this.lastDynamize;
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public boolean isComplete()
|
||||
{
|
||||
boolean result;
|
||||
|
||||
if (this.lastDynamize == null)
|
||||
{
|
||||
result = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
result = true;
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws Exception
|
||||
*/
|
||||
public StringBuffer lastVersion() throws Exception
|
||||
{
|
||||
StringBuffer result;
|
||||
|
||||
if ((this.lastDynamize == null) || (this.presenter.isOutdated()))
|
||||
{
|
||||
dynamize();
|
||||
}
|
||||
|
||||
result = this.lastDynamize;
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
// ////////////////////////////////////////////////////////////////////////
|
246
src/fr/devinsy/xidyn/pages/PageFactory.java
Normal file
246
src/fr/devinsy/xidyn/pages/PageFactory.java
Normal file
|
@ -0,0 +1,246 @@
|
|||
/**
|
||||
* Copyright (C) 2016 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 <http://www.gnu.org/licenses/>
|
||||
*/
|
||||
package fr.devinsy.xidyn.pages;
|
||||
|
||||
import java.io.File;
|
||||
import java.net.URL;
|
||||
|
||||
import org.w3c.dom.Document;
|
||||
|
||||
import fr.devinsy.util.strings.StringListUtils;
|
||||
import fr.devinsy.xidyn.presenters.PresenterFactory;
|
||||
import fr.devinsy.xidyn.utils.cache.Cache;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Christian Pierre MOMON (christian.momon@devinsy.fr)
|
||||
*/
|
||||
public class PageFactory
|
||||
{
|
||||
/**
|
||||
* http://thecodersbreakfast.net/index.php?post/2008/02/25/26-de-la-bonne-
|
||||
* implementation-du-singleton-en-java
|
||||
*
|
||||
*/
|
||||
private static class SingletonHolder
|
||||
{
|
||||
private final static PageFactory INSTANCE = new PageFactory();
|
||||
}
|
||||
|
||||
private Cache<Page> cache;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private PageFactory()
|
||||
{
|
||||
this.cache = new Cache<Page>();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param source
|
||||
* @param parameters
|
||||
* @return
|
||||
*/
|
||||
public Page get(final Document source)
|
||||
{
|
||||
Page result;
|
||||
|
||||
result = new Page(PresenterFactory.instance().get(source));
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param source
|
||||
* @param parameters
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public Page get(final Document source, final String... keys)
|
||||
{
|
||||
Page result;
|
||||
|
||||
String key = StringListUtils.toStringSeparatedBy(keys, "-").toString();
|
||||
|
||||
result = this.cache.get(key);
|
||||
if (result == null)
|
||||
{
|
||||
result = get(source);
|
||||
this.cache.put(key, result);
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param source
|
||||
* @param parameters
|
||||
* @return
|
||||
*/
|
||||
public Page get(final File source)
|
||||
{
|
||||
Page result;
|
||||
|
||||
result = new Page(PresenterFactory.instance().get(source));
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param source
|
||||
* @param parameters
|
||||
* @return
|
||||
*/
|
||||
public Page get(final File source, final String... keys)
|
||||
{
|
||||
Page result;
|
||||
|
||||
String key = StringListUtils.toStringSeparatedBy(keys, "-").toString();
|
||||
|
||||
result = this.cache.get(key);
|
||||
if (result == null)
|
||||
{
|
||||
result = get(source);
|
||||
this.cache.put(key, result);
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param source
|
||||
* @param parameters
|
||||
* @return
|
||||
*/
|
||||
public Page get(final String source)
|
||||
{
|
||||
Page result;
|
||||
|
||||
result = new Page(PresenterFactory.instance().get(source));
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param source
|
||||
* @param parameters
|
||||
* @return
|
||||
*/
|
||||
public Page get(final String source, final String... keys)
|
||||
{
|
||||
Page result;
|
||||
|
||||
String key = StringListUtils.toStringSeparatedBy(keys, "-").toString();
|
||||
|
||||
result = this.cache.get(key);
|
||||
if (result == null)
|
||||
{
|
||||
result = get(source);
|
||||
this.cache.put(key, result);
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param source
|
||||
* @param parameters
|
||||
* @return
|
||||
*/
|
||||
public Page get(final URL source)
|
||||
{
|
||||
Page result;
|
||||
|
||||
result = new Page(PresenterFactory.instance().get(source));
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param source
|
||||
* @param parameters
|
||||
* @return
|
||||
*/
|
||||
public Page get(final URL source, final String... keys)
|
||||
{
|
||||
Page result;
|
||||
|
||||
String key = StringListUtils.toStringSeparatedBy(keys, "-").toString();
|
||||
|
||||
result = this.cache.get(key);
|
||||
if (result == null)
|
||||
{
|
||||
result = get(source);
|
||||
this.cache.put(key, result);
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public void clear()
|
||||
{
|
||||
this.cache.clear();
|
||||
PresenterFactory.instance().clear();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public int size()
|
||||
{
|
||||
int result;
|
||||
|
||||
result = this.cache.size();
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static PageFactory instance()
|
||||
{
|
||||
return SingletonHolder.INSTANCE;
|
||||
}
|
||||
}
|
||||
|
||||
// ////////////////////////////////////////////////////////////////////////
|
Loading…
Reference in a new issue