/** * Copyright 1999-2009 The Pegadi Team * * 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.pegadi.server.log; import org.pegadi.model.Article; import org.pegadi.server.LogServer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcDaoSupport; import java.util.Date; import java.util.HashMap; import java.util.Map; public class LogServerImpl extends NamedParameterJdbcDaoSupport implements LogServer { Logger log = LoggerFactory.getLogger(getClass()); public void logSaveArticle(Article article) { if (article == null) { //huh - no article? log.error("Can't logsave a non-existing article."); } else { String sql = "INSERT INTO ArticleSaveLog (refArticle, name, refJournalist, refPhotographer, refPublication, description, " + "refStatus, refArticleType, wantedCharacters, wantedPages, refDepartment, characterCount, savetime) " + "VALUES(:article,:name,:journalist,:photographer,:publication,:description,:status,:type,:wantedchars,:wantedpages,:section,:charcount,:savetime)"; Map<String, Object> params = new HashMap<String, Object>(); params.put("article", article.getId()); if (article.getName() != null) params.put("name", article.getName()); else params.put("name", article.getName()); if (article.getJournalist() != null) params.put("journalist", article.getJournalist().getUsername()); else params.put("journalist", null); if (article.getPhotographer() != null) params.put("photographer", article.getPhotographer().getUsername()); else params.put("photographer", null); if (article.getPublication() != null) params.put("publication", article.getPublication().getId()); else params.put("publication", 0); if (article.getDescription() != null) params.put("description", article.getDescription()); else params.put("description", ""); if (article.getArticleStatus() != null) params.put("status", article.getArticleStatus().getId()); else params.put("status", 1); if (article.getArticleType() != null) params.put("type", article.getArticleType().getId()); else params.put("type", 0); params.put("wantedchars", article.getWantedNumberOfCharacters()); params.put("wantedpages", article.getWantedNumberOfPages()); if (article.getSection() != null) params.put("section", article.getSection().getId()); else params.put("section", 0); params.put("charcount", article.getCurrentNumberOfCharacters()); params.put("savetime", new Date()); try { getNamedParameterJdbcTemplate().update(sql, params); log.info("Saved log for saving article {}", article.getId()); } catch (DataAccessException e) { log.error("SQL-error logging article save", e); } } } public void logLogin(String sessionKey, String ipAddress, String username) { log.debug("Logging login {} {} {}", new String[]{sessionKey, ipAddress, username}); try { getJdbcTemplate().update("INSERT INTO SessionLog (sessionKey, userID, ipAddress, loginTime) VALUES(?,?,?,?)", sessionKey, username, ipAddress, new Date()); log.debug("Logged login {} {} {}", new String[]{sessionKey, ipAddress, username}); } catch (DataAccessException e) { log.error("SQL-error logging login", e); } } public void logLogout(String sessionKey) { try{ getJdbcTemplate().update("UPDATE SessionLog SET logoutTime=? WHERE sessionKey=?", new Date(), sessionKey); log.info("Logged user logging out"); } catch (DataAccessException e) { log.error("SQL-error logging logout", e); } } }