code: /*******************************************************************************
   * Copyright 2018 572682
   * 
   * Licensed under the Apache License, Version 2.0 (the "License"); you may not
   * use this file except in compliance with the License.  You may obtain a copy
   * of the License at
   * 
   *   http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
   * License for the specific language governing permissions and limitations under
   * the License.
   ******************************************************************************/
  package us.dot.its.jpo.ode.dds;
  
  import java.util.Arrays;
  
  import org.apache.commons.lang3.StringUtils;
  
  import us.dot.its.jpo.ode.OdeProperties;
  import us.dot.its.jpo.ode.dds.DdsRequest.EncodeType;
  import us.dot.its.jpo.ode.model.OdeDepRequest;
  import us.dot.its.jpo.ode.model.OdeRequest;
  
  public class DdsDepositRequestManager extends DdsRequestManager<DdsStatusMessage> {
  
     public DdsDepositRequestManager(OdeProperties odeProperties)
           throws us.dot.its.jpo.ode.dds.DdsRequestManager.DdsRequestManagerException {
        super(odeProperties);
     }
  
     @Override
     protected DdsRequest buildDdsRequest(OdeRequest odeRequest) throws DdsRequestManagerException {
  
        DdsDepRequest ddsDepReq = new DdsDepRequest();
  
        if (odeRequest instanceof OdeDepRequest) {
           OdeDepRequest odeDepReq = (OdeDepRequest) odeRequest;
           String sEncodeType = StringUtils.upperCase(odeDepReq.getEncodeType());
           if (sEncodeType != null) {
              EncodeType encodeType = DdsRequest.EncodeType.valueOf(sEncodeType);
              ddsDepReq.setSystemDepositName(DdsDepositRequestManager.systemName(odeDepReq).getName())
                    .setEncodeType(encodeType.name()).setEncodedMsg(odeDepReq.getData());
           } else {
              throw new DdsRequestManagerException("Invalid or unsupported EncodeType Deposit: " + sEncodeType
                    + ". Supported encode types are: " + Arrays.asList(DdsRequest.EncodeType.values()));
           }
        } else {
           throw new DdsRequestManagerException("Invalid Request: " + odeRequest.toJson(odeProperties.getVerboseJson()));
        }
        return ddsDepReq;
     }
  }
  