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 com.entwinemedia.fn.data.json.Jsons.arr;
24  import static com.entwinemedia.fn.data.json.Jsons.f;
25  import static com.entwinemedia.fn.data.json.Jsons.obj;
26  import static com.entwinemedia.fn.data.json.Jsons.v;
27  import static org.opencastproject.util.DateTimeSupport.toUTC;
28  
29  import org.opencastproject.capture.CaptureParameters;
30  import org.opencastproject.capture.admin.api.Agent;
31  
32  import com.entwinemedia.fn.data.json.Field;
33  import com.entwinemedia.fn.data.json.JValue;
34  import com.entwinemedia.fn.data.json.Jsons;
35  
36  import org.apache.commons.lang3.StringUtils;
37  
38  import java.util.ArrayList;
39  import java.util.List;
40  
41  public final class CaptureAgentUtils {
42  
43    private static final String JSON_KEY_AGENT_ID = "agent_id";
44    private static final String JSON_KEY_STATUS = "status";
45    private static final String JSON_KEY_URL = "url";
46    private static final String JSON_KEY_INPUTS = "inputs";
47    private static final String JSON_KEY_UPDATE = "update";
48  
49  
50    private CaptureAgentUtils() {
51    }
52  
53    /**
54     * Generate a JSON Object for the given capture agent
55     *
56     * @param agent
57     *          The capture agent
58     * @return A {@link JValue} representing the capture agent
59     */
60    public static JValue generateJsonAgent(Agent agent) {
61      List<Field> fields = new ArrayList<>();
62      String devices = (String) agent.getCapabilities().get(CaptureParameters.CAPTURE_DEVICE_NAMES);
63      fields.add(f(JSON_KEY_STATUS, v(agent.getState(), Jsons.BLANK)));
64      fields.add(f(JSON_KEY_AGENT_ID, v(agent.getName())));
65      fields.add(f(JSON_KEY_UPDATE, v(toUTC(agent.getLastHeardFrom()), Jsons.BLANK)));
66      fields.add(f(JSON_KEY_URL, v(agent.getUrl(), Jsons.BLANK)));
67      fields.add(f(JSON_KEY_INPUTS, (StringUtils.isEmpty(devices)) ? arr() : arr(devices.split(","))));
68      return obj(fields);
69    }
70  }