Search code examples
javaapache-flexblazeds

ArrayCollections of Flex Charts from Java


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!


Solution

  • 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();