001package com.plivo.api.models.multipartycall;
002
003import com.plivo.api.exceptions.PlivoValidationException;
004import com.plivo.api.util.PropertyFilter;
005import com.plivo.api.util.Utils;
006
007public class MultiPartyCallUtils {
008  private static final String namePrefix = "name_";
009  private static final String uuidPrefix = "uuid_";
010
011  public static final String active = "Active";
012  public static final String initialized = "Initialized";
013  public static final String allParticipants = "all";
014  public static final String ended = "Ended";
015  public static final String agent = "Agent";
016  public static final String customer = "Customer";
017  public static final String supervisor = "Supervisor";
018  public static final String mp3 = "mp3";
019  public static final String wav = "wav";
020
021
022  public static String friendlyName(String name) throws PlivoValidationException {
023    if (name == null) {
024      throw new PlivoValidationException("MultiPartyCall name cannot be null");
025    }
026    return namePrefix + name;
027  }
028
029  public static String mpcUuid(String uuid) throws PlivoValidationException {
030    if (uuid == null) {
031      throw new PlivoValidationException("MultiPartyCall uuid cannot be null");
032    }
033    return uuidPrefix + uuid;
034  }
035
036  static void validMultiPartyCallId(String id) throws PlivoValidationException {
037    if (id == null) {
038      throw new PlivoValidationException("MultiPartyCall identifier cannot be null");
039    }
040    if (id.startsWith(namePrefix) || id.startsWith(uuidPrefix)) {
041      return;
042    }
043    throw new PlivoValidationException("MultiPartyCall identifier should be prefixed with 'name_'/'uuid_'");
044  }
045
046  static void validMultiPartyTime(String fieldName, PropertyFilter<String> time) throws PlivoValidationException {
047    if (!Utils.anyNotNull(time.greaterOrEqual(), time.greaterThan(), time.lessOrEqual(), time.lessThan())) {
048      throw new PlivoValidationException(String.format("use one of [greaterOrEqual, greaterThan, lessOrEqual, " +
049        "lessThan for %s", fieldName));
050    }
051    if (time.greaterOrEqual() != null && !Utils.isValidTimeString(time.greaterOrEqual())) {
052      throw new PlivoValidationException(String.format("invalid greaterOrEqual value: %s", time.greaterOrEqual()));
053    }
054    if (time.greaterThan() != null && !Utils.isValidTimeString(time.greaterThan())) {
055      throw new PlivoValidationException(String.format("invalid greaterThan value: %s", time.greaterThan()));
056    }
057    if (time.lessOrEqual() != null && !Utils.isValidTimeString(time.lessOrEqual())) {
058      throw new PlivoValidationException(String.format("invalid lessOrEqual value: %s", time.lessOrEqual()));
059    }
060    if (time.lessThan() != null && !Utils.isValidTimeString(time.lessThan())) {
061      throw new PlivoValidationException(String.format("invalid lessThan value: %s", time.lessThan()));
062    }
063  }
064}