package com.qprogramming.tasq.manage;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.lang.reflect.Field;
@Service
public class AppService {
public static final String EMAIL_HOST = "emailHost";
public static final String EMAIL_PORT = "emailPort";
public static final String EMAIL_USERNAME = "emailUsername";
public static final String EMAIL_PASS = "emailPass";
public static final String EMAIL_SMTPAUTH = "emailSmtpAuth";
public static final String EMAIL_SMTPSTARTTLS = "emailSmtpStarttls";
public static final String EMAIL_ENCODING = "emailEncoding";
public static final String EMAIL_DOMAIN = "emailDomain";
public static final String DEFAULTLANG = "defaultLang";
public static final String TASQROOTDIR = "tasqRootDir";
public static final String URL = "url";
public static final String DEFAULTROLE = "defaultRole";
public static final String APPLICATION_NAME = "applicationName";
private static final Logger LOG = LoggerFactory.getLogger(AppService.class);
private String url;
@Value("${email.host}")
private String emailHost;
@Value("${email.port}")
private String emailPort;
@Value("${email.username}")
private String emailUsername;
@Value("${email.pass}")
private String emailPass;
@Value("${email.smtp.auth}")
private String emailSmtpAuth;
@Value("${email.smtp.starttls}")
private String emailSmtpStarttls;
@Value("${email.encoding}")
private String emailEncoding;
@Value("${email.domain}")
private String emailDomain;
@Value("${default.locale}")
private String defaultLang;
@Value("${default.role}")
private String defaultRole;
@Value("${application.name}")
private String applicationName;
@Value("${home.directory}")
private String tasqRootDir;
private PropertyRepository propRepo;
@Autowired
public AppService(PropertyRepository propRepo) {
this.propRepo = propRepo;
}
public String getProperty(String key) {
Property prop = propRepo.findByKey(key);
if (prop == null) {
try {
Field f = AppService.class.getDeclaredField(key);
f.setAccessible(true);
return (String) f.get(this);
} catch (IllegalArgumentException | IllegalAccessException | NoSuchFieldException | SecurityException e) {
LOG.error("Error while getting property ", e);
}
}
return prop != null ? prop.getValue() : StringUtils.EMPTY;
}
public void setProperty(String key, String value) {
Property prop = propRepo.findByKey(key);
if (prop == null) {
prop = new Property(key);
}
prop.setValue(value);
propRepo.save(prop);
}
}