@Override
        public void gotResult(int code, String alias, Set<String> tags) {
          String logs;
          switch (code) {
            case 0:
              logs = "Set tag and alias success";
              Log.i(TAG, logs);
              break;

            case 6002:
              logs = "Failed to set alias and tags due to timeout. Try again after 60s.";
              Log.i(TAG, logs);
              if (ExampleUtil.isConnected(getApplicationContext())) {
                mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_SET_TAGS, tags), 1000 * 60);
              } else {
                Log.i(TAG, "No network");
              }
              break;

            default:
              logs = "Failed with errorCode = " + code;
              Log.e(TAG, logs);
          }

          ExampleUtil.showToast(logs, getApplicationContext());
        }
  private void setTag() {
    EditText tagEdit = (EditText) findViewById(R.id.et_tag);
    String tag = tagEdit.getText().toString().trim();

    // 检查 tag 的有效性
    if (TextUtils.isEmpty(tag)) {
      Toast.makeText(PushSetActivity.this, R.string.error_tag_empty, Toast.LENGTH_SHORT).show();
      return;
    }

    // ","隔开的多个 转换成 Set
    String[] sArray = tag.split(",");
    Set<String> tagSet = new LinkedHashSet<String>();
    for (String sTagItme : sArray) {
      if (!ExampleUtil.isValidTagAndAlias(sTagItme)) {
        Toast.makeText(PushSetActivity.this, R.string.error_tag_gs_empty, Toast.LENGTH_SHORT)
            .show();
        return;
      }
      tagSet.add(sTagItme);
    }

    // 调用JPush API设置Tag
    mHandler.sendMessage(mHandler.obtainMessage(MSG_SET_TAGS, tagSet));
  }
  private void setAlias() {
    EditText aliasEdit = (EditText) findViewById(R.id.et_alias);
    String alias = aliasEdit.getText().toString().trim();
    if (TextUtils.isEmpty(alias)) {
      Toast.makeText(PushSetActivity.this, R.string.error_alias_empty, Toast.LENGTH_SHORT).show();
      return;
    }
    if (!ExampleUtil.isValidTagAndAlias(alias)) {
      Toast.makeText(PushSetActivity.this, R.string.error_tag_gs_empty, Toast.LENGTH_SHORT).show();
      return;
    }

    // 调用JPush API设置Alias
    mHandler.sendMessage(mHandler.obtainMessage(MSG_SET_ALIAS, alias));
  }
  private static final void dumpVectorEntryHeader(
      OMMVectorEntry entry, PrintStream ps, int tabLevel) {
    dumpIndent(ps, tabLevel);
    ps.print(OMMTypes.toString(entry.getType()));
    ps.print(" ");
    ps.print(entry.getPosition());
    ps.print(" (");
    ps.print(OMMVectorEntry.Action.vectorActionString(entry.getAction()));
    if (entry.has(OMMVectorEntry.HAS_PERMISSION_DATA)) ps.print(", HasPermissionData");
    ps.println(") : ");

    String flagsString = ExampleUtil.vectorEntryFlagsString(entry);
    dumpIndent(ps, tabLevel);
    ps.print("flags: ");
    ps.println(flagsString);
  }
  private static final void dumpFilterEntryHeader(
      OMMFilterEntry entry, PrintStream ps, int tabLevel) {
    dumpIndent(ps, tabLevel);
    ps.print(OMMTypes.toString(entry.getType()));
    ps.print(" ");
    ps.print(entry.getFilterId());
    ps.print(" (");
    ps.print(OMMFilterEntry.Action.toString(entry.getAction()));
    if (entry.has(OMMFilterEntry.HAS_PERMISSION_DATA)) ps.print(", HasPermissionData");
    if (entry.has(OMMFilterEntry.HAS_DATA_FORMAT)) ps.print(", HasDataFormat");
    ps.println(") : ");

    String flagsString = ExampleUtil.filterEntryFlagsString(entry);
    dumpIndent(ps, tabLevel);
    ps.print("flags: ");
    ps.println(flagsString);
  }
  private static final void dumpMapEntryHeader(OMMMapEntry entry, PrintStream ps, int tabLevel) {
    dumpIndent(ps, tabLevel);
    ps.print(OMMTypes.toString(entry.getType()));
    ps.print(" (");
    ps.print(OMMMapEntry.Action.toString(entry.getAction()));
    if (entry.has(OMMMapEntry.HAS_PERMISSION_DATA)) ps.print(", HasPermissionData");
    ps.println(") : ");

    String flagsString = ExampleUtil.mapEntryFlagsString(entry);
    dumpIndent(ps, tabLevel);
    ps.print("flags: ");
    ps.println(flagsString);

    dumpIndent(ps, tabLevel);
    ps.print("Key: ");
    parseData(entry.getKey(), ps, 0);
    dumpIndent(ps, tabLevel);
    ps.println("Value: ");
  }
 public static void main(String[] args) {
   HypixelAPI.getInstance().setApiKey(UUID.fromString("64bd424e-ccb0-42ed-8b66-6e42a135afb4"));
   HypixelAPI.getInstance()
       .findGuild(
           "AYS",
           null,
           new Callback<FindGuildReply>(FindGuildReply.class) {
             @Override
             public void callback(Throwable failCause, FindGuildReply result) {
               if (failCause != null) {
                 failCause.printStackTrace();
               } else {
                 System.out.println(result);
                 if (result.getGuild() == null) {
                   System.out.println("No guild by that name/player!");
                 } else {
                   HypixelAPI.getInstance()
                       .getGuild(
                           result.getGuild(),
                           new Callback<GuildReply>(GuildReply.class) {
                             @Override
                             public void callback(Throwable failCause, GuildReply result) {
                               if (failCause != null) {
                                 failCause.printStackTrace();
                               } else {
                                 System.out.println(result);
                               }
                             }
                           });
                   return;
                 }
               }
               HypixelAPI.getInstance().finish();
               System.exit(0);
             }
           });
   ExampleUtil
       .await(); // This is required because the API is asynchronous, so without this the program
                 // will exit.
 }
  private static final void parseAggregateHeader(OMMData data, PrintStream ps, int tabLevel) {
    dumpIndent(ps, tabLevel);
    short dataType = data.getType();
    ps.println(OMMTypes.toString(dataType));
    switch (dataType) {
      case OMMTypes.FIELD_LIST:
        {
          // set DICTIONARY to the dictId for this field list
          OMMFieldList fieldList = (OMMFieldList) data;
          int dictId = fieldList.getDictId();
          CURRENT_DICTIONARY = getDictionary(dictId);
        }
        break;
      case OMMTypes.SERIES:
        {
          OMMSeries s = (OMMSeries) data;
          if (s.has(OMMSeries.HAS_SUMMARY_DATA)) {
            dumpIndent(ps, tabLevel + 1);
            ps.println("SUMMARY");
            parseData(s.getSummaryData(), ps, tabLevel + 1);
          }
          if (s.has(OMMSeries.HAS_DATA_DEFINITIONS)) {
            dumpIndent(ps, tabLevel + 1);
            short dbtype =
                s.getDataType() == OMMTypes.FIELD_LIST
                    ? OMMTypes.FIELD_LIST_DEF_DB
                    : OMMTypes.ELEMENT_LIST_DEF_DB;
            parseDataDefinition(s.getDataDefs(), dbtype, ps, tabLevel + 1);
          }
        }
        break;
      case OMMTypes.MAP:
        {
          OMMMap s = (OMMMap) data;

          String flagsString = ExampleUtil.mapFlagsString(s);
          dumpIndent(ps, tabLevel);
          ps.print("flags: ");
          ps.println(flagsString);

          if (s.has(OMMMap.HAS_SUMMARY_DATA)) {
            dumpIndent(ps, tabLevel + 1);
            ps.println("SUMMARY");
            parseData(s.getSummaryData(), ps, tabLevel + 1);
          }
        }
        break;
      case OMMTypes.VECTOR:
        {
          OMMVector s = (OMMVector) data;

          String flagsString = ExampleUtil.vectorFlagsString(s);
          dumpIndent(ps, tabLevel);
          ps.print("flags: ");
          ps.println(flagsString);

          if (s.has(OMMVector.HAS_SUMMARY_DATA)) {
            dumpIndent(ps, tabLevel + 1);
            ps.println("SUMMARY");
            parseData(s.getSummaryData(), ps, tabLevel + 1);
          }
        }
        break;
      case OMMTypes.FILTER_LIST:
        {
          OMMFilterList s = (OMMFilterList) data;

          String flagsString = ExampleUtil.filterListFlagsString(s);
          dumpIndent(ps, tabLevel);
          ps.print("flags: ");
          ps.println(flagsString);
        }
        break;
    }
  }