/*
DConnectSpecConstants.java
Copyright (c) 2016 NTT DOCOMO,INC.
Released under the MIT license
http://opensource.org/licenses/mit-license.php
*/
package org.deviceconnect.android.profile.spec;
import org.deviceconnect.message.intent.message.IntentDConnectMessage;
/**
* Device Connect APIの仕様を定義する上で必要な定数.
*
* @author NTT DOCOMO, INC.
*/
public interface DConnectSpecConstants {
/**
* APIの種類.
*/
enum Type {
ONESHOT("one-shot"),
EVENT("event"),
STREAMING("streaming");
private String mName;
Type(final String name) {
mName = name;
}
public String getName() {
return mName;
}
public static Type parse(final String value) {
for (Type type : values()) {
if (type.mName.equalsIgnoreCase(value)) {
return type;
}
}
return null;
}
}
/**
* APIのメソッド名.
*/
enum Method {
GET("GET"),
PUT("PUT"),
POST("POST"),
DELETE("DELETE");
private String mName;
Method(final String name) {
mName = name;
}
public String getName() {
return mName;
}
public static Method parse(final String value) {
for (Method method : values()) {
if (method.mName.equalsIgnoreCase(value)) {
return method;
}
}
return null;
}
public static Method fromAction(final String action) {
if (IntentDConnectMessage.ACTION_GET.equals(action)) {
return GET;
} else if (IntentDConnectMessage.ACTION_PUT.equals(action)) {
return PUT;
} else if (IntentDConnectMessage.ACTION_POST.equals(action)) {
return POST;
} else if (IntentDConnectMessage.ACTION_DELETE.equals(action)) {
return DELETE;
}
return null;
}
public boolean isValid(final String name) {
return parse(name) != null;
}
}
/**
* データの種類.
*/
enum DataType {
ARRAY("array"),
BOOLEAN("boolean"),
INTEGER("integer"),
NUMBER("number"),
STRING("string"),
FILE("file");
private final String mName;
DataType(final String name) {
mName = name;
}
public String getName() {
return mName;
}
public static DataType fromName(final String name) {
for (DataType type : DataType.values()) {
if (type.mName.equalsIgnoreCase(name)) {
return type;
}
}
return null;
}
}
/**
* データのフォーマット指定.
*/
enum DataFormat {
INT32("int32"),
INT64("int64"),
FLOAT("float"),
DOUBLE("double"),
TEXT("text"),
BYTE("byte"),
BINARY("binary"),
DATE("date"),
DATE_TIME("date-time"),
PASSWORD("password"),
RGB("rgb");
private final String mName;
DataFormat(final String name) {
mName = name;
}
public String getName() {
return mName;
}
public static DataFormat fromName(final String name) {
for (DataFormat format : DataFormat.values()) {
if (format.mName.equalsIgnoreCase(name)) {
return format;
}
}
return null;
}
}
}