Home | History | Annotate | Download | only in afe
      1 package autotest.afe;
      2 
      3 import autotest.afe.models.Host;
      4 import autotest.common.JSONArrayList;
      5 import autotest.common.Utils;
      6 import autotest.common.table.RpcDataSource;
      7 
      8 import com.google.gwt.json.client.JSONArray;
      9 import com.google.gwt.json.client.JSONObject;
     10 import com.google.gwt.json.client.JSONString;
     11 import com.google.gwt.json.client.JSONValue;
     12 
     13 import java.util.ArrayList;
     14 import java.util.List;
     15 
     16 public class HostDataSource extends RpcDataSource {
     17     protected static final String LOCKED_TEXT = "locked_text";
     18     protected static final String OTHER_LABELS = "other_labels";
     19     protected static final String HOST_ACLS = "host_acls";
     20 
     21     public HostDataSource() {
     22         super("get_hosts", "get_num_hosts");
     23     }
     24 
     25     @Override
     26     /**
     27      * Convert the raw JSONObjects to Hosts.
     28      */
     29     protected List<JSONObject> handleJsonResult(JSONValue result) {
     30         List<JSONObject> resultList = super.handleJsonResult(result);
     31         List<JSONObject> hosts = new ArrayList<JSONObject>();
     32         for (JSONObject row : resultList) {
     33             Host host = Host.fromJsonObject(row);
     34             processHost(host);
     35             hosts.add(host);
     36         }
     37         return hosts;
     38     }
     39 
     40     protected void processHost(JSONObject host) {
     41         host.put(LOCKED_TEXT, AfeUtils.getLockedText(host));
     42 
     43         JSONString jsonPlatform = host.get("platform").isString();
     44         String platform = "";
     45         if (jsonPlatform != null) {
     46             platform = jsonPlatform.stringValue();
     47         }
     48         JSONArray labels = host.get("labels").isArray();
     49         StringBuilder labelString = new StringBuilder();
     50         for (int i = 0; i < labels.size(); i++) {
     51             String label = labels.get(i).isString().stringValue();
     52             if (label.equals(platform)) {
     53                 continue;
     54             }
     55             if (labelString.length() > 0) {
     56                 labelString.append(", ");
     57             }
     58             labelString.append(label);
     59         }
     60         host.put(OTHER_LABELS, new JSONString(labelString.toString()));
     61 
     62         JSONArrayList<JSONString> aclsList =
     63             new JSONArrayList<JSONString>(host.get("acls").isArray());
     64         String aclString = Utils.joinStrings(",", aclsList);
     65         host.put(HOST_ACLS, new JSONString(aclString));
     66     }
     67 }
     68