package eu.musesproject.server.db.handler;
/*
* #%L
* MUSES Server
* %%
* Copyright (C) 2013 - 2015 Sweden Connectivity
* %%
* 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.
* #L%
*/
import java.sql.Time;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import eu.musesproject.server.continuousrealtimeeventprocessor.EventProcessor;
import eu.musesproject.server.entity.AccessRequest;
import eu.musesproject.server.entity.Applications;
import eu.musesproject.server.entity.Assets;
import eu.musesproject.server.entity.Clue;
import eu.musesproject.server.entity.ConnectionConfig;
import eu.musesproject.server.entity.CorporatePolicies;
import eu.musesproject.server.entity.Decision;
import eu.musesproject.server.entity.DecisionTrustvalues;
import eu.musesproject.server.entity.DefaultPolicies;
import eu.musesproject.server.entity.Devices;
import eu.musesproject.server.entity.Domains;
import eu.musesproject.server.entity.EventType;
import eu.musesproject.server.entity.LegalAspects;
import eu.musesproject.server.entity.ListOfpossibleRisktreatment;
import eu.musesproject.server.entity.Message;
import eu.musesproject.server.entity.MusesConfig;
import eu.musesproject.server.entity.Outcome;
import eu.musesproject.server.entity.PatternsKrs;
import eu.musesproject.server.entity.RefinedSecurityRules;
import eu.musesproject.server.entity.RiskCommunication;
import eu.musesproject.server.entity.RiskPolicy;
import eu.musesproject.server.entity.RiskTreatment;
import eu.musesproject.server.entity.Roles;
import eu.musesproject.server.entity.SecurityIncident;
import eu.musesproject.server.entity.SecurityRules;
import eu.musesproject.server.entity.SecurityViolation;
import eu.musesproject.server.entity.SensorConfiguration;
import eu.musesproject.server.entity.SimpleEvents;
import eu.musesproject.server.entity.Sources;
import eu.musesproject.server.entity.SystemLogKrs;
import eu.musesproject.server.entity.Threat;
import eu.musesproject.server.entity.ThreatClue;
import eu.musesproject.server.entity.ThreatType;
import eu.musesproject.server.entity.Users;
import eu.musesproject.server.entity.Zone;
import eu.musesproject.server.eventprocessor.correlator.engine.DroolsEngineService;
import eu.musesproject.server.eventprocessor.correlator.model.owl.SecurityIncidentEvent;
import eu.musesproject.server.eventprocessor.impl.EventProcessorImpl;
import eu.musesproject.server.eventprocessor.impl.MusesCorrelationEngineImpl;
import eu.musesproject.server.eventprocessor.util.EventTypes;
import eu.musesproject.server.risktrust.Device;
import eu.musesproject.server.risktrust.DeviceTrustValue;
import eu.musesproject.server.risktrust.User;
import eu.musesproject.server.risktrust.UserTrustValue;
import eu.musesproject.server.scheduler.ModuleType;
public class DBManager {
ModuleType module;
public static SessionFactory sessionFactory = null;
private static ServiceRegistry serviceRegistry;
private static final String MUSES_TAG = "MUSES_TAG";
private static Logger logger = Logger.getLogger(DBManager.class.getName());;
public DBManager(ModuleType module) {
this.module = module;
}
// the creation of singleton must be thread-safe
// private SessionFactory getSessionFactory() {
// if (sessionFactory == null) {
// Configuration configuration = new Configuration();
// configuration.configure();
// serviceRegistry = new StandardServiceRegistryBuilder().applySettings(
// configuration.getProperties()).build();
// sessionFactory = configuration.buildSessionFactory(serviceRegistry);
//
// }
// return sessionFactory;
// }
private SessionFactory getSessionFactory() {
if (sessionFactory == null) {
synchronized(DBManager.class) {
if(sessionFactory == null) {
Configuration configuration = new Configuration();
configuration.configure();
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(
configuration.getProperties()).build();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
}
}
}
return sessionFactory;
}
public void persist(Object transientInstance) {
try {
logger.log(Level.INFO, MUSES_TAG + ":persisting object instance");
Session session = getSessionFactory().openSession();
Transaction trans = null;
try {
trans = session.beginTransaction();
session.save(transientInstance);
trans.commit();
} catch (Exception e) {
if (trans!=null) trans.rollback();
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
logger.log(Level.INFO, MUSES_TAG + ":persist successful");
} catch (RuntimeException re) {
logger.log(Level.ERROR, MUSES_TAG + ":persist failed"+ re);
throw re;
}
}
public void inform(SimpleEvents event) {
try {
if (module.equals(ModuleType.KRS)){
event.setKRS_can_access(0);
}
if (module.equals(ModuleType.EP)){
event.setKRS_can_access(0);
}
if (module.equals(ModuleType.RT2AE)){
event.setKRS_can_access(0);
}
Session session = null;
Transaction trans = null;
try {
session = getSessionFactory().openSession();
trans = session.beginTransaction();
session.save(event);
trans.commit();
} catch (Exception e) {
if (trans!=null) trans.rollback();
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
} catch (Exception e) {
logger.log(Level.ERROR, e.getMessage());
}
}
public List<SimpleEvents> getEvent(){
Query query = null;
Session session = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("SimpleEvents.findAll");
if (query != null) {
List<SimpleEvents> simpleEvents = query.list();
List<SimpleEvents> allowedEvents = new ArrayList<SimpleEvents>();
for (SimpleEvents event : simpleEvents) {
if (event.getKRS_can_access() == 1){
allowedEvents.add(event);
}
}
return allowedEvents;
}
} catch (HibernateException e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return null;
}
// Complex DB method provided by Partners
/**
* Get user by username
* @param username
* @return User
*/
public Users getUserByUsername(String username) {
Query query = null;
Session session = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("Users.findByUsername").setString("username", username);
if (query != null) {
List<Users> userList = query.list();
for (Users u: userList){
if (u.getUsername().equals(username)) {
return u;
}
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return null;
}
/**
* Get device object by IMEI number
* @param imei
* @return Device
*/
public Devices getDeviceByIMEI(String imei){
Session session = null;
Query query = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("Devices.findByIMEI").setString("imei", imei);
if (query != null) {
List<Devices> deviceList = query.list();
for (Devices d: deviceList) {
if (d.getImei().equals(imei)){
return d;
}
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return null;
}
/**
* Get role object by name
* @param name
* @return Role
*/
public Roles getRoleByName(String name){
Session session = null;
Query query = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("Roles.findByName").setString("name", name);
if (query != null) {
List<Roles> roleList = query.list();
for (Roles r: roleList) {
if (r.getName().equals(name)){
return r;
}
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return null;
}
/**
* Get domain object by name
* @param name
* @return Domain
*/
public Domains getDomainByName(String name){
Session session = null;
Query query = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("Domains.findByName").setString("name", name);
if (query != null) {
List<Domains> domainList = query.list();
for (Domains d : domainList) {
if (d.getName().equals(name)) {
return d;
}
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return null;
}
/**
* Get asset object by location
* @param location
* @return Asset
*/
public Assets getAssetByLocation(String location) {
Session session = null;
Query query = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("Assets.findByLocation").setString("location", location);
if (query!=null) {
List<Assets> assetList = query.list();
for (Assets a : assetList) {
if (a.getLocation().equals(location)) {
return a;
}
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return null;
}
/**
* Get Users list
* @return List<User>
*/
public LegalAspects getLegalAspect() {
Session session = null;
Query query = null;
List<LegalAspects> legalAspects = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("LegalAspects.findAll");
if (query!=null) {
legalAspects = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return legalAspects.get(0);
}
/**
* Get EventType object by key
* @param key
* @return EventType
*/
public List<EventType> getEventTypeListByKey(String key) {
Session session = null;
Query query = null;
List<EventType> eventTypeList = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("EventType.findByKey").setString("event_type_key", key);
if (query!=null) {
eventTypeList = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return eventTypeList;
}
/**
* Get EventType object by key
* @param key
* @return EventType
*/
public EventType getEventTypeByKey(String key) {
Session session = null;
Query query = null;
EventType eventType = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("EventType.findByKey").setString("eventTypeKey", key);
if (query!=null) {
eventType = (EventType) query.uniqueResult();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return eventType;
}
/**
* Get SecurityRules list by status
* @param status
* @return List<SecurityRule>
*/
public List<SecurityRules> getSecurityRulesByStatus(String status) {
Session session = null;
Query query = null;
List<SecurityRules> securityRuleList = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("SecurityRules.findByStatus").setString("status", status);
if (query!=null) {
securityRuleList = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return securityRuleList;
}
/**
* Get RefinedSecurityRule list by status
* @param status
* @return List<RefinedSecurityRule>
*/
public List<RefinedSecurityRules> getRefinedSecurityRulesByStatus(String status) {
Session session = null;
Query query = null;
List<RefinedSecurityRules> foundList = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("RefinedSecurityRules.findByStatus").setString("status", status);
if (query!=null) {
List<RefinedSecurityRules> refinedSecurityRuleList = query.list();
foundList = new ArrayList<RefinedSecurityRules>();
for (RefinedSecurityRules r : refinedSecurityRuleList) {
if (r.getStatus().equals(status)) {
foundList.add(r);
}
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return foundList;
}
/**----------------------------------------------------------------**/
/*** START RT2AE DB METHODS***/
/**----------------------------------------------------------------**/
/**
* Get Users list
* @return List<User>
*/
public List<Users> getUsers() {
Session session = null;
Query query = null;
List<Users> users = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("Users.findAll");
if (query!=null) {
users = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return users;
}
/**
* Find User list by username
* @param username
*/
public List<Users> findUserByUsername(String username) {
Session session = null;
Query query = null;
List<Users> users = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("Users.findByUsername").setString("username", username);
if (query!=null) {
users = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return users;
}
/**
* Get Device list by id
* @param device_id
* @return List<Device>
*/
public List<Devices> findDeviceById(String deviceId) {
Session session = null;
Query query = null;
List<Devices> devices = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("Devices.findById").setString("device_id", deviceId);
if (query!=null) {
devices = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return devices;
}
/**
* Get Asset list
* @return List<Asset>
*/
public List<Assets> getAssets() {
Session session = null;
Query query = null;
List<Assets> assets = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("Assets.findAll");
if (query!=null) {
assets = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return assets;
}
/**
* Get Asset list by title
* @param title
* @return List<Asset>
*/
public List<Assets> findAssetByTitle(String title) {
Session session = null;
Query query = null;
List<Assets> assets = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("Assets.findByTitle").setString("title", title);
if (query!=null) {
assets = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return assets;
}
/**
* Delete Asset by description
* @param title
*/
public void deleteAssetByTitle(String title) {
Session session = null;
try {
session = getSessionFactory().openSession();
session.getNamedQuery("Assets.deleteAssetByTitle").setString("title", title);
} catch (HibernateException e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
}
/**
* Delete SimpleEvent by id
*/
public void deleteSimpleEventByEventId(String eventId) {
Session session = null;
try {
session = getSessionFactory().openSession();
session.getNamedQuery("SimpleEvents.deleteSimpleEventByEventId").setString("event_id", eventId);
} catch (HibernateException e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
}
/**
* Delete SimpleEvent by id
*/
public void updateSimpleEvent(SimpleEvents simpleEvent) {
Session session = null;
Transaction trans = null;
try {
session = getSessionFactory().openSession();
trans = session.beginTransaction();
session.update(simpleEvent);
trans.commit();
} catch (Exception e) {
if (trans != null)
trans.rollback();
logger.log(Level.ERROR, e.getMessage());
} finally {
if (session != null)
session.close();
}
}
/**
* Get Clue list
* @return List<Clue>
*/
public List<Clue> getClues() {
Session session = null;
Query query = null;
List<Clue> clues = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("Clue.findAll");
if (query!=null) {
clues = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return clues;
}
/**
* Get Clue list by value
* @param value
* @return List<Clue>
*/
public List<Clue> findClueByValue(String value) {
Session session = null;
Query query = null;
List<Clue> clues = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("Clue.findByValue").setString("value", value);
if (query!=null) {
clues = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return clues;
}
/**
* Delete Clue by value
* @param value
*/
public void deleteClueByValue(String value) {
Session session = null;
try {
session = getSessionFactory().openSession();
session.getNamedQuery("Clue.deleteClueByValue").setString("value", value);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
}
/**
* Get Threat list
* @return List<Threat>
*/
public List<Threat> getThreats() {
Session session = null;
Query query = null;
List<Threat> threats = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("Threat.findAll");
if (query!=null) {
threats = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return threats;
}
/**
* Get Threat list by description
* @param description
* @return List<Threat>
*/
public List<Threat> findThreatbydescription(String description) {
Session session = null;
Query query = null;
List<Threat> threats = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("Threat.findThreatbyDescription").setString("description", description);
if (query!=null) {
threats = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return threats;
}
/**
* Get Threat list by id
* @param id
* @return List<Threat>
*/
public List<Threat> findThreatById(String threatId) {
Session session = null;
Query query = null;
List<Threat> threats = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("Threat.findThreatById").setString("threat_id", threatId);
if (query!=null) {
threats = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return threats;
}
/**
* Get Decision list by id
* @param id
* @return List<Decision>
*/
public List<Decision> findDecisionById(String decisionId) {
Session session = null;
Query query = null;
List<Decision> decisions = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("Decision.findDecisionById").setString("decision_id", decisionId);
if (query!=null) {
decisions = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return decisions;
}
/**
* Get Decision list by Access Request id
* @param id
* @return List<Decision>
*/
public List<Decision> findDecisionByAccessRequestId(String accessRequestId) {
Session session = null;
Query query = null;
List<Decision> decisions = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("Decision.findDecisionByAccessRequestId").setString("access_request_id", accessRequestId);
if (query!=null) {
decisions = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return decisions;
}
/**
* Save Threat list in the DB
* @param Threat
*/
public void setThreats(List<Threat> threats) {
Iterator<Threat> i = threats.iterator();
while(i.hasNext()){
Threat threat = i.next();
Threat threat1 = new Threat();
Session session = null;
Transaction trans = null;
try {
session = getSessionFactory().openSession();
trans = session.beginTransaction();
if (this.findThreatbydescription(threat.getDescription()).size()>0){
List<Threat> listtThreats = this.findThreatbydescription(threat.getDescription());
listtThreats.get(0).setOccurences(threat.getOccurences());
listtThreats.get(0).setProbability(threat.getProbability());
listtThreats.get(0).setBadOutcomeCount(threat.getBadOutcomeCount());
listtThreats.get(0).setDescription(threat.getDescription());
session.merge(listtThreats.get(0));
session.flush();
trans.commit();
}else{
threat1.setDescription(threat.getDescription());
threat1.setProbability(threat.getProbability());
threat1.setBadOutcomeCount(threat.getBadOutcomeCount());
threat1.setOccurences(threat.getOccurences());
session.save(threat1);
session.flush();
trans.commit();
}
} catch (Exception e) {
if (trans!=null) trans.rollback();
logger.log(Level.ERROR, e.getMessage());
} finally {
if (session!=null) session.close();
}
//this.setOutcomes(threat.getOutcomes());
Iterator<Outcome> o = threat.getOutcomes().iterator();
while(o.hasNext()){
Outcome outcome = o.next();
try {
session = getSessionFactory().openSession();
trans = session.beginTransaction();
List<Threat> t = this.findThreatbydescription(threat.getDescription());
if(t!=null){
outcome.setThreat(t.get(0));
}
session.save(outcome);
trans.commit();
} catch (Exception e) {
if (trans!=null) trans.rollback();
logger.log(Level.ERROR, e.getMessage());
} finally {
if (session!=null) session.close();
}
}
}
}
/**
* Save Threat in the DB
* @param Threat
*/
public String setThreat(Threat threat) {
String threatId="";
Session session = null;
Transaction trans = null;
try {
session = getSessionFactory().openSession();
trans = session.beginTransaction();
if (this.findThreatbydescription(threat.getDescription()).size()>0){
List<Threat> listtThreats = this.findThreatbydescription(threat.getDescription());
listtThreats.get(0).setOccurences(threat.getOccurences()+1);
listtThreats.get(0).setProbability(threat.getProbability());
listtThreats.get(0).setBadOutcomeCount(threat.getBadOutcomeCount());
listtThreats.get(0).setDescription(threat.getDescription());
session.merge(listtThreats.get(0));
//threatId = listtThreats.get(0).getThreatId();
session.flush();
trans.commit();
}else{
/*threat1.setDescription(threat.getDescription());
threat1.setProbability(threat.getProbability());
threat1.setBadOutcomeCount(threat.getBadOutcomeCount());
threat1.setOccurences(threat.getOccurences());*/
session.save(threat);
session.flush();
//trans.commit();
threatId = threat.getThreatId();
Iterator<Outcome> o = threat.getOutcomes().iterator();
Outcome outcome = o.next();
try {
outcome.setThreat(threat);
session.save(outcome);
session.flush();
//trans.commit();
} catch (Exception e) {
if (trans!=null) trans.rollback();
logger.log(Level.ERROR, e.getMessage());
} finally {
//if (session!=null) session.close();
}
trans.commit();
}
} catch (Exception e) {
if (trans!=null) trans.rollback();
logger.log(Level.ERROR, e.getMessage());
} finally {
if (session!=null) session.close();
}
return threatId;
}
/**
* Get Decision list
* @return List<Decision>
*/
public List<Decision> getDecisions() {
Session session = null;
Query query = null;
List<Decision> decisions = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("Decision.findAll");
if (query!=null) {
decisions = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return decisions;
}
/**
* Save Users list in the DB
* @param List<Users> users
*/
public void setUsers(List<Users> users) {
Iterator<Users> i = users.iterator();
Session session = null;
Transaction trans = null;
while(i.hasNext()){
try {
Users user = i.next();
if(findUserByUsername(user.getUsername()).size()== 0){
session=getSessionFactory().openSession();
trans=session.beginTransaction();
session.save(user);
trans.commit();
}else{
session=getSessionFactory().openSession();
trans=session.beginTransaction();
session.merge(user);
trans.commit();
}
} catch (Exception e) {
if (trans!=null) trans.rollback();
logger.log(Level.ERROR, e.getMessage());
} finally {
if (session!=null) session.close();
}
}
}
/**
* Save Device list in the DB
* @param List<Devices> devices
*/
public void setDevices(List<Devices> devices) {
Iterator<Devices> i = devices.iterator();
Session session = null;
Transaction trans = null;
while(i.hasNext()){
try {
Devices device = i.next();
if(findDecisionById(device.getDeviceId()).size()== 0){
session=getSessionFactory().openSession();
trans=session.beginTransaction();
session.save(device);
trans.commit();
}else{
session=getSessionFactory().openSession();
trans=session.beginTransaction();
session.merge(device);
trans.commit();
}
} catch (Exception e) {
if (trans!=null) trans.rollback();
logger.log(Level.ERROR, e.getMessage());
} finally {
if (session!=null) session.close();
}
}
}
/**
* Save trust values for each decision
* @param List<DecisionTrustvalues> decisiontrustvalues
*/
public void setDecisionTrustvalues(List<DecisionTrustvalues> decisiontrustvalues) {
Iterator<DecisionTrustvalues> i = decisiontrustvalues.iterator();
Session session = null;
Transaction trans = null;
while(i.hasNext()){
try {
DecisionTrustvalues decisiontrustvalue = i.next();
session=getSessionFactory().openSession();
trans=session.beginTransaction();
session.save(decisiontrustvalue);
session.flush();
trans.commit();
} catch (Exception e) {
if (trans!=null) trans.rollback();
logger.log(Level.ERROR, e.getMessage());
} finally {
if (session!=null) session.close();
}
}
}
/**
* Get DecisionTrustvalues list
* @return List<DecisionTrustvalues>
*/
public List<DecisionTrustvalues> getDecisionTrusvalues() {
Session session = null;
Query query = null;
List<DecisionTrustvalues> decisionTrustvalues = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("Decision.findAll");
if (query!=null) {
decisionTrustvalues = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return decisionTrustvalues;
}
/**
* Save Decision object in the DB
* @param Decision decision
*/
public String setDecision(Decision decision) {
Session session = null;
Transaction trans = null;
try {
session=getSessionFactory().openSession();
trans=session.beginTransaction();
session.save(decision);
session.flush();
trans.commit();
logger.log(Level.INFO, "Storing decision in the database");
} catch (Exception e) {
if (trans!=null) trans.rollback();
logger.log(Level.ERROR, e.getMessage());
} finally {
if (session!=null) session.close();
}
return decision.getDecisionId();
}
/**
* Save AccessRequest object in the DB
* @param AccessRequest accessrequest
*/
public String setAccessRequest(AccessRequest accessrequest) {
Session session = null;
Transaction trans = null;
try {
session=getSessionFactory().openSession();
trans=session.beginTransaction();
session.save(accessrequest);
session.flush();
trans.commit();
logger.log(Level.INFO, "Storing AccessRequest in the database ");
} catch (Exception e) {
if (trans!=null) trans.rollback();
logger.log(Level.ERROR, e.getMessage());
} finally {
if (session!=null) session.close();
}
return accessrequest.getAccessRequestId();
}
/**
* Save Assets list in the DB
* @param List<Assets> users
*/
public void setAssets(List<Assets> assets) {
Session session = null;
Transaction trans = null;
Iterator<Assets> i = assets.iterator();
while(i.hasNext()){
try {
Assets asset = i.next();
session=getSessionFactory().openSession();
trans=session.beginTransaction();
session.save(asset);
trans.commit();
} catch (Exception e) {
if (trans!=null) trans.rollback();
logger.log(Level.ERROR, e.getMessage());
} finally {
if (session!=null) session.close();
}
}
}
/**
* Save Assets list in the DB
* @param List<Assets> users
*/
public String setAsset(Assets asset) {
Session session = null;
Transaction trans = null;
try {
session=getSessionFactory().openSession();
trans=session.beginTransaction();
session.save(asset);
trans.commit();
} catch (Exception e) {
if (trans!=null) trans.rollback();
logger.log(Level.ERROR, e.getMessage());
} finally {
if (session!=null) session.close();
}
return asset.getAssetId();
}
/**
* Save Assets list in the DB
* @param List<Assets> users
*/
public void setClues(List<Clue> clues) {
Session session = null;
Transaction trans = null;
Iterator<Clue> i = clues.iterator();
while(i.hasNext()){
try {
Clue clue = i.next();
session=getSessionFactory().openSession();
trans=session.beginTransaction();
session.save(clue);
trans.commit();
} catch (Exception e) {
if (trans!=null) trans.rollback();
logger.log(Level.ERROR, e.getMessage());
} finally {
if (session!=null) session.close();
}
}
}
/**
* Save RiskPolicy list in the DB
* @param List<RiskPolicy> users
*/
public void setRiskPolicies(List<RiskPolicy> riskPolicies) {
Session session = null;
Transaction trans = null;
Iterator<RiskPolicy> i = riskPolicies.iterator();
while(i.hasNext()){
try {
RiskPolicy riskPolicy = i.next();
session=getSessionFactory().openSession();
trans=session.beginTransaction();
session.save(riskPolicy);
trans.commit();
} catch (Exception e) {
if (trans!=null) trans.rollback();
logger.log(Level.ERROR, e.getMessage());
} finally {
if (session!=null) session.close();
}
}
}
/**
* Save AccessRequest list in the DB
* @param List<AccessRequest> users
*/
public void setAccessRequests(List<AccessRequest> accessRequests) {
Session session = null;
Transaction trans = null;
Iterator<AccessRequest> i = accessRequests.iterator();
while(i.hasNext()){
try {
AccessRequest accessrequest = i.next();
session=getSessionFactory().openSession();
trans=session.beginTransaction();
session.save(accessrequest);
session.flush();
trans.commit();
//session.close();
} catch (Exception e) {
if (trans!=null) trans.rollback();
logger.log(Level.ERROR, e.getMessage());
} finally {
if (session!=null) session.close();
}
}
}
/**
* Get AccessRequest list by id
* @param id
* @return List<AccessRequest>
*/
public List<AccessRequest> findAccessRequestById(String accessRequestId) {
Session session = null;
Query query = null;
List<AccessRequest> accessrequests = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("AccessRequest.findById").setString("access_request_id", accessRequestId);
if (query!=null) {
accessrequests = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return accessrequests;
}
/**
* Get RiskCommunication list by id
* @param id
* @return List<RiskCommunication>
*/
public List<RiskCommunication> findRiskCommunicationById(int riskCommunicationId) {
Session session = null;
Query query = null;
List<RiskCommunication> riskcommunications = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("RiskCommunication.findRiskCommunicationById").setInteger("risk_communication_id", riskCommunicationId);
if (query!=null) {
riskcommunications = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return riskcommunications;
}
/**
* Delete Threat by description
* @param descritpion
*/
public void deletefThreatByDescription(String description) {
Session session = null;
try {
session = getSessionFactory().openSession();
session.getNamedQuery("Threat.deleteContentOfThreatTable"); // FIXME not implemented
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
}
/**
* Get RiskPolicy list
* @return List<RiskPolicy>
*/
public List<RiskPolicy> getRiskPolicies() {
Session session = null;
Query query = null;
List<RiskPolicy> riskpolicy = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("RiskPolicy.findAll");
if (query!=null) {
riskpolicy = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return riskpolicy;
}
/**
* Get Outcome list
* @return List<Outcome>Outcomes
*/
public List<Outcome> getOutcomes() {
Session session = null;
Query query = null;
List<Outcome> outcome = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("Outcome.findAll");
if (query!=null) {
outcome = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return outcome;
}
/**
* Get all possible risktreatment
* @return List<String> risktreatments
*/
public ListOfpossibleRisktreatment getRisktreatments(int id) {
Session session = null;
Query query = null;
List<ListOfpossibleRisktreatment> list = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("ListOfpossibleRisktreatment.findbyId").setInteger("risktreatment_id", id);
if (query!=null) {
list = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return list.get(list.size() - 1);
}
/**
* Get AccessRequest list
* @return List<AccessRequest>
*/
public List<AccessRequest> getAccessRequests() {
Session session = null;
Query query = null;
List<AccessRequest> accesrequests = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("AccessRequest.findAll");
if (query!=null) {
accesrequests = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return accesrequests;
}
/**
* Save UserBehaviour
* @param UserBehaviour userbehaviour
*/
public void setUserBehaviour(eu.musesproject.server.entity.UserBehaviour userbehaviour) {
Session session = null;
Transaction trans = null;
try {
session=getSessionFactory().openSession();
trans=session.beginTransaction();
session.save(userbehaviour);
trans.commit();
} catch (Exception e) {
if (trans!=null) trans.rollback();
logger.log(Level.ERROR, e.getMessage());
} finally {
if (session!=null) session.close();
}
}
/**
* Save RiskCommunication list in the DB
* @param List<RiskCommunication> users
*/
public void setRiskCommunications(RiskCommunication riskCommunication) {
Session session = null;
Transaction trans = null;
try {
session=getSessionFactory().openSession();
trans=session.beginTransaction();
session.save(riskCommunication);
trans.commit();
} catch (Exception e) {
if (trans!=null) trans.rollback();
logger.log(Level.ERROR, e.getMessage());
} finally {
if (session!=null) session.close();
}
}
/**
* Save RiskTreatment list in the DB
* @param List<RiskTreatment> users
*/
public void setRiskTreatments(List<RiskTreatment> riskTreatments) {
Session session = null;
Transaction trans = null;
Iterator<RiskTreatment> i = riskTreatments.iterator();
while(i.hasNext()){
try {
RiskTreatment riskTreatment = i.next();
session=getSessionFactory().openSession();
trans=session.beginTransaction();
session.save(riskTreatment);
trans.commit();
} catch (Exception e) {
if (trans!=null) trans.rollback();
logger.log(Level.ERROR, e.getMessage());
} finally {
if (session!=null) session.close();
}
}
}
/**
* Save Decision list in the DB
* @param List<Decision> decisions
*/
public void setDecisions(List<Decision> decisions) {
Session session = null;
Transaction trans = null;
Iterator<Decision> i = decisions.iterator();
while(i.hasNext()){
try {
Decision decision = i.next();
session = getSessionFactory().openSession();
trans = session.beginTransaction();
session.save(decision);
trans.commit();
} catch (Exception e) {
if (trans!=null) trans.rollback();
logger.log(Level.ERROR, e.getMessage());
} finally {
if (session!=null) session.close();
}
}
}
/**
* Get AccessRequest list by date and threat
* @param modification
* @param threat_id
* @return List<AccessRequest>
*/
public List<AccessRequest> findAccessrequestbyTimestampandThreat(Date modification,Threat threatid) {
Session session = null;
Query query = null;
List<AccessRequest> accessrequests = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("AccessRequest.findAccessrequestbyTimestampandThreat");
if (query!=null) {
accessrequests = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return accessrequests;
}
public void convertUsertoCommonUser(User user, eu.musesproject.server.entity.Users musesUser){
user.setUserId(musesUser.getUserId());
user.setEmail(musesUser.getEmail());
user.setPassword(musesUser.getPassword());
user.setUsername(musesUser.getUsername());
UserTrustValue usertrustvalue = new UserTrustValue();
usertrustvalue.setValue(musesUser.getTrustValue());
user.setUsertrustvalue(usertrustvalue);
user.setEnabled(musesUser.getEnabled());
user.setRoleId(musesUser.getRoleId());
}
public void convertDevicetoCommonDevice(Device device, eu.musesproject.server.entity.Devices musesDevice){
if (musesDevice != null) {
device.setDeviceId(musesDevice.getDeviceId());
device.setCertificate(musesDevice.getCertificate());
DeviceTrustValue devicetrustvalue = new DeviceTrustValue();
devicetrustvalue.setValue(musesDevice.getTrustValue());
device.setDevicetrustvalue(devicetrustvalue);
device.setName(musesDevice.getName());
device.setImei(musesDevice.getImei());
device.setOS_name(musesDevice.getOS_name());
device.setOS_version(musesDevice.getOS_version());
}
}
/**
*
*
*/
public void updateorSaveDevice(Devices device){
Session session = null;
Transaction trans = null;
try {
if (this.getDeviceByIMEI(device.getImei()) == null){
session=getSessionFactory().openSession();
trans=session.beginTransaction();
session.save(device);
trans.commit();
}else{
Devices device1 = this.getDeviceByIMEI(device.getImei());
session=getSessionFactory().openSession();
trans=session.beginTransaction();
session.merge(device);
trans.commit();
}
} catch (Exception e) {
if (trans!=null) trans.rollback();
logger.log(Level.ERROR, e.getMessage());
} finally {
if (session!=null) session.close();
}
}
/**
* Anonymize AccessRequest list
* @param accessRequests
*/
public void anonymizeAccessRequests(List<AccessRequest> accessRequests) {
// Iterator<AccessRequest> i = accessRequests.iterator();
// while(i.hasNext()){
// AccessRequest accessrequest = i.next();
//
// try {
// Session session=getSessionFactory().openSession();
// Transaction trans=session.beginTransaction();
// if(findAccessrequestbyTimestampandThreat(accessrequest.getModification(), accessrequest.getThreat()).size()>0){
// List<AccessRequest> listaccessrequest = findAccessrequestbyTimestampandThreat(accessrequest.getModification(),accessrequest.getThreat());
// listaccessrequest.get(0).setSolved((short) 1);
// List<Threat> threats = findThreatById(accessrequest.getThreat());
// String description = threats.get(0).getDescription();
// String text = description.replace(accessrequest.getUser().getName(), "");
// threats.get(0).setDescription(text);
// accessrequest.setUser(null);
// //listaccessrequest.get(0).merge();
// session.merge(threats.get(0));
// session.merge(accessrequest);
//
// }else{
// session.save(accessrequest);
//
// //access.persist();
// }
//
// trans.commit();
// } catch (Exception e) {
// e.printStackTrace();
// } finally {
// //em.close();
// }
//
// }
// }
}
/**----------------------------------------------------------------**/
/*** END RT2AE DB METHODS***/
/**----------------------------------------------------------------**/
public void setSimpleEvents(List<SimpleEvents> list) {
Session session = null;
Transaction trans = null;
Iterator<SimpleEvents> i = list.iterator();
while(i.hasNext()){
try {
SimpleEvents event = i.next();
session = getSessionFactory().openSession();
trans = session.beginTransaction();
session.save(event);
trans.commit();
} catch (Exception e) {
if (trans!=null) trans.rollback();
logger.log(Level.ERROR, e.getMessage());
} finally {
if (session!=null) session.close();
}
}
}
public Applications getApplicationByName(String name) {
Session session = null;
Query query = null;
Applications app = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("Applications.findAppByName").setString("name", name);
if (query!=null) {
app = (Applications) query.uniqueResult();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return app;
}
public Sources getSourceByName(String name) {
Session session = null;
Query query = null;
Sources source = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("Sources.findByName").setString("name", name);
if (query!=null) {
source = (Sources) query.uniqueResult();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return source;
}
/**
* Get MUSES Config
* @return MusesConfig
*/
public MusesConfig getMusesConfig() {
Session session = null;
Query query = null;
MusesConfig musesConfig = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("MusesConfig.findAll");
if (query!=null) {
List<MusesConfig> configList = query.list();
for (Iterator iterator = configList.iterator(); iterator.hasNext();) {
musesConfig = (MusesConfig) iterator.next();
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return musesConfig;
}
/**
* Get Sensor Configuration
* @return List<SensorConfiguration>
*/
public List<SensorConfiguration> getSensorConfiguration() {
Session session = null;
Query query = null;
List<SensorConfiguration> sensorConfigList = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("SensorConfiguration.findAll");
if (query!=null) {
sensorConfigList = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return sensorConfigList;
}
/**
* Get Connection Config
* @return ConnectionConfig
*/
public ConnectionConfig getConnectionConfig() {
Session session = null;
Query query = null;
ConnectionConfig connConfig = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("ConnectionConfig.findAll");
if (query!=null) {
List<ConnectionConfig> configList = query.list();
for (Iterator iterator = configList.iterator(); iterator.hasNext();) {
connConfig = (ConnectionConfig) iterator.next();
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return connConfig;
}
public void setSecurityViolation(SecurityViolation securityViolation) {
Session session = null;
Transaction trans = null;
try {
session = getSessionFactory().openSession();
trans=session.beginTransaction();
session.save(securityViolation);
trans.commit();
} catch (Exception e) {
if (trans!=null) trans.rollback();
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
}
public void setDevice(Devices device) {
Session session = null;
Transaction trans = null;
try {
session = getSessionFactory().openSession();
trans=session.beginTransaction();
session.save(device);
trans.commit();
} catch (Exception e) {
if (trans!=null) trans.rollback();
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
}
/**
* Get Device list
* @return List<Devices>
*/
public List<Devices> getDevices() {
Session session = null;
Query query = null;
List<Devices> devices = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("Devices.findAll");
if (query!=null) {
devices = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return devices;
}
/**
* Get Zones list
* @return List<Zone>
*/
public List<Zone> getZones() {
Session session = null;
Query query = null;
List<Zone> zones = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("Zone.findAll");
if (query!=null) {
zones = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return zones;
}
public void setSecurityIncident(SecurityIncident securityIncident) {
Session session = null;
Transaction trans = null;
try {
session = getSessionFactory().openSession();
trans=session.beginTransaction();
session.save(securityIncident);
trans.commit();
//Insert securityIncident event in the working memory
insertSecurityIncidentEvent(securityIncident);
} catch (Exception e) {
if (trans!=null) trans.rollback();
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
}
private void insertSecurityIncidentEvent(SecurityIncident securityIncident) {
EventProcessor processor = null;
MusesCorrelationEngineImpl engine = null;
DroolsEngineService des = EventProcessorImpl.getMusesEngineService();
if (des==null){
processor = new EventProcessorImpl();
engine = (MusesCorrelationEngineImpl)processor.startTemporalCorrelation("drl");
des = EventProcessorImpl.getMusesEngineService();
}
SecurityIncidentEvent secIncidentEvent = new SecurityIncidentEvent();
secIncidentEvent.setName(securityIncident.getName());
secIncidentEvent.setDeviceId(securityIncident.getDevice().getImei());
secIncidentEvent.setUserId(Integer.valueOf(securityIncident.getUser().getUserId()));
secIncidentEvent.setTimestamp(new Date().getTime());
logger.info("Inserting SECURITY INCIDENT...");
des.insertFact(secIncidentEvent);
}
/**
* Fills system_log_krs table in database
* @param logs
* @return void
*/
public void setSystemLogKRS(List<SystemLogKrs> logs) {
Session session = null;
Transaction trans = null;
Iterator<SystemLogKrs> i = logs.iterator();
while(i.hasNext()){
try {
SystemLogKrs log = i.next();
session = getSessionFactory().openSession();
trans = session.beginTransaction();
session.save(log);
trans.commit();
} catch (Exception e) {
if (trans!=null) trans.rollback();
logger.log(Level.ERROR, e.getMessage());
} finally {
if (session!=null) session.close();
}
}
}
public List<DefaultPolicies> getDefaultPolicies(String language) {
Session session = null;
Query query = null;
List<DefaultPolicies> policies = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("DefaultPolicies.findAll");
if (query!=null) {
policies = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return policies;
}
/**
* Get AccessRequest list by event_id
* @param accessRequestEventId
* @return List<AccessRequest>
*/
public List<AccessRequest> findAccessRequestByEventId(String accessRequestEventId) {
Session session = null;
Query query = null;
List<AccessRequest> accessrequests = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("AccessRequest.findByEventId").setString("event_id", accessRequestEventId);
if (query!=null) {
accessrequests = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return accessrequests;
}
/**
* Get SimpleEvents list by user_id, either the last events the user made or the next one (user behaviour)
* @param simpleEventUserId
* @param day
* @param time
* @param backwards
* @return List<SimpleEvents>
*/
public SimpleEvents findEventsByUserId(String simpleEventUserId, String day, String time, Boolean backwards) {
Session session = null;
Query query = null;
SimpleEvents event = null;
try {
if (backwards) {
session = getSessionFactory().openSession();
query = session.getNamedQuery("SimpleEvents.findLastByUserId").
setString("user_id", simpleEventUserId).
setString("day", day).
setString("time", time);
query.setMaxResults(1);
} else {
session = getSessionFactory().openSession();
query = session.getNamedQuery("SimpleEvents.findNextByUserId").
setString("user_id", simpleEventUserId).
setString("day", day).
setString("time", time);
query.setMaxResults(1);
}
if (query!=null) {
List<SimpleEvents> events = query.list();
if (events.size() > 0) {
event = events.get(0);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return event;
}
public SimpleEvents findEventByEventId(String eventId) {
Session session = null;
Query query = null;
SimpleEvents event = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("SimpleEvents.findEventByEventId").
setString("eventId", eventId);
query.setMaxResults(1);
if (query!=null) {
List<SimpleEvents> events = query.list();
if (events.size() > 0) {
event = events.get(0);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return event;
}
/**
* Get SecurityViolations list by event_id
* @param securityViolationEventId
* @return List<SecurityViolation>
*/
public List<SecurityViolation> findSecurityViolationByEventId(String securityViolationEventId) {
Session session = null;
Query query = null;
List<SecurityViolation> securityViolations = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("SecurityViolation.findByEventId").setString("event_id", securityViolationEventId);
if (query!=null) {
securityViolations = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return securityViolations;
}
/**
* Get SecurityViolation by decision_id
* @param decisionId
* @return SecurityViolation
*/
public SecurityViolation findSecurityViolationByDecisionId(String decisionId) {
Session session = null;
Query query = null;
List<SecurityViolation> securityViolations = null;
SecurityViolation securityViolation = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("SecurityViolation.findByDecisionId").setString("decision_id", decisionId);
if (query!=null) {
securityViolations = query.list();
if (securityViolations.size() > 0) {
securityViolation = securityViolations.get(0);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return securityViolation;
}
public SimpleEvents updateSimpleEvent(String eventType, String assetId) {
Session session = null;
Transaction trans = null;
EventType type = getEventTypeByKey(eventType);
SimpleEvents event = findLastEventByEventType(type.getEventTypeId());
if (event != null) {
Assets asset = findAssetById(assetId);
event.setAsset(asset);
try {
session = getSessionFactory().openSession();
trans = session.beginTransaction();
session.update(event);
trans.commit();
} catch (Exception e) {
if (trans != null)
trans.rollback();
logger.log(Level.ERROR, e.getMessage());
} finally {
if (session != null)
session.close();
}
}
return event;
}
public SimpleEvents findLastEventByEventType(int eventTypeId) {
Session session = null;
Query query = null;
SimpleEvents event = null;
List<SimpleEvents> list = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("SimpleEvents.findLastEventByEventType").
setInteger("event_type_id", eventTypeId);
if (query!=null) {
list = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
if (list != null && list.size()>0){
event = list.get(list.size() - 1);
}else{
logger.info("Error: Query returned empty list");
}
return event;
}
public SimpleEvents findDeviceConfigurationBySimpleEvent(int deviceId, String day) {
Session session = null;
Query query = null;
SimpleEvents event = null;
List<SimpleEvents> list = new ArrayList<SimpleEvents>();
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("SimpleEvents.findDeviceConfig").
setInteger("event_type_id", 14).
setInteger("device_id", deviceId).
setString("day", day);
if (!query.list().isEmpty()) {
list = query.list();
} else {
query = session.getNamedQuery("SimpleEvents.findDeviceConfig").
setInteger("event_type_id", 9).
setInteger("device_id", deviceId).
setString("day", day);
if (!query.list().isEmpty()) {
list = query.list();
} else {
event = new SimpleEvents();
event.setEventType(this.getEventTypeByKey(EventTypes.LOG_IN));
event.setUser(this.getUserByUsername("muses"));
event.setData("{event=security_property_changed, properties={\"id\":\"1\",\"ispasswordprotected\":\"true\",\"isrootpermissiongiven\":\"false\",\"screentimeoutinseconds\":\"300\",\"musesdatabaseexists\":\"true\",\"isrooted\":\"false\",\"accessibilityenabled\":\"false\",\"istrustedantivirusinstalled\":\"false\",\"ipaddress\":\"172.17.1.52\"}}");
event.setApplication(this.getApplicationByName("musesawaew"));
event.setAsset(this.getAssetByLocation("Geneva"));
event.setDate(new Date());
event.setDevice(this.getDeviceByIMEI("9aa326e4fd9ccf61"));
event.setTime(new Time(new Date().getTime()));
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
if (list.size()>0){
event = list.get(list.size() - 1);
}else if (event == null) {
logger.info("Error: Query returned empty list");
}
return event;
}
/**
* Get Asset by id
* @param id
* @return Assets
*/
public Assets findAssetById(String id) {
Session session = null;
Query query = null;
List<Assets> assets = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("Assets.findById").setString("assetId", id);
if (query!=null) {
assets = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
if (assets != null && assets.size()!=0){
return assets.get(assets.size() - 1);
}else{
return getNoAsset();
}
}
public Assets getNoAsset() {
return getAssetByLocation("Nowhere");
}
/**
* Obtains the patterns obtained by the KRS through the Data Mining process
* @param void
* @return patterns List of the patterns stored in patterns_krs
*/
public List<PatternsKrs> getPatternsKRS() {
Session session = null;
Query query = null;
List<PatternsKrs> patterns = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("PatternsKrs.findAll");
if (query!=null) {
patterns = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return patterns;
}
/**
* Fills patterns_krs table in database
* @param pattenrs
* @return void
*/
public void setPatternsKRS(List<PatternsKrs> patterns) {
Session session = null;
Transaction trans = null;
Iterator<PatternsKrs> i = patterns.iterator();
while(i.hasNext()){
try {
PatternsKrs log = i.next();
session = getSessionFactory().openSession();
trans = session.beginTransaction();
session.save(log);
trans.commit();
} catch (Exception e) {
if (trans!=null) trans.rollback();
logger.log(Level.ERROR, e.getMessage());
} finally {
if (session!=null) session.close();
}
}
}
/**
* Get DecisionTrustvalues list by Decision id
* @param decisionId
* @return List<DecisionTrustvalues>
*/
public List<DecisionTrustvalues> findDecisionTrustValuesByDecisionId(String decisionId) {
Session session = null;
Query query = null;
List<DecisionTrustvalues> trustValues = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("DecisionTrustvalues.findByDecisionId").setString("decision_id", decisionId);
if (query!=null) {
trustValues = query.list();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return trustValues;
}
/**
* Get role object by id
* @param roleId
* @return Role
*/
public Roles getRoleById(int roleId){
Session session = null;
Query query = null;
Roles role = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("Roles.findById").setInteger("role_id", roleId);
if (query!=null) {
List<Roles> roleList = query.list();
if (roleList.size() > 0) {
role = roleList.get(0);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return role;
}
/**
* Get all different values of decision_cause in patterns_krs table
* @param void
* @return List<String>
*/
public List<String> getDistinctDecisionCauses() {
Session session = null;
Query query = null;
List<String> allDifferentValues = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("PatternsKrs.findDistinctDecisionCause");
if (query!=null) {
int nullIndex = -1;
allDifferentValues = query.list();
nullIndex = allDifferentValues.indexOf(null);
if (nullIndex > -1){
allDifferentValues.remove(nullIndex);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return allDifferentValues;
}
/**
* Get all different values of event_type in patterns_krs table
* @param void
* @return List<String>
*/
public List<String> getDistinctEventTypes() {
Session session = null;
Query query = null;
List<String> allDifferentValues = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("PatternsKrs.findDistinctEventTypes");
if (query!=null) {
int nullIndex = -1;
allDifferentValues = query.list();
nullIndex = allDifferentValues.indexOf(null);
if (nullIndex > -1){
allDifferentValues.remove(nullIndex);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return allDifferentValues;
}
/**
* Get all different values of event_level in patterns_krs table
* @param void
* @return List<String>
*/
public List<String> getDistinctEventLevels() {
Session session = null;
Query query = null;
List<String> allDifferentValues = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("PatternsKrs.findDistinctEventLevel");
if (query!=null) {
int nullIndex = -1;
allDifferentValues = query.list();
nullIndex = allDifferentValues.indexOf(null);
if (nullIndex > -1){
allDifferentValues.remove(nullIndex);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return allDifferentValues;
}
/**
* Get all different values of username in patterns_krs table
* @param void
* @return List<String>
*/
public List<String> getDistinctUsernames() {
Session session = null;
Query query = null;
List<String> allDifferentValues = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("PatternsKrs.findDistinctUsername");
if (query!=null) {
int nullIndex = -1;
allDifferentValues = query.list();
nullIndex = allDifferentValues.indexOf(null);
if (nullIndex > -1){
allDifferentValues.remove(nullIndex);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return allDifferentValues;
}
/**
* Get all different values of user_role in patterns_krs table
* @param void
* @return List<String>
*/
public List<String> getDistinctUserRoles() {
Session session = null;
Query query = null;
List<String> allDifferentValues = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("PatternsKrs.findDistinctUserRole");
if (query!=null) {
int nullIndex = -1;
allDifferentValues = query.list();
nullIndex = allDifferentValues.indexOf(null);
if (nullIndex > -1){
allDifferentValues.remove(nullIndex);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return allDifferentValues;
}
/**
* Get all different values of device_type in patterns_krs table
* @param void
* @return List<String>
*/
public List<String> getDistinctDeviceType() {
Session session = null;
Query query = null;
List<String> allDifferentValues = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("PatternsKrs.findDistinctDeviceType");
if (query!=null) {
int nullIndex = -1;
int emptyIndex = -1;
allDifferentValues = query.list();
nullIndex = allDifferentValues.indexOf(null);
emptyIndex = allDifferentValues.indexOf("domemodel");
if (nullIndex > -1){
allDifferentValues.remove(nullIndex);
}
if (emptyIndex > -1){
allDifferentValues.remove(emptyIndex);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return allDifferentValues;
}
/**
* Get all different values of device_OS in patterns_krs table
* @param void
* @return List<String>
*/
public List<String> getDistinctDeviceOS() {
Session session = null;
Query query = null;
List<String> allDifferentValues = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("PatternsKrs.findDistinctDeviceOS");
if (query!=null) {
int nullIndex = -1;
int emptyIndex = -1;
allDifferentValues = query.list();
nullIndex = allDifferentValues.indexOf(null);
emptyIndex = allDifferentValues.indexOf("a0");
if (nullIndex > -1){
allDifferentValues.remove(nullIndex);
}
if (emptyIndex > -1){
allDifferentValues.remove(emptyIndex);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return allDifferentValues;
}
/**
* Get all different values of device_owned_by in patterns_krs table
* @param void
* @return List<String>
*/
public List<String> getDistinctDeviceOwnedBy() {
Session session = null;
Query query = null;
List<String> allDifferentValues = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("PatternsKrs.findDistinctDeviceOwnedBy");
if (query!=null) {
int nullIndex = -1;
allDifferentValues = query.list();
nullIndex = allDifferentValues.indexOf(null);
if (nullIndex > -1){
allDifferentValues.remove(nullIndex);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return allDifferentValues;
}
/**
* Get all different values of app_name in patterns_krs table
* @param void
* @return List<String>
*/
public List<String> getDistinctAppName() {
Session session = null;
Query query = null;
List<String> allDifferentValues = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("PatternsKrs.findDistinctAppName");
if (query!=null) {
int nullIndex = -1;
allDifferentValues = query.list();
nullIndex = allDifferentValues.indexOf(null);
if (nullIndex > -1){
allDifferentValues.remove(nullIndex);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return allDifferentValues;
}
/**
* Get all different values of app_vendor in patterns_krs table
* @param void
* @return List<String>
*/
public List<String> getDistinctAppVendor() {
Session session = null;
Query query = null;
List<String> allDifferentValues = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("PatternsKrs.findDistinctAppVendor");
if (query!=null) {
int nullIndex = -1;
allDifferentValues = query.list();
nullIndex = allDifferentValues.indexOf(null);
if (nullIndex > -1){
allDifferentValues.remove(nullIndex);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return allDifferentValues;
}
/**
* Get all different values of asset_name in patterns_krs table
* @param void
* @return List<String>
*/
public List<String> getDistinctAssetName() {
Session session = null;
Query query = null;
List<String> allDifferentValues = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("PatternsKrs.findDistinctAssetName");
if (query!=null) {
int nullIndex = -1;
int emptyIndex = -1;
allDifferentValues = query.list();
nullIndex = allDifferentValues.indexOf(null);
emptyIndex = allDifferentValues.indexOf("");
if (nullIndex > -1){
allDifferentValues.remove(nullIndex);
}
if (emptyIndex > -1){
allDifferentValues.remove(emptyIndex);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return allDifferentValues;
}
/**
* Get all different values of asset_confidential_level in patterns_krs table
* @param void
* @return List<String>
*/
public List<String> getDistinctAssetConfidentialLevel() {
Session session = null;
Query query = null;
List<String> allDifferentValues = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("PatternsKrs.findDistinctAssetConfidentialLevel");
if (query!=null) {
int nullIndex = -1;
allDifferentValues = query.list();
nullIndex = allDifferentValues.indexOf(null);
if (nullIndex > -1){
allDifferentValues.remove(nullIndex);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return allDifferentValues;
}
/**
* Get all different values of asset_location in patterns_krs table
* @param void
* @return List<String>
*/
public List<String> getDistinctAssetLocation() {
Session session = null;
Query query = null;
List<String> allDifferentValues = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("PatternsKrs.findDistinctAssetLocation");
if (query!=null) {
int nullIndex = -1;
int emptyIndex = -1;
allDifferentValues = query.list();
nullIndex = allDifferentValues.indexOf(null);
emptyIndex = allDifferentValues.indexOf("");
if (nullIndex > -1){
allDifferentValues.remove(nullIndex);
}
if (emptyIndex > -1){
allDifferentValues.remove(emptyIndex);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return allDifferentValues;
}
/**
* Get all different values of label in patterns_krs table
* @param void
* @return List<String>
*/
public List<String> getDistinctLabels() {
Session session = null;
Query query = null;
List<String> allDifferentValues = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("PatternsKrs.findDistinctLabels");
if (query!=null) {
int nullIndex = -1;
allDifferentValues = query.list();
nullIndex = allDifferentValues.indexOf(null);
if (nullIndex > -1){
allDifferentValues.remove(nullIndex);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return allDifferentValues;
}
/**
* Get all different values of wifiencryption in patterns_krs table
* @param void
* @return List<String>
*/
public List<String> getDistinctWifiEncryptions() {
Session session = null;
Query query = null;
List<String> allDifferentValues = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("PatternsKrs.findDistinctWifiEncryptions");
if (query!=null) {
int nullIndex = -1;
allDifferentValues = query.list();
nullIndex = allDifferentValues.indexOf(null);
if (nullIndex > -1){
allDifferentValues.remove(nullIndex);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return allDifferentValues;
}
public void removeAllCorporatePolicies(){
Session session = null;
Transaction trans = null;
try {
session = getSessionFactory().openSession();
trans=session.beginTransaction();
session.createQuery("delete from CorporatePolicies").executeUpdate();
trans.commit();
} catch (Exception e) {
if (trans!=null) trans.rollback();
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
}
public void setCorporatePolicy(CorporatePolicies policy) {
Session session = null;
Transaction trans = null;
try {
session = getSessionFactory().openSession();
trans=session.beginTransaction();
session.save(policy);
trans.commit();
} catch (Exception e) {
if (trans!=null) trans.rollback();
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
}
public void removeAllSecurityRules(){
Session session = null;
Transaction trans = null;
try {
session = getSessionFactory().openSession();
trans=session.beginTransaction();
session.createQuery("delete from SecurityRules").executeUpdate();
trans.commit();
} catch (Exception e) {
if (trans!=null) trans.rollback();
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
}
public void setSecurityRule(SecurityRules rule) {
Session session = null;
Transaction trans = null;
SecurityRules existing = getSecurityRuleByName(rule.getName());
if (existing == null || existing.getName().equalsIgnoreCase("Proposed Rule by Data Miner")) {
try {
session = getSessionFactory().openSession();
trans = session.beginTransaction();
session.save(rule);
trans.commit();
} catch (Exception e) {
if (trans != null)
trans.rollback();
e.printStackTrace();
} finally {
if (session != null)
session.close();
}
}
}
public SecurityRules getSecurityRuleByName(String name) {
Query query = null;
Session session = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("SecurityRules.findByName").setString("name", name);
if (query != null) {
List<SecurityRules> list = query.list();
for (SecurityRules s: list){
if (s.getName().equals(name)) {
return s;
}
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return null;
}
public String getMessageByKey(String key, String language) {
Query query = null;
Session session = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("Message.findByKeyAndLanguage").setParameter("key", key).setParameter("language",language);
if (query != null) {
List<Message> list = query.list();
for (Message m: list){
if (m.getKey().equals(key)) {
if (m.getLanguage().equals(language)){
return m.getTranslation();
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return null;
}
/**
* Get ThreatType object by type
* @param key
* @return ThreatType
*/
public ThreatType getThreatTypebyType(String type) {
Session session = null;
Query query = null;
ThreatType tType = null;
try {
session = getSessionFactory().openSession();
query = session.getNamedQuery("ThreatType.findByType").setString("type", type);
if (query!=null) {
tType = (ThreatType) query.uniqueResult();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session!=null) session.close();
}
return tType;
}
public void addThreatClue(ThreatClue entityClue) {
Session session = null;
Transaction trans = null;
try {
session = getSessionFactory().openSession();
trans = session.beginTransaction();
session.save(entityClue);
trans.commit();
} catch (Exception e) {
if (trans != null)
trans.rollback();
e.printStackTrace();
} finally {
if (session != null)
session.close();
}
}
public void updateAccessRequest(AccessRequest accessRequest) {
Session session = null;
Transaction trans = null;
try {
session = getSessionFactory().openSession();
trans = session.beginTransaction();
session.update(accessRequest);
trans.commit();
} catch (Exception e) {
if (trans != null)
trans.rollback();
logger.log(Level.ERROR, e.getMessage());
} finally {
if (session != null)
session.close();
}
}
public static void main (String [] arg){
DBManager dbManager = new DBManager(ModuleType.RT2AE);
System.out.println("test: "+dbManager.getRisktreatments(1).getDescription());
}
}