When we are creating flex charts, for example Column chart we have to bind an ArrayCollection something like this :
[Bindable]
private var chartData:ArrayCollection = new ArrayCollection([
{X: "Jan", Y: 10},
{X: "Feb", Y: 20},
{X: "Mar", Y: 30}
]);
If I need to get this data from Java back-end, then what kind of a data structure can be used in java ?
Thanks!
Try this
// this class is used for the arraylist/collection of point X and Y
// on actionscript side you will see the property you declare as public
public class ChartPoint {
public String X;
public String Y;
}
public class ChartData{
// method called from remoteobject from actionscript
// it will return a java arraylist of type chartpoint
// actionscript will receive an arraycollection with the property of
// ChartPoint you declared public
public ArrayList<ChartPoint> getValuesFromChart()
{
ArrayList<ChartPoint> chartData = new ArrayList<ChartPoint>();
....
// initialization and fill the chartData list...
return chartData;
}
}
From actionscript you will use the AMF protocol...
ro = new RemoteObject();
ro.destination = "destination"; // configured in blazeds/tomcat server
var cs:ChannelSet = new ChannelSet();
var customChannel:Channel = new AMFChannel("my-amf", "http://your-amf-channel");
cs.addChannel(customChannel);
ro.channelSet = cs;
ro.addEventListener(ResultEvent.RESULT,
function(e:ResultEvent):void{
if (e.result != null)
{
// you have a result...
this.chartData = e.result;
}
});
ro.addEventListener(FaultEvent.FAULT,function(e:FaultEvent):void{
// manage the error
});
ro.getValuesFromChart();