⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 contentdirectoryservice.java

📁 国外的j2me播放器软件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
         */
        public void invoke(UPnPActionArgument[] args) throws UPnPActionInvocationException {

            try{                    
                int objectId = Integer.parseInt((String)args[0].getValue());
                String browseFlag = (String)args[1].getValue();
                int startingIndex = Integer.parseInt((String)args[3].getValue());
                int requestCount = Integer.parseInt((String)args[4].getValue());
                int updateId = objectId;
                
                if (objectId < 0 || requestCount < 0) {
                    throw new UPnPActionFailedException("OBJECTID FAULT.");
                }

                System.out.println("ObjectID: " + objectId + "; BrowseFlag: " + browseFlag + "; startingIndex: " + startingIndex + "; requestCount: " + requestCount);
                
                byte[] doSerialized = null;
                if (objectId == 0) {
                    //objectId = 1;
                    doSerialized = rs.getRecord(1);
                } else {
                    doSerialized = rs.getRecord(objectId);
                }
                
                // XXX If getRecord throws "unknown record ID" exception here 
                //     then we should throw UPnPActionInvocationException with 
                //     701 (No such object).
                //byte[] doSerialized = rs.getRecord(objectId);
                
                ByteArrayInputStream bais = new ByteArrayInputStream(
                    doSerialized);
                DataInputStream dis = new DataInputStream(bais);
                
                //
                // Variables for output
                // 
                int numberReturned = Integer.MIN_VALUE;
                int totalMatches = Integer.MIN_VALUE;
                ByteArrayOutputStream baos = new ByteArrayOutputStream(256);
                PrintStream ps = new PrintStream(baos);
                ps.print("<DIDL-Lite xmlns:dc=\"http://purl.org/dc/elements/1.1/\"");
                ps.print(" xmlns:upnp=\"urn:schemas-upnporg:metadata-1-0/upnp/\"");
                ps.print(" xmlns=\"urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/\">");
                
                String classType = dis.readUTF();

                if (browseFlag.equals("BrowseMetadata")) {
                    numberReturned = 1;
                    totalMatches = 1;

                    serializeDidlObjectToStream(ps, dis, classType);
                } else if (browseFlag.equals("BrowseDirectChildren")) {
                    if (!classType.startsWith("object.container")) {
                        throw new UPnPActionFailedException(
                            "requested object does not contain any children");
                    }

                    RecordEnumeration re = rs.enumerateRecords(
                        new DidlObjectContentFilter(objectId),
                        null,   // Might need something here later :/
                        false);

                    //
                    // Take care of StartingIndex
                    //
                    if (startingIndex > 0) {
                        while(startingIndex-- > 0 && re.hasNextElement()) {
                            re.nextRecordId();
                        }
                    }
                    
                    totalMatches = re.numRecords();
                    if (requestCount == 0) {
                        requestCount = totalMatches;
                    }
                    
                    for (numberReturned = 0;
                         re.hasNextElement() && 
                         numberReturned < requestCount; 
                         numberReturned++) 
                    {
                        dis = new DataInputStream(
                            new ByteArrayInputStream(re.nextRecord()));
                        serializeDidlObjectToStream(ps, dis, dis.readUTF());
                    }
                } else {
                    throw new UPnPActionFailedException(
                        "Error with browse flag");
                }
                
                ps.print("</DIDL-Lite>");
                
                args[6].setValue(StringEscapeUtils.escapeXml(baos.toString()));
                args[7].setValue(new Integer(numberReturned));
                args[8].setValue(new Integer(totalMatches));
                args[9].setValue(new Integer(updateId));
            } catch (RecordStoreException rse) {
                //throw new UPnPActionFailedException(ae.getMessage());                              
                LOG.warn("Error with RS");
                LOG.warn(rse);
                rse.printStackTrace();
            } catch (IOException ioe) {
                LOG.warn("IOException occured...");
                LOG.warn(ioe);
                ioe.printStackTrace();
            } catch (NumberFormatException nfe) {
                LOG.warn(nfe);
                System.out.println(nfe);
                nfe.printStackTrace();

                throw new UPnPActionFailedException("Generic error...");
            }
            
            LOG.debug("Finished :)");
        }            

        private final void serializeDidlObjectToStream(
            PrintStream ps, 
            DataInput di,
            String classType) throws IOException
        {
            if (classType.endsWith(".item")) {
                Item dido = new Item(di);
                dido.serializeXml(ps);
                dido.serializeXmlEndMarker(ps);
            } else if (classType.endsWith(".audioItem")) {
                AudioItem dido = new AudioItem(di);
                dido.serializeXml(ps);
                dido.serializeXmlEndMarker(ps);
            } else if (classType.endsWith(".musicTrack")) {
                MusicTrack dido = new MusicTrack(di);
                dido.serializeXml(ps);
                dido.serializeXmlEndMarker(ps);
            } else if (classType.endsWith(".imageItem")) {
                ImageItem dido = new ImageItem(di);
                dido.serializeXml(ps);
                dido.serializeXmlEndMarker(ps);
            } else if (classType.endsWith(".photo")) {
                Photo dido = new Photo(di);
                dido.serializeXml(ps);
                dido.serializeXmlEndMarker(ps);
            } else if (classType.endsWith(".container")) {
                Container dido = new Container(di);
                dido.serializeXml(ps);
                dido.serializeXmlEndMarker(ps);
            } else if (classType.endsWith(".album")) {
                Album dido = new Album(di);
                dido.serializeXml(ps);
                dido.serializeXmlEndMarker(ps);
            } else if (classType.endsWith(".musicAlbum")) {
                MusicAlbum dido = new MusicAlbum(di);
                dido.serializeXml(ps);
                dido.serializeXmlEndMarker(ps);
            } else if (classType.endsWith(".photoAlbum")) {
                PhotoAlbum dido = new PhotoAlbum(di);
                dido.serializeXml(ps);
                dido.serializeXmlEndMarker(ps);
            } else if (classType.endsWith(".storageFolder")) {
                StorageFolder dido = new StorageFolder(di);
                dido.serializeXml(ps);
                dido.serializeXmlEndMarker(ps);
            }
        }  
    }         
    
    
    /**
     * Search---------O
     * 
     */
    
    /*
    private class SearchAction extends UPnPAction{
        public SearchAction() {
            super("Search",new UPnPActionArgument[]{                          
                    new UPnPActionArgument("ContainerID",UPnPActionArgument.ARGUMENT_DIRECTION_IN,"A_ARG_TYPE_ObjectID"),
                    new UPnPActionArgument("SearchCriteria",UPnPActionArgument.ARGUMENT_DIRECTION_IN,"A_ARG_TYPE_SearchCriteria"),
                    new UPnPActionArgument("Filter",UPnPActionArgument.ARGUMENT_DIRECTION_IN,"A_ARG_TYPE_Filter"),
                    new UPnPActionArgument("StartingIndex",UPnPActionArgument.ARGUMENT_DIRECTION_IN,"A_ARG_TYPE_Index"),
                    new UPnPActionArgument("RequestCount",UPnPActionArgument.ARGUMENT_DIRECTION_IN,"A_ARG_TYPE_Count"),
                    new UPnPActionArgument("SortCriteria",UPnPActionArgument.ARGUMENT_DIRECTION_IN,"A_ARG_TYPE_SortCriteria"),
                    new UPnPActionArgument("Result",UPnPActionArgument.ARGUMENT_DIRECTION_OUT,"A_ARG_TYPE_Result"),
                    new UPnPActionArgument("NumberReturned",UPnPActionArgument.ARGUMENT_DIRECTION_OUT,"A_ARG_TYPE_Count"),
                    new UPnPActionArgument("TotalMatch",UPnPActionArgument.ARGUMENT_DIRECTION_OUT,"A_ARG_TYPE_Count"),
                    new UPnPActionArgument("UpdateID",UPnPActionArgument.ARGUMENT_DIRECTION_OUT,"A_ARG_TYPE_UpdateID")
                    
            });  
        }
        public String getName(){
            return "Search";
        }
        
        public void invoke(UPnPActionArgument[] args) throws UPnPActionInvocationException {             
             SourceContainer sc=new SourceContainer();
             System.out.println("111");                
             MusicContainer musicContainer=sc.musicContainerList()[0];
             AllTrackContainer allTrackContainer=musicContainer.allTrackList()[0];    
             try{
             int containerId = Integer.parseInt((String)args[0].getValue());
             String searchCriteria=(String)args[1].getValue();
             String filter=(String)args[2].getValue();
             int startingIndex = Integer.parseInt((String)args[3].getValue());
             int requestCount=Integer.parseInt((String)args[4].getValue());    
             String sortCriteria=(String)args[5].getValue();
             
             String seu=null;
             if(containerId==12){
             StringBuffer sb=new StringBuffer();                            
             sb.append("<DIDL-Lite xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\r\n");
             sb.append("xmlns:upnp=\"urn:schemas-upnporg:metadata-1-0/upnp/\"\r\n");
             sb.append("xmlns=\"urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/\">\r\n");
             int numberReturned = 0;
             //XXX:
              for(int i=startingIndex;i<allTrackContainer.songList()[0].number;i++){
              String s=allTrackContainer.songList()[0].songName(i);
              if(searchCriteria==s){
              numberReturned++;                            
              sb.append("<item id="+allTrackContainer.songList()[0].songId(i)+ 
              " refID="+""+" parentID="+allTrackContainer.songList()[0].songParentsId()+" restricted="
              +allTrackContainer.songList()[0].songRestricted()+">\r\n");
              sb.append("<dc:title>"+s+"<dc:title>\r\n");                            
              sb.append("<dc:date>"+""+"<dc:date>\r\n");
              sb.append("<upnp:class>"+"</upnp:class>");
              sb.append("<res size="+allTrackContainer.songList()[0].songSize(i)+
              "duration="+""+
              //XXX:
               " protocolInfo=\"http=get:*:audio/mpeg:*\">"+allTrackContainer.songList()[0].songUrl(i)+
               "<res>\r\n");
               sb.append("<upnp:class>"+
               "object.container.musicContainer.allTrack.songItem"+
               "</upnp:class>\r\n");
               sb.append("</DIDL-Lite>\r\n");                                
               
               }else{
               System.out.println("Could not find the song you want");
               }
               }                                        
               seu=StringEscapeUtils.escapeXml(sb.toString());
               System.out.println("The String is....:"+seu);                                
               args[6].setValue(seu);
               args[7].setValue(new Integer(numberReturned));
               args[8].setValue(new Integer(numberReturned));
               args[9].setValue(new Integer(containerId));                        
               }else {
               StringBuffer sb=new StringBuffer();                            
               sb.append("<DIDL-Lite xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\r\n");
               sb.append("xmlns:upnp=\"urn:schemas-upnporg:metadata-1-0/upnp/\"\r\n");
               sb.append("xmlns=\"urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/\">\r\n");
               sb.append("</DIDL-Lite>\r\n");    
               }
               }catch(Exception e){
               e.printStackTrace();
               }
        }
    }
*/
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -