szkielet oblsugi eventow

This commit is contained in:
lukasgol committed 2015-02-01 16:20:45 +01:00
1 parent 6942009358
commit a733249665
4 files changed
+87

No files matched your search

@@ -0,0 +1,53 @@
package application.events;
import org.reflections.Reflections;
import org.springframework.stereotype.Component;
import java.util.HashSet;
import java.util.Set;
/**
* Created by lukasgol on 01.02.15.
*/
@Component
public class EventManager {
Set<Class<? extends EventObject>> eventClassSet;
Set<EventObject> eventsSet;
public EventManager() {
eventClassSet = findEventClasses();
eventsSet = instantiateEvents(eventClassSet);
System.out.println("Class EventManagerCreated");
}
public Set<Class<? extends EventObject>> findEventClasses(){
System.out.println("Class Finder started...");
Reflections reflections = new Reflections("application.events.impl");
Set<Class<? extends EventObject>> classes = reflections.getSubTypesOf(EventObject.class);
System.out.println("Class Finder stoped");
return classes;
}
public Set<EventObject> instantiateEvents(Set<Class<? extends EventObject>> classes){
Set<EventObject> eventObjectSet = new HashSet<>();
for (Class<? extends EventObject> c : classes) {
try {
EventObject obj=c.newInstance();
System.out.println("Crated new Event: "+c.getName());
eventObjectSet.add(obj);
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return eventObjectSet;
}
public void startEvents(){
for(EventObject e:eventsSet){
e.validEvent();
if(e.isValid())e.handleEvent();
}
}
}
@@ -0,0 +1,10 @@
package application.events;
/**
* Created by lukasgol on 01.02.15.
*/
public interface EventObject {
public void validEvent();
public void handleEvent();
public boolean isValid();
}
@@ -0,0 +1,23 @@
package application.events.impl;
import application.events.EventObject;
/**
* Created by lukasgol on 01.02.15.
*/
public class EventObjectImpl implements EventObject {
@Override
public void validEvent() {
System.out.println("Chceking event: "+this.getClass().getName());
}
@Override
public void handleEvent() {
System.out.println("sending notification for event: "+this.getClass().getName());
}
@Override
public boolean isValid() {
return true;
}
}