/*******************************************************************************
* Copyright (c) 2014 Open Door Logistics (www.opendoorlogistics.com)
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v3
* which accompanies this distribution, and is available at http://www.gnu.org/licenses/lgpl.txt
******************************************************************************/
package com.opendoorlogistics.core;
import java.io.File;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;
import java.util.logging.StreamHandler;
import com.opendoorlogistics.core.components.ODLGlobalComponents;
import com.opendoorlogistics.core.components.UpdateQueryComponent;
import com.opendoorlogistics.core.tables.io.PoiIO;
final public class InitialiseCore {
private static boolean initialised = false;
private static Logger logger ;
public synchronized static void initialise() {
if (!initialised) {
try {
initialiseLogging();
logger.info("Reading properties");
AppProperties.getKeys();
logger.info("Searching for components");
ODLGlobalComponents.register(new UpdateQueryComponent());
logger.info("Initialising POI submodule");
PoiIO.initPOI();
} catch (Exception e) {
e.printStackTrace();
}
initialised = true;
}
}
private static void initialiseLogging() {
File configFile = new File(AppConstants.ODL_LOGGING_CONFIG);
if(configFile.exists()){
Properties p = System.getProperties();
if(p.containsKey("java.util.logging.config.class")){
p.remove("java.util.logging.config.class");
}
p.setProperty("java.util.logging.config.file", configFile.getAbsolutePath());
try {
LogManager.getLogManager().readConfiguration();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
else{
class StdLogger extends StreamHandler {
private java.util.logging.Formatter formatter = new SimpleFormatter();
@Override
public void publish(LogRecord record) {
// Only print to error by default if its an error
if (record.getLevel().intValue() < Level.WARNING.intValue()){
System.out.println(formatter.formatMessage(record));
}
else{
System.err.println(formatter.format(record));
}
}
}
java.util.logging.LogManager.getLogManager().reset();
java.util.logging.Logger.getLogger("").addHandler(new StdLogger());
}
logger= Logger.getLogger(InitialiseCore.class.getName());
logger.info("Initialised ODL Studio core logging");
}
public static void main(String[] args) {
initialise();
}
}