View Javadoc
1   /*
2    * Licensed to The Apereo Foundation under one or more contributor license
3    * agreements. See the NOTICE file distributed with this work for additional
4    * information regarding copyright ownership.
5    *
6    *
7    * The Apereo Foundation licenses this file to you under the Educational
8    * Community License, Version 2.0 (the "License"); you may not use this file
9    * except in compliance with the License. You may obtain a copy of the License
10   * at:
11   *
12   *   http://opensource.org/licenses/ecl2.txt
13   *
14   * Unless required by applicable law or agreed to in writing, software
15   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
16   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
17   * License for the specific language governing permissions and limitations under
18   * the License.
19   *
20   */
21  package org.opencastproject.external.util;
22  
23  import static org.opencastproject.index.service.util.JSONUtils.safeString;
24  import static org.opencastproject.util.DateTimeSupport.toUTC;
25  
26  import org.opencastproject.capture.CaptureParameters;
27  import org.opencastproject.capture.admin.api.Agent;
28  
29  import com.google.gson.JsonArray;
30  import com.google.gson.JsonObject;
31  import com.google.gson.JsonPrimitive;
32  
33  public final class CaptureAgentUtils {
34  
35    private static final String JSON_KEY_AGENT_ID = "agent_id";
36    private static final String JSON_KEY_STATUS = "status";
37    private static final String JSON_KEY_URL = "url";
38    private static final String JSON_KEY_INPUTS = "inputs";
39    private static final String JSON_KEY_UPDATE = "update";
40  
41  
42    private CaptureAgentUtils() {
43    }
44  
45    /**
46     * Generate a JSON Object for the given capture agent
47     *
48     * @param agent
49     *          The capture agent
50     * @return A {@link JsonObject} representing the capture agent
51     */
52    public static JsonObject generateJsonAgent(Agent agent) {
53      JsonObject json = new JsonObject();
54      String devices = (String) agent.getCapabilities().get(CaptureParameters.CAPTURE_DEVICE_NAMES);
55      json.addProperty(JSON_KEY_STATUS, safeString(agent.getState()));
56      json.addProperty(JSON_KEY_AGENT_ID, agent.getName());
57      json.addProperty(JSON_KEY_UPDATE, safeString(toUTC(agent.getLastHeardFrom())));
58      json.addProperty(JSON_KEY_URL, safeString(agent.getUrl()));
59      JsonArray inputs = new JsonArray();
60      if (devices != null && !devices.trim().isEmpty()) {
61        for (String device : devices.split(",")) {
62          inputs.add(new JsonPrimitive(device.trim()));
63        }
64      }
65      json.add("inputs", inputs);
66      return json;
67    }
68  }