aboutsummaryrefslogtreecommitdiff
path: root/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/advancedlogging/StatisticLogger.java
diff options
context:
space:
mode:
authorThomas Lenz <tlenz@iaik.tugraz.at>2013-09-24 11:39:46 +0200
committerThomas Lenz <tlenz@iaik.tugraz.at>2013-09-24 11:39:46 +0200
commitcd1a5f3b69f38c1aa7bad2826f2be2df45f75346 (patch)
tree493326f3eace0b173d15bb7fe4627bfdb7914ce6 /id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/advancedlogging/StatisticLogger.java
parent816bd3d051a7c8fc7aba535361550d62fb5af2cc (diff)
downloadmoa-id-spss-cd1a5f3b69f38c1aa7bad2826f2be2df45f75346.tar.gz
moa-id-spss-cd1a5f3b69f38c1aa7bad2826f2be2df45f75346.tar.bz2
moa-id-spss-cd1a5f3b69f38c1aa7bad2826f2be2df45f75346.zip
implement advanced statistic logger
Diffstat (limited to 'id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/advancedlogging/StatisticLogger.java')
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/advancedlogging/StatisticLogger.java150
1 files changed, 150 insertions, 0 deletions
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/advancedlogging/StatisticLogger.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/advancedlogging/StatisticLogger.java
new file mode 100644
index 000000000..18d0748af
--- /dev/null
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/advancedlogging/StatisticLogger.java
@@ -0,0 +1,150 @@
+package at.gv.egovernment.moa.id.advancedlogging;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.util.Date;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Unmarshaller;
+
+import org.apache.commons.lang3.StringEscapeUtils;
+
+import at.gv.e_government.reference.namespace.mandates._20040701_.Mandate;
+import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
+import at.gv.egovernment.moa.id.commons.db.StatisticLogDBUtils;
+import at.gv.egovernment.moa.id.commons.db.dao.statistic.StatisticLog;
+import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
+import at.gv.egovernment.moa.id.config.ConfigurationException;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.moduls.IRequest;
+import at.gv.egovernment.moa.id.util.client.mis.simple.MISMandate;
+import at.gv.egovernment.moa.logging.Logger;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+public class StatisticLogger {
+
+ private static StatisticLogger instance;
+
+ private boolean isAktive = false;
+
+ public static StatisticLogger getInstance() {
+ if (instance == null)
+ instance = new StatisticLogger();
+
+ return instance;
+ }
+
+ private StatisticLogger() {
+ try {
+ AuthConfigurationProvider config = AuthConfigurationProvider.getInstance();
+
+ if (config != null)
+ isAktive = config.isAdvancedLoggingActive();
+
+ } catch (ConfigurationException e) {
+ Logger.error("StatisticLogger can not be inizialized", e);
+ }
+ }
+
+ public void logSuccessOperation(IRequest protocolRequest, AuthenticationSession moasession, boolean isSSOSession) {
+
+ if ( isAktive && protocolRequest != null && moasession != null) {
+ StatisticLog dblog = new StatisticLog();
+
+ //set actual date and time
+ dblog.setTimestamp(new Date());
+
+ //log basic AuthInformation
+ dblog.setBkuurl(moasession.getBkuURL());
+ dblog.setOaurlprefix(protocolRequest.getOAURL());
+ dblog.setProtocoltype(protocolRequest.requestedModule());
+ dblog.setProtocolsubtype(protocolRequest.requestedAction());
+ dblog.setSsosession(isSSOSession);
+ dblog.setBusinessservice(moasession.getBusinessService());
+
+
+ //log MandateInforamtion
+ if (moasession.getUseMandate()) {
+ dblog.setMandatelogin(moasession.getUseMandate());
+
+ MISMandate mandate = moasession.getMISMandate();
+ if (mandate != null) {
+
+ if (MiscUtil.isNotEmpty(mandate.getProfRep()))
+ dblog.setMandatetype(mandate.getProfRep());
+
+ else {
+ try {
+ InputStream is = new ByteArrayInputStream(mandate.getMandate());
+
+ JAXBContext jc = JAXBContext.newInstance(Mandate.class);
+ Unmarshaller u = jc.createUnmarshaller();
+ Object mismandateobj = u.unmarshal(is);
+
+ if (mismandateobj != null && mismandateobj instanceof Mandate) {
+ Mandate mismandate = (Mandate) mismandateobj;
+ dblog.setMandatetype(mismandate.getAnnotation());
+
+ } else {
+ Logger.warn("Advancted logging can not unmarshall MISMandate");
+ }
+
+ } catch (JAXBException e) {
+ Logger.warn("Advancted logging can not parse mandate.", e);
+ }
+ }
+ }
+ }
+
+ try {
+ StatisticLogDBUtils.saveOrUpdate(dblog);
+
+ } catch (MOADatabaseException e) {
+ Logger.warn("Statistic Log can not be stored into Database", e);
+ }
+ }
+ }
+
+ public void logErrorOperation(String errorMessage) {
+ if ( isAktive && MiscUtil.isNotEmpty(errorMessage) ) {
+ StatisticLog dblog = new StatisticLog();
+
+ //set actual date and time
+ dblog.setTimestamp(new Date());
+
+ dblog.setErrormessage(StringEscapeUtils.escapeXml(errorMessage));
+
+ try {
+ StatisticLogDBUtils.saveOrUpdate(dblog);
+
+ } catch (MOADatabaseException e) {
+ Logger.warn("Statistic Log can not be stored into Database", e);
+ }
+ }
+
+ }
+
+ public void logErrorOperation(Throwable throwable, IRequest errorRequest) {
+
+ if (isAktive && throwable != null && errorRequest != null) {
+ StatisticLog dblog = new StatisticLog();
+
+ //set actual date and time
+ dblog.setTimestamp(new Date());
+
+ dblog.setOaurlprefix(errorRequest.getOAURL());
+ dblog.setProtocoltype(errorRequest.requestedModule());
+ dblog.setProtocolsubtype(errorRequest.requestedAction());
+ dblog.setErrormessage(StringEscapeUtils.escapeXml(throwable.getMessage()));
+
+ try {
+ StatisticLogDBUtils.saveOrUpdate(dblog);
+
+ } catch (MOADatabaseException e) {
+ Logger.warn("Statistic Log can not be stored into Database", e);
+ }
+ }
+ }
+
+}