/*
* Copyright 2015 uaiHebert
*
* 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 com.uaihebert.uaimockserver.factory;
import com.uaihebert.uaimockserver.dto.model.UaiRouteDTO;
import com.uaihebert.uaimockserver.model.UaiFile;
import com.uaihebert.uaimockserver.model.UaiRequest;
import com.uaihebert.uaimockserver.model.UaiResponse;
import com.uaihebert.uaimockserver.model.UaiRoute;
import com.uaihebert.uaimockserver.util.StringUtils;
/**
* This factory will create an instance of the UaiRoute.java
*/
public final class UaiRouteFactory {
public static final String CLONE_PREFIX = "[CLONED] ";
public static final String CLONE_SUFFIX = "_CLONED";
private UaiRouteFactory() {
}
public static UaiRoute create(final UaiRouteDTO uaiRouteDTO) {
final UaiRequest uaiRequest = UaiRequestFactory.create(uaiRouteDTO.getRequest());
final UaiResponse uaiResponse = UaiResponseFactory.create(uaiRouteDTO.getResponse());
final UaiFile uaiFile = new UaiFile(uaiRouteDTO.getUaiFile().getName(), uaiRouteDTO.getUaiFile().getFullPath());
if (StringUtils.isBlank(uaiRouteDTO.getId())) {
return new UaiRoute(uaiFile, uaiRequest, uaiResponse, uaiRouteDTO.getProject());
}
return new UaiRoute(uaiRouteDTO.getId(), uaiFile, uaiRequest, uaiResponse, uaiRouteDTO.getProject());
}
public static void setDTOValueToEntity(final UaiRoute uaiRoute, final UaiRouteDTO uaiRouteDTO) {
final UaiRequest uaiRequest = UaiRequestFactory.create(uaiRouteDTO.getRequest());
final UaiResponse uaiResponse = UaiResponseFactory.create(uaiRouteDTO.getResponse());
final UaiFile uaiFile = new UaiFile(uaiRouteDTO.getUaiFile().getName(), uaiRouteDTO.getUaiFile().getFullPath());
uaiRoute.setRequest(uaiRequest);
uaiRoute.setResponse(uaiResponse);
uaiRoute.setUaiFile(uaiFile);
uaiRoute.setProject(uaiRouteDTO.getProject());
}
public static UaiRoute clone(final UaiRoute uaiRoute) {
final UaiRequest request = uaiRoute.getRequest();
final String newName = CLONE_PREFIX + request.name;
final String newPath = request.path + CLONE_SUFFIX;
final UaiRequest clonedRequest = new UaiRequest.UaiRequestBuilder()
.isBodyRequired(request.isBodyRequired)
.holdTheRequestInMilli(request.holdTheRequestInMilli)
.name(newName)
.path(newPath)
.method(request.method)
.description(request.description)
.body(request.body)
.bodyValidationType(request.getBodyValidationType())
.requiredContentType(request.requiredContentType)
.requiredHeaderList(request.getRequiredHeaderList())
.optionalHeaderList(request.getOptionalHeaderList())
.requiredQueryParamList(request.getRequiredQueryParamList())
.optionalQueryParamList(request.getOptionalQueryParamList())
.build();
return new UaiRoute(uaiRoute.getUaiFile(), clonedRequest, uaiRoute.getResponse(), uaiRoute.getProject());
}
}