MasterDetailVariant.mlg

variable vBaseServicePackage = common;

package generated;

bean MasterBean 
{
    String id;
    String artist;
    String album;
}

bean DetailBean 
{
    String master_id;
    int trackno;
    String title;
}

wrapbean Album
{
    String artist;
    String album;
    List<String> trackList;
}

package generated;

service MasterDetailVariantService
{
    implementation List<MasterBean> getMasterList()
    <<
        select id, artist, album
        from   t_master
    >>

    implementation List<DetailBean> getDetailList(String masterId)
    <<
        select master_id, trackno, title
        from   t_detail
        where  master_id=?
    >>


    List<Album> getAlbumList()
    {{
        List<Album> albumList= new ArrayList<Album>();

        for ( MasterBean m : getMasterList() ) 
        {
            Album a=new Album();

            // set master details
            a.setArtist(m.getArtist());
            a.setAlbum(m.getAlbum());

            // set the detail details
            List<String> tList=new ArrayList<String>();
            for (DetailBean d : getDetailList( m.getId() ) )
            {
               tList.add( d.getTitle() ) ; 
            }
            a.setTrackList(tList);

            albumList.add(a);
        } 

        return albumList;
    }} 

}

© Willem Moors, 2009 - 2013