MetadataQuery.java :  » Music-Sound » musikcube » org » musikcube » core » Android Open Source

Android Open Source » Music Sound » musikcube 
musikcube » org » musikcube » core » MetadataQuery.java
package org.musikcube.core;

import doep.xml.ReaderNode;
import doep.xml.WriterNode;

public class MetadataQuery extends IQuery {
  
  public final java.util.ArrayList<Integer> requestedTracks  = new java.util.ArrayList<Integer>(); 
  public final java.util.ArrayList<String> requestedMetakeys    = new java.util.ArrayList<String>(); 
  public final java.util.ArrayList<Track> resultTracks      = new java.util.ArrayList<Track>(); 
  
  public MetadataQuery() {
    super();
    this.type  = "TrackMetadata";
  }


  @Override   
  public void SendQuery(WriterNode node)
    throws Exception 
  {
    WriterNode queryNode  = this.SendQueryNode(node);
    
    WriterNode metakeysNode  = queryNode.ChildNode("metakeys");
    
    String metakeys    = "";
    int metakeysCount  = this.requestedMetakeys.size();
    for(int i=0;i<metakeysCount;i++){
      if(i!=0){
        metakeys  += ",";
      }
      metakeys  += this.requestedMetakeys.get(i);
    }
    metakeysNode.content  = metakeys;

    WriterNode tracksNode  = queryNode.ChildNode("tracks");
    String tracks  = "";
    int tracksCount  = this.requestedTracks.size();
    for(int i=0;i<tracksCount;i++){
      if(i!=0){
        tracks  += ",";
      }
      tracks  += this.requestedTracks.get(i).toString();
    }
    tracksNode.content  = tracks;
    
    
    queryNode.End();
  }
  
  @Override   
  public void ReceiveQueryResult(ReaderNode node)
    throws Exception
  {
    
    ReaderNode trackNode  = null;
    while( (trackNode=node.ChildNode("t"))!=null ){
      Track track  = new Track();
      track.id  = Integer.parseInt(trackNode.attributes.get("id"));
      
      ReaderNode mdNode  = null;
      while( (mdNode=trackNode.ChildNode("md"))!=null ){
        mdNode.End();
        track.metadata.put(mdNode.attributes.get("k"), mdNode.content);
      }
      
      this.resultTracks.add(track);
      
    }
    
    if(this.listener!=null){
      this.listener.OnQueryResults(this);
    }
  }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.