Hallo Community,
ich schreibe eine Anwendung in Eclipse, die Tweets in Form von Ereignissen verarbeitet.
Eine Engine verarbeitet sie mittels einem für sie angepassten SQL Statement:
Insert Into CountEvent
Select brand, period, count(*) as count
From TimeEvent
Group by brand, period
Der Input-Eventtyp der Engine ist TimeEvent und der Output-Typ CountEvent, da sich die Datenstruktur ändert (+ count-Attribut & Wegfall anderer Attr.).
Ein Listener der Engine empfängt den Output als HashMap. Diese soll zu einem Objekt gecastet und in einer Datenbank abgelegt werden. Dafür fragt der Listener die Attribute der HashMap ab und bildet das neue Ereignis-Objekt. (Ein Cast von HashMap zu einem OutputEvent-Objekt hat ebenfalls nicht funktioniert)
Da die Engine das count-Attribut als Long-Objekt erzeugt, ich es aber als Integer haben möchten, habe ich einen entsprechenden Cast implementiert. Das Problem ist nun bei der Ausführung des Programms in Eclipse, dass ich dennoch eine ClassCastException bekomme:
java.lang.Long cannot be cast to java.lang.Integer
Ich hoffe, ihr seht meinen Fehler und könnt mir helfen *please*
Vielen Dank vorab.
Viele Grüße
Antje
ich schreibe eine Anwendung in Eclipse, die Tweets in Form von Ereignissen verarbeitet.
Eine Engine verarbeitet sie mittels einem für sie angepassten SQL Statement:
Insert Into CountEvent
Select brand, period, count(*) as count
From TimeEvent
Group by brand, period
Der Input-Eventtyp der Engine ist TimeEvent und der Output-Typ CountEvent, da sich die Datenstruktur ändert (+ count-Attribut & Wegfall anderer Attr.).
Ein Listener der Engine empfängt den Output als HashMap. Diese soll zu einem Objekt gecastet und in einer Datenbank abgelegt werden. Dafür fragt der Listener die Attribute der HashMap ab und bildet das neue Ereignis-Objekt. (Ein Cast von HashMap zu einem OutputEvent-Objekt hat ebenfalls nicht funktioniert)
Da die Engine das count-Attribut als Long-Objekt erzeugt, ich es aber als Integer haben möchten, habe ich einen entsprechenden Cast implementiert. Das Problem ist nun bei der Ausführung des Programms in Eclipse, dass ich dennoch eine ClassCastException bekomme:
java.lang.Long cannot be cast to java.lang.Integer
Ich hoffe, ihr seht meinen Fehler und könnt mir helfen *please*
Vielen Dank vorab.
Viele Grüße
Antje
Java:
package SocialMediaCEP.Listener;
import org.apache.log4j.Logger;
import SocialMediaCEP.Database.Database;
import SocialMediaCEP.EventBean.CountEvent;
import SocialMediaCEP.Network.*;
import SocialMediaCEP.Statement.StatementBrandMonitor;
import com.espertech.esper.client.EventBean;
import com.espertech.esper.client.UpdateListener;
public class ListenerCount implements UpdateListener{
private static Logger log = Logger.getLogger(ListenerCount.class);
private Database db = new Database();
public void update(EventBean[] newData, EventBean[] oldData) {
if (newData == null) {
return;
}
int anzahl = newData.length;
for (int i= 0; i < anzahl; i++){
int count = (Integer) newData[i].get("count");
String brand = (String) newData[i].get("brand");
String period = (String) newData[i].get("period");
CountEvent event = new CountEvent(count, brand, period);
}
}
}