package org.jblooming.waf.settings;
import org.jblooming.security.Permission;
import org.jblooming.security.Permissions;
import org.jblooming.tracer.Tracer;
import org.jblooming.utilities.HashTable;
import org.jblooming.utilities.StringUtilities;
import org.jblooming.waf.ScreenBasic;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.PageContext;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Map;
import java.util.Properties;
public abstract class ApplicationSupport implements Application {
String version = null;
protected ApplicationSupport(Permissions permissionsImpl) {
this(PlatformConfiguration.defaultOperatorSubclass, permissionsImpl);
}
protected ApplicationSupport(Class defaultOperatoSubClass, Permissions permissionsImpl) {
PlatformConfiguration.defaultOperatorSubclass = defaultOperatoSubClass;
if (permissionsImpl != null)
Permission.addPermissions(permissionsImpl, permissions);
}
protected ApplicationSupport(Class defaultOperatoSubClass, Permissions[] permissionsImpl) {
PlatformConfiguration.defaultOperatorSubclass = defaultOperatoSubClass;
if (permissionsImpl != null) {
for (int i = 0; i < permissionsImpl.length; i++) {
Permissions permissions1 = permissionsImpl[i];
Permission.addPermissions(permissions1, permissions);
}
}
}
protected Map<String, Permission> permissions = new HashTable();
public Map<String, Permission> getPermissions() {
return permissions;
}
public Class getDefaultScreenClass() {
return getDefaultScreenInstance().getClass();
}
public ScreenBasic getDefaultScreenInstance() {
return null;
}
public void configureNeedingPageContext(PageContext pageContext) {
}
public void configBeforePerform(HttpServletRequest request) {
}
public void sessionStateValueBound() {
}
public void sessionStateValueUnbound() {
}
public void applicationDestroy() {
// in specific applications styop scheduler etc.
}
public String getVersion() {
if (version == null) {
Properties props = new Properties();
try {
String rootFolder = StringUtilities.replaceAllNoRegex(getRootFolder(), "/", File.separator);
InputStream is = new FileInputStream(
ApplicationState.webAppFileSystemRootPath +
File.separator + rootFolder + File.separator + "settings" + File.separator + getName() + ".number");
props.load(is);
version = props.getProperty("version");
} catch (Throwable t) {
version = "ERROR";
Tracer.platformLogger.error(t);
}
}
return version;
}
}