001package gu.dtalk; 002 003import static gu.dtalk.CommonConstant.*; 004 005import com.alibaba.fastjson.JSONObject; 006 007import net.gdface.utils.FaceUtilits; 008 009public class CommonUtils { 010 011 /** 012 * 返回响应通道名 013 * @param mac 014 * @return 015 */ 016 public static String getAckChannel(String mac){ 017 return mac + ACK_SUFFIX; 018 } 019 public static String getAckChannel(byte[] mac){ 020 return getAckChannel(FaceUtilits.toHex(mac)); 021 } 022 /** 023 * 生成连接频道名 024 * @param mac 025 * @return 026 */ 027 public static String getConnChannel(String mac){ 028 return mac + CONNECT_SUFFIX; 029 } 030 public static String getConnChannel(byte[] mac){ 031 return getConnChannel(FaceUtilits.toHex(mac)); 032 } 033 private static boolean hasField(Object resp,String name){ 034 return resp instanceof JSONObject && ((JSONObject) resp).containsKey(name); 035 } 036 public static boolean isAck(Object resp){ 037 return resp instanceof JSONObject && hasField((JSONObject) resp,ACK_FIELD_STATUS); 038 } 039 public static boolean isItem(Object resp){ 040 return hasField(resp,ITEM_FIELD_NAME) 041 && hasField(resp,ITEM_FIELD_PATH) 042 && hasField(resp,ITEM_FIELD_CATALOG); 043 } 044 045 public static CmdItem makeQuit(){ 046 CmdItem item = new CmdItem(); 047 item.setName(QUIT_NAME); 048 return item; 049 } 050 public static CmdItem makeBack(){ 051 CmdItem item = new CmdItem(); 052 item.setName(BACK_NAME); 053 return item; 054 } 055 public static boolean isBack(BaseItem item){ 056 return (item instanceof BaseItem) && BACK_NAME.equals(item.getName()); 057 } 058 public static boolean isRoot(JSONObject item){ 059 return (item instanceof JSONObject) && "/".equals(item.getString(ITEM_FIELD_PATH)); 060 } 061 public static boolean isRoot(BaseItem item){ 062 return (item instanceof BaseItem) && null == item.getParent(); 063 } 064 public static boolean isQuit(BaseItem item){ 065 return (item instanceof BaseItem) && QUIT_NAME.equals(item.getName()); 066 } 067 public static boolean isQuit(JSONObject item){ 068 return (item instanceof JSONObject) && QUIT_NAME.equals(((JSONObject)item).getString(ITEM_FIELD_NAME)); 069 } 070 public static boolean isQuit(Object item){ 071 return isQuit((BaseItem) item) || isQuit((JSONObject)item); 072 } 073 public static boolean isImage(JSONObject item){ 074 return item == null ? false : OptionType.IMAGE.name().equals(item.getString(OPTION_FIELD_TYPE)); 075 } 076}