/** * 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.releases; import com.francetelecom.clara.cloud.core.service.ManageApplication; import com.francetelecom.clara.cloud.core.service.ManageEnvironment; import com.francetelecom.clara.cloud.core.service.exception.ObjectNotFoundException; import com.francetelecom.clara.cloud.coremodel.ApplicationRelease; import com.francetelecom.clara.cloud.logicalmodel.LogicalConfigService; import com.francetelecom.clara.cloud.presentation.HomePage; import com.francetelecom.clara.cloud.presentation.applications.SelectedAppPage; import com.francetelecom.clara.cloud.presentation.common.Breadcrumbs; import com.francetelecom.clara.cloud.presentation.common.NavigationMenuFirstLevel; import com.francetelecom.clara.cloud.presentation.designer.pages.DesignerHelperPage; import com.francetelecom.clara.cloud.presentation.designer.pages.DesignerPage; import com.francetelecom.clara.cloud.presentation.environments.EnvironmentCreatePanel; import com.francetelecom.clara.cloud.presentation.environments.EnvironmentsTablePanel; import com.francetelecom.clara.cloud.presentation.tools.BreadcrumbsItem; import org.apache.wicket.WicketRuntimeException; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.markup.html.AjaxLink; import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.link.BookmarkablePageLink; import org.apache.wicket.markup.html.panel.EmptyPanel; import org.apache.wicket.markup.html.panel.FeedbackPanel; import org.apache.wicket.model.Model; import org.apache.wicket.request.mapper.parameter.PageParameters; import org.apache.wicket.spring.injection.annot.SpringBean; import org.slf4j.LoggerFactory; import org.wicketstuff.annotation.mount.MountPath; import java.util.ArrayList; import java.util.List; /** * Created by IntelliJ IDEA. * User: Thomas Escalle - tawe8231 * Entity : FT/OLNC/RD/MAPS/MEP/MSE * Date: 23/08/11 */ @MountPath("/release/appUid/${appUid}/releaseUid/${releaseUid}") @AuthorizeInstantiation({"ROLE_USER","ROLE_ADMIN"}) public class SelectedReleasePage extends DesignerHelperPage { private static final long serialVersionUID = -1828934947292944878L; private static final transient org.slf4j.Logger logger = LoggerFactory.getLogger(SelectedReleasePage.class); @SpringBean private ManageEnvironment manageEnvironment; @SpringBean private ManageApplication manageApplication; private ApplicationRelease release; private FeedbackPanel globalFeedback; private WebMarkupContainer buttonContainer; private WebMarkupContainer container; private AjaxLink newEnv; private EnvironmentsTablePanel envsTablePanel; private PageParameters designerParams; private List<BreadcrumbsItem> breadcrumbsItems; private EnvironmentCreatePanel envCreatePanel; /** * PageTemplate constructor * * @param params - page parameters map */ public SelectedReleasePage(PageParameters params) { super(params); designerParams = new PageParameters(); designerParams.add("appUid", params.get("appUid")); designerParams.add("releaseUid", params.get("releaseUid")); initComponents(); } private void initComponents() { String releaseUid = getPageParameters().get("releaseUid").toString(); try { release = manageApplicationRelease.findApplicationReleaseByUID(releaseUid); } catch (ObjectNotFoundException e) { logger.error("Application release not found ; releaseUid={}", releaseUid); throw new WicketRuntimeException(e); } setPagetitle(); createFirstLevelNavigation(); createBreadCrumbs(); // createSecondLevelNavigation(); createReleaseInformationPanel(); createGlobalFeedbackPanel(); createEditArchitectureButton(); createNewEnvironmentButton(); if (getPageParameters().getNamedKeys().contains("new")) { createEnvironmentFormPanel(); } else { createEmptyEnvironmentFormPanel(); } createEnvironmentsTable(); } private void setPagetitle() { /* set head page title to display in browser title bar */ add(new Label("head_page_title", getString("portal.design.web.title.application.home"))); } private void createFirstLevelNavigation() { NavigationMenuFirstLevel navFirstLvl = new NavigationMenuFirstLevel(); add(navFirstLvl); } private void createBreadCrumbs() { breadcrumbsItems = new ArrayList<BreadcrumbsItem>(); breadcrumbsItems.add(new BreadcrumbsItem(HomePage.class, "portal.breadcrumb.home", null, false)); PageParameters appPageParameters = new PageParameters(); appPageParameters.add("appUid", release.getApplication().getUID()); breadcrumbsItems.add(new BreadcrumbsItem( SelectedAppPage.class, appPageParameters, "portal.breadcrumb.selected.application", release.getApplication().getLabel(), false )); PageParameters releasePageParameters = new PageParameters(); releasePageParameters.add("appUid", release.getApplication().getUID()); releasePageParameters.add("releaseUid", release.getUID()); breadcrumbsItems.add(new BreadcrumbsItem( SelectedReleasePage.class, releasePageParameters, "portal.breadcrumb.selected.release", release.getReleaseVersion(), true )); Breadcrumbs breadcrumbs = new Breadcrumbs("breadcrumbs", breadcrumbsItems); breadcrumbs.setOutputMarkupId(true); add(breadcrumbs); } private void createGlobalFeedbackPanel() { globalFeedback = new FeedbackPanel("globalFeedback"); globalFeedback.setOutputMarkupId(true); add(globalFeedback); } private void createReleaseInformationPanel() { // Display application information with modify and delete button ReleaseInformationPanel releaseInfoPanel = new ReleaseInformationPanel("releaseInfoPanel", new Model<ApplicationRelease>(release), getPageParameters(), manageApplicationRelease, this); try { releaseInfoPanel.setCanBeDeleted(manageApplicationRelease.canBeDeleted(release.getUID())); } catch (ObjectNotFoundException e) { releaseInfoPanel.setCanBeDeleted(false); } add(releaseInfoPanel); } private void createEmptyEnvironmentFormPanel() { createEnvContainer(); container.add(new EmptyPanel("createEnvForm")); add(container); } private void createEnvContainer() { if (container == null) { container = new WebMarkupContainer("createEnvContainer"); container.setOutputMarkupId(true); } } private void createEditArchitectureButton() { buttonContainer = new WebMarkupContainer("buttonContainer"); buttonContainer.setOutputMarkupId(true); //create link BookmarkablePageLink editArchitectureBtn = new BookmarkablePageLink("editArchitectureLink", DesignerPage.class, designerParams); buttonContainer.add(editArchitectureBtn); add(buttonContainer); } private void createNewEnvironmentButton() { //create link newEnv = new AjaxLink("newEnvLink") { @Override public void onClick(AjaxRequestTarget target) { createEnvironmentFormPanel(); target.add(container); this.setVisible(false); target.add(buttonContainer); } }; newEnv.setVisible(release.getApplication().isEditable()); buttonContainer.add(newEnv); add(buttonContainer); } private void createEnvironmentFormPanel() { createEnvContainer(); envCreatePanel = new EnvironmentCreatePanel("createEnvForm", release, manageApplicationRelease, manageEnvironment, manageApplication); container.addOrReplace(envCreatePanel); newEnv.setVisible(false); add(container); } private void createEnvironmentsTable() { envsTablePanel = new EnvironmentsTablePanel("envsTablePanel", manageApplicationRelease, manageEnvironment, release); envsTablePanel.setOutputMarkupId(true); envsTablePanel.setVisible(release.getApplication().isPublic() || release.getApplication().isEditable()); add(envsTablePanel); } public EnvironmentsTablePanel getEnvironmentsTablePanel() { return envsTablePanel; } public void cancelEnvironmentCreation(AjaxRequestTarget target) { resetPage(target); } private void resetPage(AjaxRequestTarget target) { newEnv.setVisible(release.getApplication().isEditable()); target.add(buttonContainer); container.addOrReplace(new EmptyPanel("createEnvForm")); target.add(container); } public ManageEnvironment getManageEnvironment() { return manageEnvironment; } public List<BreadcrumbsItem> getBreadcrumbsItems() { return breadcrumbsItems; } @Override public FeedbackPanel getFeedbackPanel() { return globalFeedback; } public void addEnvironmentConfigOverride(LogicalConfigService logicalConfigOverride) { envCreatePanel.addEnvironmentConfigOverride(logicalConfigOverride); } public LogicalConfigService getEnvironmentConfigOverride(String label) { return envCreatePanel.getEnvironmentConfigOverride(label); } }