private   void  download(final String id, final String title, final int lastRow) throws IOException, InterruptedException{

		Runnable dl = new Runnable() {

			@Override
			public void run() {

				Result songURL = null;
				try {
					songURL = JGroovex.getSongURL(id).result;
				} catch (IOException e1) {
					modelDl.setValueAt(("Error"), lastRow-1, 1);
					e1.printStackTrace();
				}
				System.out.println("Serverid:"+songURL.streamServerID);
				System.out.println("Serverid:"+songURL.streamKey);
				System.out.println("Serverid:"+songURL.ip);
				modelDl.setValueAt(("Downloading"), lastRow-1, 1);
				SongStream params = null;

				InputStream is = null;
				int downloaded=0;
				try {
					
					params =  JGroovex.getSongStream(songURL.ip, songURL.streamKey);
					JGroovex.markSongAsDownloaded(songURL.streamServerID, songURL.streamKey, id);
					initTimer(songURL.streamServerID, songURL.streamKey, id);
				} catch (IOException e1) {
					modelDl.setValueAt(("Error"), lastRow-1, 1);
					e1.printStackTrace();
				}
				is = params.getStream();
				int lenght = params.getSize();

				File f=new File(downloadPath+File.separator+clearTitle(title)+".mp3");
				OutputStream out = null;
				try {
					out = new FileOutputStream(f);
				} catch (FileNotFoundException e) {

					e.printStackTrace();
				}
				byte buf[]=new byte[3000];
				int len;
				try {

					while((len=is.read(buf))>0){
						downloaded+=len;
						out.write(buf,0,len);
						modelDl.setValueAt(downloaded*100/lenght+"%", lastRow-1, 2);
					}
				} catch (IOException e) {
					modelDl.setValueAt(("Error"), lastRow-1, 1);
					e.printStackTrace();
				}
				try {
					out.close();
				} catch (IOException e) {

					e.printStackTrace();
				}
				try {
					is.close();
				} catch (IOException e) {

					e.printStackTrace();
				}
				//System.out.println("\nFile Downloaded...................................");
				modelDl.setValueAt(("Finished"), lastRow-1, 1);
				try {
					JGroovex.markSongComplete(songURL.streamServerID, songURL.streamKey, id);
					timer.cancel();
				} catch (IOException e) {

					e.printStackTrace();
				}

			}
		};
		exec.execute(dl);


	}