package hu.sch.ejb; import hu.sch.domain.enums.ValuationPeriod; import hu.sch.domain.SystemAttribute; import hu.sch.domain.Semester; import hu.sch.util.config.Configuration; import hu.sch.services.SystemManagerLocal; import hu.sch.services.exceptions.NoSuchAttributeException; import java.util.Map; import javax.annotation.PostConstruct; import javax.ejb.Stateless; import javax.inject.Inject; import javax.persistence.EntityManager; import javax.persistence.NoResultException; import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * * @author hege */ @Stateless public class SystemManagerBean implements SystemManagerLocal { private static final Logger logger = LoggerFactory.getLogger(SystemManagerBean.class); // @Inject private Configuration config; private String showUserLink; private String baseLink; private String valuationLink; private String considerLink; // @PersistenceContext EntityManager em; @Inject MailManagerBean mailManager; @PostConstruct void init() { // TODO: github/#106: fix double domain // TODO: fix urls showUserLink = "https://" + config.getDomain() + "/profile/show/virid/"; baseLink = "https://" + config.getDomain() + "/korok/"; valuationLink = baseLink + "valuation"; considerLink = baseLink + "consider"; } @Override public String getAttributeValue(String attributeName) throws NoSuchAttributeException { try { SystemAttribute attr = getAttribute(attributeName); return attr.getAttributeValue(); } catch (NoResultException nre) { throw new NoSuchAttributeException(attributeName); } } private SystemAttribute getAttribute(String attributeName) { TypedQuery<SystemAttribute> q = em.createNamedQuery(SystemAttribute.findByAttributeName, SystemAttribute.class); q.setParameter("attributeName", attributeName); return q.getSingleResult(); } @Override public void setAttributeValue(String attributeName, String attributeValue) { SystemAttribute attr; try { attr = getAttribute(attributeName); } catch (Exception e) { attr = new SystemAttribute(); attr.setAttributeName(attributeName); } attr.setAttributeValue(attributeValue); em.merge(attr); } @Override public Semester getSzemeszter() { String s; Semester szemeszter = new Semester(); s = getAttributeValue(SystemAttribute.SEMESTER); szemeszter.setId(s); return szemeszter; } @Override public void setSzemeszter(Semester szemeszter) { setAttributeValue(SystemAttribute.SEMESTER, szemeszter.getId()); } @Override public ValuationPeriod getErtekelesIdoszak() { try { return ValuationPeriod.valueOf(getAttributeValue(SystemAttribute.VALUATION_PERIOD)); } catch (Exception any) { return ValuationPeriod.NINCSERTEKELES; } } @Override public void setErtekelesIdoszak(ValuationPeriod idoszak) { setAttributeValue(SystemAttribute.VALUATION_PERIOD, idoszak.toString()); } @Override public long getLastLogId() { final String lastLog = getAttributeValue(SystemAttribute.LAST_LOG); return Long.parseLong(lastLog); } @Override public void setLastLogId(long id) { setAttributeValue(SystemAttribute.LAST_LOG, String.valueOf(id)); } @Override public boolean getNewbieTime() { boolean ret; try { ret = Boolean.parseBoolean(getAttributeValue(SystemAttribute.NEWBIE_TIME)); } catch (NoSuchAttributeException nsae) { ret = false; } return ret; } @Override public void setNewbieTime(boolean newbieTime) { setAttributeValue(SystemAttribute.NEWBIE_TIME, Boolean.toString(newbieTime)); } /** * {@inheritDoc} */ @Override public void sendExceptionReportMail(final Map<SystemManagerLocal.EXC_REPORT_KEYS, String> params) { final String subject = MailManagerBean.getMailString(MailManagerBean.MAIL_SYSTEM_EXCEPTIONREPORT_SUBJECT); final String body = MailManagerBean.getMailString(MailManagerBean.MAIL_SYSTEM_EXCEPTIONREPORT_BODY); final Object[] args = new Object[]{ params.get(SystemManagerLocal.EXC_REPORT_KEYS.PAGE_NAME), params.get(SystemManagerLocal.EXC_REPORT_KEYS.PAGE_PATH), params.get(SystemManagerLocal.EXC_REPORT_KEYS.PAGE_PARAMS), params.get(SystemManagerLocal.EXC_REPORT_KEYS.REMOTE_USER), params.get(SystemManagerLocal.EXC_REPORT_KEYS.REMOTE_ADDRESS), params.get(SystemManagerLocal.EXC_REPORT_KEYS.EMAIL), params.get(SystemManagerLocal.EXC_REPORT_KEYS.VIRID), params.get(SystemManagerLocal.EXC_REPORT_KEYS.EXCEPTION) }; mailManager.sendEmail("jee-dev@sch.bme.hu", subject, String.format(body, args)); } @Override public String getShowUserLink() { return showUserLink; } @Override public String getBaseLink() { return baseLink; } @Override public String getValuationLink() { return valuationLink; } @Override public String getConsiderLink() { return considerLink; } }