/* * Sakuli - Testing and Monitoring-Tool for Websites and common UIs. * * Copyright 2013 - 2015 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.sakuli.datamodel.properties; import org.sakuli.exceptions.SakuliInitException; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import java.io.File; import java.io.FileNotFoundException; import java.nio.file.Path; import java.nio.file.Paths; /** * @author tschneck Date: 09.05.14 */ @Component public class SakuliProperties extends AbstractProperties { public static final String SAKULI_PROPERTIES_FILE_APPENDER = File.separator + "sakuli.properties"; public static final String SAKULI_DEFAULT_PROPERTIES_FILE_APPENDER = File.separator + "sakuli-default.properties"; public static final String SAKULI_HOME_FOLDER = "sakuli.home.folder"; public static final String SUPPRESS_RESUMED_EXCEPTIONS = "sakuli.exception.suppressResumedExceptions"; public static final String JAVASCRIPT_ENGINE = "sakuli.javascript.engine"; public static final String LOG_FOLDER = "sakuli.log.folder"; public static final String LOG_MAX_AGE = "sakuli.log.maxAge"; public static final String LOG_PATTERN = "sakuli.log.pattern"; public static final String LOG_LEVEL_SAKULI = "log.level.sakuli"; public static final String LOG_LEVEL_SAHI = "log.level.sahi"; public static final String LOG_LEVEL_SIKULI = "log.level.sikuli"; public static final String LOG_LEVEL_SPRING = "log.level.spring"; public static final String LOG_LEVEL_ROOT = "log.level.root"; public static final String FORWARDER_TEMPLATE_FOLDER = "sakuli.forwarder.template.folder"; public static final String CONFIG_FOLDER_APPEDER = File.separator + "config"; public static final String LIBS_FOLDER_APPEDER = File.separator + "libs"; public static final String JS_LIB_FOLDER_APPEDER = LIBS_FOLDER_APPEDER + File.separator + "js"; // have to be the common/libs older, so that {@link TextRecognizer} can add "tessdata" to the path! public static final String TESSDATA_LIB_FOLDER_APPEDER = LIBS_FOLDER_APPEDER; private static final boolean SUPPRESS_RESUMED_EXCEPTIONS_DEFAULT = false; private static final boolean JAVASCRIPT_ENGINE_DEFAULT = true; private static final int LOG_MAX_AGE_DEFAULT = 14; private static final String MAX_AGE_GREATER_ZERO = "Property '" + LOG_MAX_AGE + "' have to be greater then 0, please check your 'sakuli.properties' file!"; @Value("${" + SAKULI_HOME_FOLDER + "}") private String sakuliHomeFolderPropertyValue; private Path sakuliHomeFolder; @Value("${" + SUPPRESS_RESUMED_EXCEPTIONS + ":" + SUPPRESS_RESUMED_EXCEPTIONS_DEFAULT + "}") private boolean suppressResumedExceptions; @Value("${" + JAVASCRIPT_ENGINE + ":" + JAVASCRIPT_ENGINE_DEFAULT + "}") private boolean loadJavaScriptEngine; @Value("${" + LOG_FOLDER + "}") private String logFolderPropertyValue; @Value("${" + LOG_MAX_AGE + ":" + LOG_MAX_AGE_DEFAULT + "}") private int logMaxAge; private Path logFolder; @Value("${" + LOG_PATTERN + "}") private String logPattern; @Value("${" + LOG_LEVEL_SAKULI + ":}") private String logLevelSakuli; @Value("${" + LOG_LEVEL_SAHI + ":}") private String logLevelSahi; @Value("${" + LOG_LEVEL_SIKULI + ":}") private String logLevelSikuli; @Value("${" + LOG_LEVEL_SPRING + ":}") private String logLevelSpring; @Value("${" + LOG_LEVEL_ROOT + ":}") private String logLevelRoot; @Value("${" + FORWARDER_TEMPLATE_FOLDER + ":}") private String forwarderTemplateFolder; private Path configFolder; private Path jsLibFolder; private Path tessDataLibFolder; @PostConstruct public void initFolders() throws FileNotFoundException, SakuliInitException { sakuliHomeFolder = Paths.get(sakuliHomeFolderPropertyValue).normalize(); checkFolders(sakuliHomeFolder); configFolder = Paths.get(sakuliHomeFolder + CONFIG_FOLDER_APPEDER); checkFolders(configFolder); jsLibFolder = Paths.get(sakuliHomeFolder + JS_LIB_FOLDER_APPEDER); checkFolders(jsLibFolder); tessDataLibFolder = Paths.get(sakuliHomeFolder + TESSDATA_LIB_FOLDER_APPEDER); checkFolders(tessDataLibFolder); //need not to be checked, will be generated by the logger if it is missing logFolder = Paths.get(logFolderPropertyValue).normalize(); if (logMaxAge <= 0) { throw new SakuliInitException(MAX_AGE_GREATER_ZERO); } } public String getSakuliHomeFolderPropertyValue() { return sakuliHomeFolderPropertyValue; } public void setSakuliHomeFolderPropertyValue(String sakuliHomeFolderPropertyValue) { this.sakuliHomeFolderPropertyValue = sakuliHomeFolderPropertyValue; } public Path getSakuliHomeFolder() { return sakuliHomeFolder; } public void setSakuliHomeFolder(Path sakuliHomeFolder) { this.sakuliHomeFolder = sakuliHomeFolder; } public boolean isSuppressResumedExceptions() { return suppressResumedExceptions; } public void setSuppressResumedExceptions(boolean suppressResumedExceptions) { this.suppressResumedExceptions = suppressResumedExceptions; } public String getLogFolderPropertyValue() { return logFolderPropertyValue; } public void setLogFolderPropertyValue(String logFolderPropertyValue) { this.logFolderPropertyValue = logFolderPropertyValue; } public int getLogMaxAge() { return logMaxAge; } public void setLogMaxAge(int logMaxAge) { this.logMaxAge = logMaxAge; } public Path getLogFolder() { return logFolder; } public void setLogFolder(Path logFolder) { this.logFolder = logFolder; } public String getLogPattern() { return logPattern; } public void setLogPattern(String logPattern) { this.logPattern = logPattern; } public Path getConfigFolder() { return configFolder; } public void setConfigFolder(Path configFolder) { this.configFolder = configFolder; } public Path getJsLibFolder() { return jsLibFolder; } public void setJsLibFolder(Path jsLibFolder) { this.jsLibFolder = jsLibFolder; } public Path getTessDataLibFolder() { return tessDataLibFolder; } public void setTessDataLibFolder(Path tessDataLibFolder) { this.tessDataLibFolder = tessDataLibFolder; } public String getLogLevelSakuli() { return logLevelSakuli; } public void setLogLevelSakuli(String logLevelSakuli) { this.logLevelSakuli = logLevelSakuli; } public String getLogLevelSahi() { return logLevelSahi; } public void setLogLevelSahi(String logLevelSahi) { this.logLevelSahi = logLevelSahi; } public String getLogLevelSpring() { return logLevelSpring; } public void setLogLevelSpring(String logLevelSpring) { this.logLevelSpring = logLevelSpring; } public String getLogLevelSikuli() { return logLevelSikuli; } public void setLogLevelSikuli(String logLevelSikuli) { this.logLevelSikuli = logLevelSikuli; } public String getLogLevelRoot() { return logLevelRoot; } public void setLogLevelRoot(String logLevelRoot) { this.logLevelRoot = logLevelRoot; } public boolean isLoadJavaScriptEngine() { return loadJavaScriptEngine; } public void setLoadJavaScriptEngine(boolean loadJavaScriptEngine) { this.loadJavaScriptEngine = loadJavaScriptEngine; } public String getForwarderTemplateFolder() { return forwarderTemplateFolder; } }