/**
* 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.environments;
import com.francetelecom.clara.cloud.core.service.ManageEnvironment;
import com.francetelecom.clara.cloud.core.service.exception.ObjectNotFoundException;
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.releases.SelectedReleasePage;
import com.francetelecom.clara.cloud.presentation.tools.BreadcrumbsItem;
import com.francetelecom.clara.cloud.services.dto.EnvironmentDetailsDto;
import org.apache.wicket.WicketRuntimeException;
import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
import org.apache.wicket.markup.html.basic.Label;
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.Logger;
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("/environment/appUid/${appUid}/releaseUid/${releaseUid}/envUid/${envUid}")
@AuthorizeInstantiation({"ROLE_USER","ROLE_ADMIN"})
public class SelectedEnvironmentPage extends DesignerHelperPage {
private static final long serialVersionUID = 4190202394568650412L;
/**
* logger
*/
private static final transient org.slf4j.Logger logger = LoggerFactory.getLogger(EnvironmentActionPanel.class);
@SpringBean
private ManageEnvironment manageEnvironment;
private EnvironmentDetailsDto envDetailsDto;
private PageParameters params;
private FeedbackPanel globalFeedback;
private EnvironmentDetailsPanel envDetailsPanel;
/**
* logger
*/
private static transient Logger log = LoggerFactory.getLogger(SelectedEnvironmentPage.class.getName());
/**
* PageTemplate constructor
*
* @param params - page parameters map
*/
public SelectedEnvironmentPage(PageParameters params) {
super(params);
this.params = params;
String envUid = getPageParameters().get("envUid").toString();
try {
envDetailsDto = manageEnvironment.findEnvironmentDetails(envUid);
} catch (ObjectNotFoundException e) {
logger.error("Environment not found ; envUid={}", envUid);
throw new WicketRuntimeException(e);
}
initComponents();
}
@Override
public FeedbackPanel getFeedbackPanel() {
return this.globalFeedback;
}
public void initComponents() {
setFirstLevelNavigationMenu();
setBreadcrumbs();
setFeedbackPanel();
setEnvDetailsPanel();
}
private void setEnvDetailsPanel() {
envDetailsPanel = new EnvironmentDetailsPanel("envDetailsPanel", new Model<EnvironmentDetailsDto>(envDetailsDto));
add(envDetailsPanel);
}
private void setFirstLevelNavigationMenu() {
NavigationMenuFirstLevel navFirstLvl = new NavigationMenuFirstLevel();
add(navFirstLvl);
}
private void setBreadcrumbs() {
List<BreadcrumbsItem> breadcrumbsItems = new ArrayList<BreadcrumbsItem>();
breadcrumbsItems.add(new BreadcrumbsItem(HomePage.class, "portal.breadcrumb.home", null, false));
PageParameters appPageParameters = new PageParameters();
appPageParameters.add("appUid", params.get("appUid").toString());
breadcrumbsItems.add(new BreadcrumbsItem(
SelectedAppPage.class,
appPageParameters,
"portal.breadcrumb.selected.application",
envDetailsDto.getApplicationLabel(),
false
));
PageParameters releasePageParameters = new PageParameters();
releasePageParameters.add("appUid", params.get("appUid").toString());
releasePageParameters.add("releaseUid", params.get("releaseUid").toString());
breadcrumbsItems.add(new BreadcrumbsItem(
SelectedReleasePage.class,
releasePageParameters,
"portal.breadcrumb.selected.release",
envDetailsDto.getReleaseVersion(),
false
));
PageParameters envPageParameters = new PageParameters();
envPageParameters.add("appUid", params.get("appUid").toString());
envPageParameters.add("releaseUid", params.get("releaseUid").toString());
envPageParameters.add("envUid", envDetailsDto.getUid());
breadcrumbsItems.add(new BreadcrumbsItem(
this.getClass(),
envPageParameters,
"portal.breadcrumb.selected.environment",
envDetailsDto.getLabel(),
true
));
/* set head page title to display in browser title bar */
add(new Label("head_page_title", getString("portal.design.web.title.environment.home", new Model<Object[]>(new Object[]{envDetailsDto.getLabel()}))));
Breadcrumbs breadcrumbs = new Breadcrumbs("breadcrumbs", breadcrumbsItems);
add(breadcrumbs);
}
private void setFeedbackPanel() {
// feedback = new FeedbackPanel("feedback", new ComponentFeedbackMessageFilter(this));
globalFeedback = new FeedbackPanel("feedback");
globalFeedback.setOutputMarkupId(true);
add(globalFeedback);
}
public EnvironmentDetailsPanel getEnvDetailsPanel() {
return envDetailsPanel;
}
public ManageEnvironment getManageEnvironment() {
return manageEnvironment;
}
}