📄 contentdirectoryservice.java
字号:
package no.auc.one.portableplayer.lms;
import java.io.*;
import java.util.*;
import javax.microedition.io.Connector;
import javax.microedition.io.file.*;
import javax.microedition.rms.*;
import no.auc.one.portableplayer.communication.upnphosting.*;
import no.auc.one.portableplayer.utils.StringEscapeUtils;
import org.apache.log4j.Logger;
/**
* ContentDirectoryService
*
*/
public final class ContentDirectoryService extends UPnPHostingServiceBase{
private static Logger LOG = Logger.getLogger("LMS/CDS");
private static ContentDirectoryService selfReg = null;
Hashtable actions;
GetSearchCapabilitiesAction gsc;
GetSortCapabilitiesAction gsc2;
GetSystemUpdateIDAction gsu;
BrowseAction browse;
// SearchAction search;
private RecordStore rs;
private ContentDirectoryService(){
try {
rs = RecordStore.openRecordStore(
ServerDevice.getIndexStoreName(),
true);
gsc=new GetSearchCapabilitiesAction();
gsc2=new GetSortCapabilitiesAction();
gsu=new GetSystemUpdateIDAction();
browse=new BrowseAction();
//search=new SearchAction();
actions = new Hashtable(4);
actions.put(gsc.getName(),gsc);
actions.put(gsc2.getName(),gsc2);
actions.put(gsu.getName(),gsu);
actions.put(browse.getName(),browse);
//actions.put(search.getName(),search);
} catch (RecordStoreException rse) {
System.out.println("Error opening record store for file index");
rse.printStackTrace();
}
}
public static ContentDirectoryService getInstance() {
if (selfReg == null) {
selfReg = new ContentDirectoryService();
}
return selfReg;
}
public String serviceType() {
return "urn:schemas-upnp-org:service:ContentDirectory:1";
}
public String getName(){
return "ContentDirectoryService";
}
public String serviceId() {
return "urn:upnp-org:serviceId:ContentDirectory";
}
public Hashtable actionTable(){
return actions;
}
public UPnPStateVariable[] stateVariableList() {
return new UPnPStateVariable[]{
new UPnPStateVariable(
"A_ARG_TYPE_ObjectID",
UPnPStateVariable.STATEVARIABLE_DATATYPE_STRING,
false),
new UPnPStateVariable(
"A_ARG_TYPE_Result",
UPnPStateVariable.STATEVARIABLE_DATATYPE_STRING,
false),
new UPnPStateVariable(
"A_ARG_TYPE_SearchCriteria",
UPnPStateVariable.STATEVARIABLE_DATATYPE_STRING,
false),
new UPnPStateVariable(
"A_ARG_TYPE_BrowseFlag",
UPnPStateVariable.STATEVARIABLE_DATATYPE_STRING,
false,
new String[]{
"BrowseMetadata",
"BrowseDirectChildren"}),
new UPnPStateVariable(
"A_ARG_TYPE_Filter",
UPnPStateVariable.STATEVARIABLE_DATATYPE_STRING,
false),
new UPnPStateVariable(
"A_ARG_TYPE_SortCriteria",
UPnPStateVariable.STATEVARIABLE_DATATYPE_STRING,
false),
new UPnPStateVariable(
"A_ARG_TYPE_Index",
UPnPStateVariable.STATEVARIABLE_DATATYPE_UI4,
false),
new UPnPStateVariable(
"A_ARG_TYPE_Count",
UPnPStateVariable.STATEVARIABLE_DATATYPE_UI4,
false),
new UPnPStateVariable(
"A_ARG_TYPE_UpdateID",
UPnPStateVariable.STATEVARIABLE_DATATYPE_UI4,
false),
new UPnPStateVariable(
"SearchCapabilities",
UPnPStateVariable.STATEVARIABLE_DATATYPE_STRING,
false),
new UPnPStateVariable(
"SortCapabilities",
UPnPStateVariable.STATEVARIABLE_DATATYPE_STRING,
false),
new UPnPStateVariable(
"SystemUpdateID",
UPnPStateVariable.STATEVARIABLE_DATATYPE_UI4)};
}
/**
* GetSearchCapabilities-----R
*
*/
private class GetSearchCapabilitiesAction extends UPnPAction{
public GetSearchCapabilitiesAction() {
super(
"GetSearchCapabilities",
new UPnPActionArgument[]{
new UPnPActionArgument(
"SearchCaps",
UPnPActionArgument.ARGUMENT_DIRECTION_OUT,
"SearchCapabilities")});
}
public String getName(){
return "GetSearchCapabilities";
}
public void invoke(UPnPActionArgument[] args) throws UPnPActionInvocationException {
// XXX No search support currently
args[0].setValue(new String(""/*"dc:title"*/));
}
}
/**
* GetSortCapabilities-------R
*
*/
private class GetSortCapabilitiesAction extends UPnPAction{
public GetSortCapabilitiesAction() {
super("GetSortCapabilities",new UPnPActionArgument[]{
new UPnPActionArgument(
"SortCaps",
UPnPActionArgument.ARGUMENT_DIRECTION_OUT,
"SortCapabilities")});
}
public String getName(){
return "GetSortCapabilities";
}
public void invoke(UPnPActionArgument[] args) throws UPnPActionInvocationException {
args[0].setValue(new String("dc:title"));
}
}
/**
* GetSystemUpdateID-------R
*
*/
private class GetSystemUpdateIDAction extends UPnPAction{
public GetSystemUpdateIDAction() {
super(
"GetSystemUpdateID",
new UPnPActionArgument[]{
new UPnPActionArgument(
"Id",
UPnPActionArgument.ARGUMENT_DIRECTION_OUT,
"SystemUpdateID")});
}
public String getName(){
return "GetSystemUpdateID";
}
public void invoke(UPnPActionArgument[] args) throws UPnPActionInvocationException {
args[0].setValue(new Integer(0));
}
}
/**
*
* BrowseAction inside ContentDirectoryService------R
*
*/
private class BrowseAction extends UPnPAction {
public BrowseAction() {
super(
"Browse",
new UPnPActionArgument[] {
new UPnPActionArgument(
"ObjectID",
UPnPActionArgument.ARGUMENT_DIRECTION_IN,
"A_ARG_TYPE_ObjectID"),
new UPnPActionArgument(
"BrowseFlag",
UPnPActionArgument.ARGUMENT_DIRECTION_IN,
"A_ARG_TYPE_BrowseFlag"),
new UPnPActionArgument(
"Filter",
UPnPActionArgument.ARGUMENT_DIRECTION_IN,
"A_ARG_TYPE_Filter"),
new UPnPActionArgument(
"StartingIndex",
UPnPActionArgument.ARGUMENT_DIRECTION_IN,
"A_ARG_TYPE_Index"),
new UPnPActionArgument(
"RequestedCount",
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(
"TotalMatches",
UPnPActionArgument.ARGUMENT_DIRECTION_OUT,
"A_ARG_TYPE_Count"),
new UPnPActionArgument(
"UpdateID",
UPnPActionArgument.ARGUMENT_DIRECTION_OUT,
"A_ARG_TYPE_UpdateID")});
}
public String getName(){
return "Browse";
}
/**
* Invoke method to receive the argument from the control point and
* output the result base on the different arguments
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -