// Path: scene-core/src/main/java/br/ufes/inf/lprm/scene/util/OnGoingSituation.java
// public class OnGoingSituation {
// 	
// 	private int currentId;
// 	private SituationCast cast;
// 	private br.ufes.inf.lprm.situation.model.SituationType type;
// 	private String typename;
// 	private Situation situation;
// 	private long timestamp;
// 	private int hashcode;
// 	
// 	public OnGoingSituation(br.ufes.inf.lprm.situation.model.SituationType type, long timestamp, SituationCast cast) {
// 		this.currentId = ((SituationType) type).getTypeClass().hashCode() + cast.hashCode();
// 		this.hashcode = cast.hashCode();
// 		this.cast = cast;
// 		this.type = type;
// 		this.typename = type.getName();
// 		this.timestamp = timestamp;
// 	}
// 
// 	public SituationCast getCast() {
// 		return cast;
// 	}
// 	public br.ufes.inf.lprm.situation.model.SituationType getType() {
// 		return type;
// 	}
// 
// 	public void setSituation(Situation situation) {
// 		this.situation = situation;
// 	}
// 	public Situation getSituation() {
// 		return situation;
// 	}
// 	
// 	@Override
// 	public boolean equals(Object obj) {
// 		
// 		if (obj == null) {
// 			return false;
// 		}
// 		else {			
// 			if ( !(obj instanceof OnGoingSituation) ) {
// 				return false;
// 			}			
// 			else {
// 				return this.type.equals(((OnGoingSituation) obj).getType()) && this.cast.equals(((OnGoingSituation) obj).getCast());
// 				
// 			}
// 		}		
// 	}
// 	@Override	
// 	public int hashCode() {
// 		return this.currentId;
// 	}
// 
// 	public long getTimestamp() {
// 		return timestamp;
// 	}
// 
// 	public int getHashcode() {
// 		return hashcode;
// 	}
// 
// 	public void setHashcode(int hashcode) {
// 		this.hashcode = hashcode;
// 	}
// 
// 	public String getTypename() {
// 		return typename;
// 	}
// 
// 	public void setTypename(String typename) {
// 		this.typename = typename;
// 	}
// 
//     public String toString() {
// 
//         StringBuilder str = new StringBuilder();
//         str.append("TYPE: ");
//         str.append(typename);
//         str.append("\t");
//         str.append("ID: ");
//         str.append(currentId);
//         str.append("\t");
//         str.append("CAST: ");
//         str.append(this.cast.toString());
// 
//         return str.toString();
// 
//     }
// 
// }
// 
// Path: scene-core/src/main/java/br/ufes/inf/lprm/scene/base/logging/SCENELogger.java
// public class SCENELogger {
// 
//     public static Logger logger = LoggerFactory.getLogger(SCENELogger.class);
// 
// }
// 
// Path: situation-model/src/main/java/br/ufes/inf/lprm/situation/model/events/SituationEvent.java
// public interface SituationEvent {
// 
// 	public long getTimestamp();
// 	public Situation getSituation();
// 
// }


import br.ufes.inf.lprm.scene.util.OnGoingSituation;
import br.ufes.inf.lprm.scene.base.logging.SCENELogger;
import br.ufes.inf.lprm.situation.model.events.SituationEvent;
import org.kie.api.event.rule.DefaultRuleRuntimeEventListener;
import org.kie.api.event.rule.ObjectDeletedEvent;
import org.kie.api.event.rule.ObjectInsertedEvent;
import org.kie.api.event.rule.ObjectUpdatedEvent;
import org.slf4j.Logger;

package br.ufes.inf.lprm.scene.base.listeners;


public class SCENESessionListener extends DefaultRuleRuntimeEventListener {

    Logger logger = SCENELogger.logger;

    public SCENESessionListener() {
        this.logger = SCENELogger.logger;
    }
    public SCENESessionListener(Logger logger) {
        this.logger = logger;
    }

    @Override
    public void objectInserted(ObjectInsertedEvent event) {

// Path: scene-core/src/main/java/br/ufes/inf/lprm/scene/util/OnGoingSituation.java
// public class OnGoingSituation {
// 	
// 	private int currentId;
// 	private SituationCast cast;
// 	private br.ufes.inf.lprm.situation.model.SituationType type;
// 	private String typename;
// 	private Situation situation;
// 	private long timestamp;
// 	private int hashcode;
// 	
// 	public OnGoingSituation(br.ufes.inf.lprm.situation.model.SituationType type, long timestamp, SituationCast cast) {
// 		this.currentId = ((SituationType) type).getTypeClass().hashCode() + cast.hashCode();
// 		this.hashcode = cast.hashCode();
// 		this.cast = cast;
// 		this.type = type;
// 		this.typename = type.getName();
// 		this.timestamp = timestamp;
// 	}
// 
// 	public SituationCast getCast() {
// 		return cast;
// 	}
// 	public br.ufes.inf.lprm.situation.model.SituationType getType() {
// 		return type;
// 	}
// 
// 	public void setSituation(Situation situation) {
// 		this.situation = situation;
// 	}
// 	public Situation getSituation() {
// 		return situation;
// 	}
// 	
// 	@Override
// 	public boolean equals(Object obj) {
// 		
// 		if (obj == null) {
// 			return false;
// 		}
// 		else {			
// 			if ( !(obj instanceof OnGoingSituation) ) {
// 				return false;
// 			}			
// 			else {
// 				return this.type.equals(((OnGoingSituation) obj).getType()) && this.cast.equals(((OnGoingSituation) obj).getCast());
// 				
// 			}
// 		}		
// 	}
// 	@Override	
// 	public int hashCode() {
// 		return this.currentId;
// 	}
// 
// 	public long getTimestamp() {
// 		return timestamp;
// 	}
// 
// 	public int getHashcode() {
// 		return hashcode;
// 	}
// 
// 	public void setHashcode(int hashcode) {
// 		this.hashcode = hashcode;
// 	}
// 
// 	public String getTypename() {
// 		return typename;
// 	}
// 
// 	public void setTypename(String typename) {
// 		this.typename = typename;
// 	}
// 
//     public String toString() {
// 
//         StringBuilder str = new StringBuilder();
//         str.append("TYPE: ");
//         str.append(typename);
//         str.append("\t");
//         str.append("ID: ");
//         str.append(currentId);
//         str.append("\t");
//         str.append("CAST: ");
//         str.append(this.cast.toString());
// 
//         return str.toString();
// 
//     }
// 
// }
// 
// Path: scene-core/src/main/java/br/ufes/inf/lprm/scene/base/logging/SCENELogger.java
// public class SCENELogger {
// 
//     public static Logger logger = LoggerFactory.getLogger(SCENELogger.class);
// 
// }
// 
// Path: situation-model/src/main/java/br/ufes/inf/lprm/situation/model/events/SituationEvent.java
// public interface SituationEvent {
// 
// 	public long getTimestamp();
// 	public Situation getSituation();
// 
// }


// Path: scene-core/src/main/java/br/ufes/inf/lprm/scene/base/listeners/SCENESessionListener.java
import br.ufes.inf.lprm.scene.util.OnGoingSituation;
import br.ufes.inf.lprm.scene.base.logging.SCENELogger;
import br.ufes.inf.lprm.situation.model.events.SituationEvent;
import org.kie.api.event.rule.DefaultRuleRuntimeEventListener;
import org.kie.api.event.rule.ObjectDeletedEvent;
import org.kie.api.event.rule.ObjectInsertedEvent;
import org.kie.api.event.rule.ObjectUpdatedEvent;
import org.slf4j.Logger;

package br.ufes.inf.lprm.scene.base.listeners;


public class SCENESessionListener extends DefaultRuleRuntimeEventListener {

    Logger logger = SCENELogger.logger;

    public SCENESessionListener() {
        this.logger = SCENELogger.logger;
    }
    public SCENESessionListener(Logger logger) {
        this.logger = logger;
    }

    @Override
    public void objectInserted(ObjectInsertedEvent event) {

        Object in = event.getObject();
