/**
* Copyright (C) 2015 Orange
* 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.francetelecom.clara.cloud.presentation.designer.pages;
import com.francetelecom.clara.cloud.core.service.ManageApplicationRelease;
import com.francetelecom.clara.cloud.core.service.exception.ObjectNotFoundException;
import com.francetelecom.clara.cloud.deployment.logical.service.ManageLogicalDeployment;
import com.francetelecom.clara.cloud.logicalmodel.LogicalDeployment;
import com.francetelecom.clara.cloud.logicalmodel.LogicalModelItem;
import com.francetelecom.clara.cloud.logicalmodel.LogicalSoapService;
import com.francetelecom.clara.cloud.presentation.common.CustomModalWindow;
import com.francetelecom.clara.cloud.presentation.common.PageTemplate;
import com.francetelecom.clara.cloud.presentation.designer.support.DelegatingDesignerServices;
import com.francetelecom.clara.cloud.presentation.environments.EnvironmentWspInfoPanel;
import com.francetelecom.clara.cloud.presentation.tools.CodeMirrorTextArea;
import com.francetelecom.clara.cloud.services.dto.EnvironmentDetailsDto;
import com.francetelecom.clara.cloud.services.dto.LinkDto;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.event.Broadcast;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.slf4j.LoggerFactory;
import java.util.List;
/**
* DesignerHelperPage
*
* panel used to create an application release
*
* Last update : $LastChangedDate$
* Last author : $Author$
*
* @version : $Revision$
*/
public abstract class DesignerHelperPage extends PageTemplate {
private static final long serialVersionUID = 1449784253024125155L;
/**
* logger
*/
private static final transient org.slf4j.Logger logger = LoggerFactory.getLogger(DesignerHelperPage.class);
@SpringBean
protected ManageApplicationRelease manageApplicationRelease;
@SpringBean
protected ManageLogicalDeployment manageLogicalDeployment;
@SpringBean
protected DelegatingDesignerServices delegatingDesignerServices;
protected LogicalDeployment logicalDeployment;
private int logicalDeploymentId;
/**
* Modal windows to display service parameters
*/
private ModalWindow modalServiceView;
/**
* PageTemplate constructor
*
* @param params - page parameters map
*/
public DesignerHelperPage(final PageParameters params) {
super(params);
try {
if (params.getNamedKeys().contains("releaseUid")) {
logicalDeployment = getLogicalDeploymentPersisted(params.get("releaseUid").toString());
}
} catch (ObjectNotFoundException e) {
error(e.getMessage());
}
modalServiceView = new CustomModalWindow("modalServiceView");
modalServiceView.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
private static final long serialVersionUID = 1L;
public void onClose(AjaxRequestTarget target) {
}
});
add(modalServiceView);
}
public LogicalDeployment getLogicalDeploymentPersisted(String releaseUid) throws ObjectNotFoundException {
logicalDeploymentId = manageApplicationRelease.findApplicationReleaseByUID(releaseUid).getLogicalDeployment().getId();
logicalDeployment = manageLogicalDeployment.findLogicalDeployment(logicalDeploymentId);
return logicalDeployment;
}
public LogicalDeployment getLogicalDeployment() {
return logicalDeployment;
}
public void openModalWindow(AjaxRequestTarget ajaxRequestTarget, LogicalModelItem modelItem, boolean configOverride) {
modalServiceView.setUseInitialHeight(false);
modalServiceView.setInitialWidth(750);
Panel serviceFormPanel = getServicePanel(modalServiceView.getContentId(), modelItem, this, false, true, configOverride);
modalServiceView.setContent(serviceFormPanel);
modalServiceView.show(ajaxRequestTarget);
// Send a refresh event in case the modal window contains a CodeMirror instance
send(serviceFormPanel, Broadcast.BREADTH, new CodeMirrorTextArea.CodeMirrorRefresh(ajaxRequestTarget));
}
public void openWspInfoPanel(AjaxRequestTarget ajaxRequestTarget, LogicalSoapService soapService, EnvironmentDetailsDto envDetailsDto) {
List<LinkDto> linkDtos = envDetailsDto.getLinkDtoMap().get(soapService.getName());
LinkDto linkDto = null;
for (LinkDto dto : linkDtos) {
if (dto.getLinkType() == LinkDto.LinkTypeEnum.ACCESS_LINK && dto.getServiceBindings() != null) {
linkDto = dto;
break;
}
}
if (linkDto != null) {
EnvironmentWspInfoPanel wspInfoPanel = new EnvironmentWspInfoPanel(modalServiceView.getContentId(), linkDto);
modalServiceView.setInitialHeight(240);
modalServiceView.setContent(wspInfoPanel);
modalServiceView.show(ajaxRequestTarget);
}
}
public Panel getServicePanel(String id, LogicalModelItem modelItem, DesignerHelperPage parentPage, boolean isNew, boolean readOnly, boolean configOverride) {
return delegatingDesignerServices.createPanelFor(id, modelItem, parentPage, isNew, readOnly, configOverride);
}
public abstract FeedbackPanel getFeedbackPanel();
}