/*
* Copyright 2010 Nabeel Mukhtar
*
* 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 com.appspot.bitlyminous.command.async;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.logging.Level;
import java.util.zip.GZIPInputStream;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.appspot.bitlyminous.constant.ApplicationConstants;
import com.appspot.bitlyminous.dao.NamedQueries;
import com.appspot.bitlyminous.entity.Blacklist;
import com.appspot.bitlyminous.entity.Malware;
import com.appspot.bitlyminous.entity.Version;
/**
* The Class UploadSafeBrowsingData.
*/
public class UploadSafeBrowsingData extends AbstractAsyncCommand {
/* (non-Javadoc)
* @see com.appspot.bitlyminous.command.servlet.ServletCommand#execute(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
@Override
public void execute(HttpServletRequest req, HttpServletResponse resp) {
long blacklistMinor = Integer.parseInt(req.getParameter("blacklistMinor"));
long blacklistMajor = Integer.parseInt(req.getParameter("blacklistMajor"));
long malwareMinor = Integer.parseInt(req.getParameter("malwareMinor"));
long malwareMajor = Integer.parseInt(req.getParameter("malwareMajor"));
// logger.warning("Updating blacklist.");
// deleteBlacklist();
// logger.warning("Updating malware.");
// deleteMalware();
logger.warning("Updating version.");
updateVersion(blacklistMinor, blacklistMajor, malwareMinor, malwareMajor);
}
/**
* Update blacklist.
*/
private void updateBlacklist() {
EntityManager entityManager = null;
try {
entityManager = createEntityManager();
BufferedReader reader = new BufferedReader(new InputStreamReader(new GZIPInputStream(getClass().getClassLoader().getResourceAsStream("resources/data/blacklist.csv.gz")), ApplicationConstants.CONTENT_ENCODING));
String line = null;
while ((line = reader.readLine()) != null) {
Blacklist blacklist = new Blacklist();
blacklist.setHash(line);
entityManager.persist(blacklist);
}
reader.close();
} catch (Exception e) {
logger.log(Level.SEVERE, "Error while uploading blacklist.", e);
} finally {
entityManager.close();
}
}
/**
* Delete blacklist.
*/
private void deleteBlacklist() {
EntityManager entityManager = null;
try {
entityManager = createEntityManager();
Query query = entityManager.createNamedQuery(NamedQueries.DELETE_ALL_BLACKLIST);
query.executeUpdate();
} catch (Exception e) {
logger.log(Level.SEVERE, "Error while uploading blacklist.", e);
} finally {
entityManager.close();
}
}
/**
* Update malware.
*/
private void updateMalware() {
EntityManager entityManager = null;
try {
entityManager = createEntityManager();
BufferedReader reader = new BufferedReader(new InputStreamReader(new GZIPInputStream(getClass().getClassLoader().getResourceAsStream("resources/data/malware.csv.gz")), ApplicationConstants.CONTENT_ENCODING));
String line = null;
while ((line = reader.readLine()) != null) {
Malware malware = new Malware();
malware.setHash(line);
entityManager.persist(malware);
}
reader.close();
} catch (Exception e) {
logger.log(Level.SEVERE, "Error while uploading malware.", e);
} finally {
entityManager.close();
}
}
/**
* Delete malware.
*/
private void deleteMalware() {
EntityManager entityManager = null;
try {
entityManager = createEntityManager();
entityManager = createEntityManager();
Query query = entityManager.createNamedQuery(NamedQueries.DELETE_ALL_MALWARE);
query.executeUpdate();
} catch (Exception e) {
logger.log(Level.SEVERE, "Error while uploading malware.", e);
} finally {
entityManager.close();
}
}
/**
* Update version.
*
* @param blacklistMinor the blacklist minor
* @param blacklistMajor the blacklist major
* @param malwareMinor the malware minor
* @param malwareMajor the malware major
*/
private void updateVersion(Long blacklistMinor, Long blacklistMajor, Long malwareMinor, Long malwareMajor) {
EntityManager entityManager = null;
try {
entityManager = createEntityManager();
Version v = getCurrentVersion();
v.setBlacklistMinorVersion(blacklistMinor);
v.setBlacklistMajorVersion(blacklistMajor);
v.setMalwareMinorVersion(malwareMinor);
v.setMalwareMajorVersion(malwareMajor);
v.setLastHomeTweetId(1L);
v.setLastSearchTweetId(1L);
v.setLastMentionId(1L);
entityManager.persist(v);
} catch (Exception e) {
logger.log(Level.SEVERE, "Error while uploading safe browsing data.", e);
} finally {
entityManager.close();
}
}
}