SystemInformation
Hinzugefügt: * Klasse SystemInformation * Ausgabe der Informationen als bebop:systemInformation Fehlt: * Auslesen der Informationen aus einer Properties-Datei * Automatisches Erzeugen der Properties-Datei durch build-skipt git-svn-id: https://svn.libreccm.org/ccm/trunk@2284 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
4064358881
commit
d57fe474a8
|
|
@ -30,6 +30,7 @@ import com.arsdigita.developersupport.DeveloperSupport;
|
||||||
import com.arsdigita.kernel.Kernel;
|
import com.arsdigita.kernel.Kernel;
|
||||||
import com.arsdigita.profiler.Profiler;
|
import com.arsdigita.profiler.Profiler;
|
||||||
import com.arsdigita.util.Assert;
|
import com.arsdigita.util.Assert;
|
||||||
|
import com.arsdigita.util.SystemInformation;
|
||||||
import com.arsdigita.xml.Document;
|
import com.arsdigita.xml.Document;
|
||||||
import com.arsdigita.xml.Element;
|
import com.arsdigita.xml.Element;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
@ -42,7 +43,6 @@ import java.util.Iterator;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
|
||||||
import java.util.SortedMap;
|
import java.util.SortedMap;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
import javax.servlet.ServletException;
|
import javax.servlet.ServletException;
|
||||||
|
|
@ -175,10 +175,6 @@ public class Page extends BlockStylable implements Container {
|
||||||
* URL and use the HttpSession for the rest of the page state.
|
* URL and use the HttpSession for the rest of the page state.
|
||||||
*/
|
*/
|
||||||
private boolean m_useHttpSession = false;
|
private boolean m_useHttpSession = false;
|
||||||
/**
|
|
||||||
* HasMap for page generator information.
|
|
||||||
*/
|
|
||||||
private HashMap<String, String> m_pageGenerator = new HashMap<String, String>();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns
|
* Returns
|
||||||
|
|
@ -566,7 +562,7 @@ public class Page extends BlockStylable implements Container {
|
||||||
exportAttributes(page);
|
exportAttributes(page);
|
||||||
|
|
||||||
/* Generator information */
|
/* Generator information */
|
||||||
exportPageGenerator(page);
|
exportSystemInformation(page);
|
||||||
|
|
||||||
Element title = page.newChildElement("bebop:title", BEBOP_XML_NS);
|
Element title = page.newChildElement("bebop:title", BEBOP_XML_NS);
|
||||||
title.setText(getTitle(ps).getLabel(ps));
|
title.setText(getTitle(ps).getLabel(ps));
|
||||||
|
|
@ -892,28 +888,6 @@ public class Page extends BlockStylable implements Container {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final protected void addPageGeneratorInformation(String key, String value) {
|
|
||||||
if (key != null && !key.isEmpty()) {
|
|
||||||
m_pageGenerator.put(key, value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
final protected String getPageGeneratorInformation(String key) {
|
|
||||||
if (key != null && !key.isEmpty()) {
|
|
||||||
return m_pageGenerator.get(key);
|
|
||||||
} else {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
final protected String removePageGeneratorInformation(String key) {
|
|
||||||
if (key != null && !key.isEmpty()) {
|
|
||||||
return m_pageGenerator.remove(key);
|
|
||||||
} else {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Export page generator information if set. The m_pageGenerator is a
|
* Export page generator information if set. The m_pageGenerator is a
|
||||||
* HashMap containing the information as key value. In general this should
|
* HashMap containing the information as key value. In general this should
|
||||||
|
|
@ -923,11 +897,12 @@ public class Page extends BlockStylable implements Container {
|
||||||
*
|
*
|
||||||
* @pre m_pageGenerator != null && !m_pageGenerator.isEmpty()
|
* @pre m_pageGenerator != null && !m_pageGenerator.isEmpty()
|
||||||
*/
|
*/
|
||||||
final protected void exportPageGenerator(Element page) {
|
final protected void exportSystemInformation(Element page) {
|
||||||
if (m_pageGenerator != null && !m_pageGenerator.isEmpty()) {
|
SystemInformation sysInfo = SystemInformation.getInstance();
|
||||||
Element gen = page.newChildElement("bebop:pageGenerator", BEBOP_XML_NS);
|
if (!sysInfo.isEmpty()) {
|
||||||
|
Element gen = page.newChildElement("bebop:systemInformation", BEBOP_XML_NS);
|
||||||
|
|
||||||
Iterator<Map.Entry<String, String>> keyValues = ((Set<Map.Entry<String, String>>) m_pageGenerator.entrySet()).iterator();
|
Iterator<Map.Entry<String, String>> keyValues = sysInfo.iterator();
|
||||||
while (keyValues.hasNext()) {
|
while (keyValues.hasNext()) {
|
||||||
Map.Entry<String, String> entry = keyValues.next();
|
Map.Entry<String, String> entry = keyValues.next();
|
||||||
gen.addAttribute(entry.getKey(), entry.getValue());
|
gen.addAttribute(entry.getKey(), entry.getValue());
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,7 @@ import com.arsdigita.toolbox.CharsetEncodingProvider;
|
||||||
import com.arsdigita.ui.admin.Admin;
|
import com.arsdigita.ui.admin.Admin;
|
||||||
import com.arsdigita.ui.login.Login;
|
import com.arsdigita.ui.login.Login;
|
||||||
import com.arsdigita.ui.permissions.Permissions;
|
import com.arsdigita.ui.permissions.Permissions;
|
||||||
|
import com.arsdigita.util.SystemInformation;
|
||||||
import com.arsdigita.util.URLRewriter;
|
import com.arsdigita.util.URLRewriter;
|
||||||
import com.arsdigita.web.ApplicationType;
|
import com.arsdigita.web.ApplicationType;
|
||||||
import com.arsdigita.web.Host;
|
import com.arsdigita.web.Host;
|
||||||
|
|
@ -188,8 +189,8 @@ public class Initializer extends CompoundInitializer {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Set system informations
|
||||||
|
loadSystemInformation();
|
||||||
|
|
||||||
// register the document converters
|
// register the document converters
|
||||||
Converter converter = new PDFConverter();
|
Converter converter = new PDFConverter();
|
||||||
|
|
@ -228,4 +229,14 @@ public class Initializer extends CompoundInitializer {
|
||||||
s_log.info("Core init(DomainInitEvent) done");
|
s_log.info("Core init(DomainInitEvent) done");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void loadSystemInformation() {
|
||||||
|
SystemInformation sysInfo = SystemInformation.getInstance();
|
||||||
|
|
||||||
|
// Hardcoded for now
|
||||||
|
sysInfo.put("version", "2.1.0");
|
||||||
|
sysInfo.put("appname", "ScientificCMS");
|
||||||
|
sysInfo.put("apphomepage", "www.scientificcms.org");
|
||||||
|
sysInfo.lock();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,100 @@
|
||||||
|
/*
|
||||||
|
* To change this template, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
package com.arsdigita.util;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Sören Bernstein (quasimodo) <sbernstein@zes.uni-bremen.de>
|
||||||
|
*/
|
||||||
|
public class SystemInformation implements Lockable {
|
||||||
|
|
||||||
|
private Map<String, String> systemInformation = new HashMap<String, String>();
|
||||||
|
private boolean locked = false;
|
||||||
|
/**
|
||||||
|
* The one and only instance of this class
|
||||||
|
*/
|
||||||
|
private static final SystemInformation INSTANCE = new SystemInformation();
|
||||||
|
|
||||||
|
private SystemInformation() {
|
||||||
|
// Nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return The instance of this class.
|
||||||
|
*/
|
||||||
|
public static SystemInformation getInstance() {
|
||||||
|
return SystemInformation.INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Put system information into the map. If this instance is locked, this method
|
||||||
|
* throw an {@link AssertionError}.
|
||||||
|
*
|
||||||
|
* @param key Key for the Map. Also used as attribute name during output.
|
||||||
|
* @param value Value
|
||||||
|
* @throws IllegalArgumentException if key or value is null or empty
|
||||||
|
*/
|
||||||
|
final public void put(String key, String value) throws IllegalArgumentException {
|
||||||
|
if (key == null || key.isEmpty()) {
|
||||||
|
throw new IllegalArgumentException("Parameter key must not be null or empty.");
|
||||||
|
}
|
||||||
|
if (value == null || value.isEmpty()) {
|
||||||
|
throw new IllegalArgumentException("Parameter value must not be null or empty.");
|
||||||
|
}
|
||||||
|
// Test if instance is not locked
|
||||||
|
Assert.isUnlocked(this);
|
||||||
|
systemInformation.put(key, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get system informations by key.
|
||||||
|
*
|
||||||
|
* @param key Key for the map
|
||||||
|
* @return value for key
|
||||||
|
* @throws IllegalArgumentException if key is null or empty
|
||||||
|
*/
|
||||||
|
final public String get(String key) throws IllegalArgumentException {
|
||||||
|
if (key == null || key.isEmpty()) {
|
||||||
|
throw new IllegalArgumentException("Parameter key must not be null or empty.");
|
||||||
|
}
|
||||||
|
return systemInformation.get(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get iterator of this map.
|
||||||
|
*
|
||||||
|
* @return iterator of map
|
||||||
|
*/
|
||||||
|
final public Iterator<Map.Entry<String, String>> iterator() {
|
||||||
|
return ((Set<Map.Entry<String, String>>) systemInformation.entrySet()).iterator();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
final public boolean isEmpty() {
|
||||||
|
return systemInformation.isEmpty();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Lock this instance to prevent further changes.
|
||||||
|
*/
|
||||||
|
final public void lock() {
|
||||||
|
locked = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test, if this instance is locked.
|
||||||
|
* @return locked
|
||||||
|
*/
|
||||||
|
final public boolean isLocked() {
|
||||||
|
return locked;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue