1 package org.musicontroller.gui.dynamic; 2 3 import org.apache.tapestry.engine.ServiceEncoder; 4 import org.apache.tapestry.engine.ServiceEncoding; 5 import org.apache.tapestry.services.ServiceConstants; 6 import org.musicontroller.streaming.Downloader; 7 8 public class SongDownloadEncoder implements ServiceEncoder { 9 10 public void decode(ServiceEncoding encoding) { 11 String servletPath = encoding.getServletPath(); 12 13 if (servletPath.startsWith("/song/")) { 14 String id = servletPath.substring(6, servletPath.indexOf(".mp3")); 15 16 encoding.setParameterValue(ServiceConstants.SERVICE, Downloader.SERVICE_NAME); 17 encoding.setParameterValue("id", id); 18 encoding.setParameterValue("kind", "S"); 19 } 20 } 21 22 public void encode(ServiceEncoding encoding) { 23 String service = encoding.getParameterValue(ServiceConstants.SERVICE); 24 String kind = encoding.getParameterValue("kind"); 25 if ("S".equals(kind) && service.equals(Downloader.SERVICE_NAME)) { 26 StringBuilder sb = new StringBuilder("/song/"); 27 sb.append(encoding.getParameterValue("id")); 28 sb.append(".mp3"); 29 encoding.setServletPath(sb.toString()); 30 31 encoding.setParameterValue(ServiceConstants.SERVICE, null); 32 encoding.setParameterValue("id", null); 33 encoding.setParameterValue("kind", null); 34 } 35 } 36 37 38 }