blob: 1a93c31b810779d0f954c2c30c2d9d6670a8ccde [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 org.apache.oodt.pcs.opsui;
//OODT imports
import java.io.Serializable;
import java.util.List;
import java.util.Set;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletContext;
import org.apache.oodt.cas.metadata.util.PathUtils;
import org.apache.oodt.cas.webcomponents.curation.workbench.Workbench;
import org.apache.oodt.cas.webcomponents.filemgr.FMBrowserSession;
import org.apache.oodt.cas.webcomponents.workflow.instance.WorkflowInstancesViewer;
import org.apache.oodt.pcs.opsui.config.ConfigPage;
import org.apache.oodt.pcs.opsui.status.StatusPage;
import org.apache.oodt.pcs.webcomponents.trace.Trace;
//Wicket imports
import org.apache.wicket.Page;
import org.apache.wicket.Request;
import org.apache.wicket.ResourceReference;
import org.apache.wicket.Response;
import org.apache.wicket.Session;
import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.request.target.coding.MixedParamUrlCodingStrategy;
import org.apache.wicket.util.file.File;
/**
*
* The OPSUI application object.
*
* @author mattmann
* @version $Revision$
*
*/
public class OpsuiApp extends WebApplication implements Serializable {
private static final long serialVersionUID = 1403288657369282259L;
private static final Logger LOG = Logger.getLogger(OpsuiApp.class.getName());
public OpsuiApp() {
MixedParamUrlCodingStrategy types = new MixedParamUrlCodingStrategy(
"types", TypesPage.class, new String[] {});
MixedParamUrlCodingStrategy typeBrowser = new MixedParamUrlCodingStrategy(
"type", TypeBrowserPage.class, new String[] { "name", "pageNum" });
MixedParamUrlCodingStrategy prodBrowser = new MixedParamUrlCodingStrategy(
"product", ProductBrowserPage.class, new String[] { "id" });
MixedParamUrlCodingStrategy pcsStatus = new MixedParamUrlCodingStrategy(
"status", StatusPage.class, new String[] {});
MixedParamUrlCodingStrategy taskPageMount = new MixedParamUrlCodingStrategy(
"task", WorkflowTaskViewerPage.class, new String[] { "id" });
MixedParamUrlCodingStrategy condPageMount = new MixedParamUrlCodingStrategy(
"condition", WorkflowConditionViewerPage.class, new String[] { "id" });
MixedParamUrlCodingStrategy workflowPageMount = new MixedParamUrlCodingStrategy(
"workflow", WorkflowViewerPage.class, new String[] { "id" });
MixedParamUrlCodingStrategy workflowsPageMount = new MixedParamUrlCodingStrategy(
"workflows", WorkflowsViewerPage.class, new String[] {});
MixedParamUrlCodingStrategy workflowInstsPageMount = new MixedParamUrlCodingStrategy(
"instances", WorkflowInstanceViewerPage.class, new String[] { "status",
"pageNum" });
MixedParamUrlCodingStrategy configPageMount = new MixedParamUrlCodingStrategy("config",
ConfigPage.class, new String [] {"tab"});
MixedParamUrlCodingStrategy curateMount = new MixedParamUrlCodingStrategy("curate",
WorkbenchPage.class, new String[]{});
mount(pcsStatus);
mount(types);
mount(typeBrowser);
mount(prodBrowser);
mount(taskPageMount);
mount(condPageMount);
mount(workflowPageMount);
mount(workflowsPageMount);
mount(workflowInstsPageMount);
mount(configPageMount);
mount(curateMount);
}
/*
* (non-Javadoc)
*
* @see org.apache.wicket.Application#getHomePage()
*/
@Override
public Class<? extends Page> getHomePage() {
try {
return (Class<? extends Page>) Class.forName(getHomePageClass());
} catch (ClassNotFoundException e) {
e.printStackTrace();
return HomePage.class;
}
}
public String getFmUrlStr() {
return PathUtils.replaceEnvVariables(getServletContext().getInitParameter(
"filemgr.url"));
}
public String getWmUrlStr() {
return PathUtils.replaceEnvVariables(getServletContext().getInitParameter(
"workflow.url"));
}
public String getRmUrlStr() {
return PathUtils.replaceEnvVariables(getServletContext().getInitParameter(
"resmgr.url"));
}
public String getEmailContactLink() {
return getServletContext().getInitParameter("contact.email");
}
public String getCrawlerConfFilePath() {
return PathUtils.replaceEnvVariables(getServletContext().getInitParameter(
"org.apache.oodt.pcs.health.crawler.conf.filePath"));
}
public String getStatesFilePath() {
return PathUtils.replaceEnvVariables(getServletContext().getInitParameter(
"org.apache.oodt.pcs.health.workflow.statuses.filePath"));
}
public String getWorkflowLifecycleFilePath() {
return PathUtils.replaceEnvVariables(getServletContext().getInitParameter(
"org.apache.oodt.pcs.opsui.workflow.lifecycleFilePath"));
}
public String getGangliaUrl() {
return PathUtils.replaceEnvVariables(getServletContext().getInitParameter(
"ganglia.url"));
}
public String getSkin() {
return getServletContext().getInitParameter("opsui.skin");
}
public String getHomePageClass() {
return getServletContext().getInitParameter("opsui.homepage");
}
public List<String> getWorkflowInstStatues() {
String[] statuses = getServletContext().getInitParameter(
"org.apache.oodt.pcs.opsui.winst.statuses").split(",");
List<String> statusList = new Vector<String>();
for (String status : statuses) {
statusList.add(status.trim());
}
statusList.add("ALL");
return statusList;
}
public String getWorkflowInstMetFieldsFilePath() {
return PathUtils.replaceEnvVariables(getServletContext().getInitParameter(
"org.apache.oodt.pcs.opsui.winst.metFields.filePath"));
}
public boolean isEnabledTraceNotCatProducts() {
return Boolean.valueOf(getServletContext().getInitParameter(
"org.apache.oodt.pcs.trace.enableNotCat"));
}
public List<String> getTraceExcludedProductTypeList() {
String[] types = getServletContext().getInitParameter(
"org.apache.oodt.pcs.trace.excludeList").split(",");
List<String> excludes = new Vector<String>();
for (String type : types) {
excludes.add(type);
}
return excludes;
}
public String getRootContext() {
return getServletContext().getServletContextName();
}
/*
* (non-Javadoc)
*
* @see
* org.apache.wicket.protocol.http.WebApplication#newSession(org.apache.wicket
* .Request, org.apache.wicket.Response)
*/
@Override
public Session newSession(Request request, Response response) {
FMBrowserSession session = new FMBrowserSession(request);
if (getSkin() != null) {
session.setStyle(getSkin());
}
return session;
}
/*
* (non-Javadoc)
*
* @see org.apache.wicket.protocol.http.WebApplication#init()
*/
@Override
protected void init() {
super.init();
mountSharedResource("/images/percentImage_back1.png",
new ResourceReference(WorkflowInstancesViewer.class,
"percentImage_back1.png").getSharedResourceKey());
mountSharedResource("/images/percentImage_back2.png",
new ResourceReference(WorkflowInstancesViewer.class,
"percentImage_back2.png").getSharedResourceKey());
mountSharedResource("/images/percentImage_back3.png",
new ResourceReference(WorkflowInstancesViewer.class,
"percentImage_back3.png").getSharedResourceKey());
mountSharedResource("/images/percentImage_back4.png",
new ResourceReference(WorkflowInstancesViewer.class,
"percentImage_back4.png").getSharedResourceKey());
mountSharedResource("/images/icon_arrow_up.gif", new ResourceReference(
StatusPage.class, "icon_arrow_up.gif").getSharedResourceKey());
mountSharedResource("/images/rightcorner.gif", new ResourceReference(
BasePage.class, "rightcorner.gif").getSharedResourceKey());
mountSharedResource("/images/leftcorner.gif", new ResourceReference(
BasePage.class, "leftcorner.gif").getSharedResourceKey());
mountSharedResource("/images/selrightcorner.gif", new ResourceReference(
BasePage.class, "selrightcorner.gif").getSharedResourceKey());
mountSharedResource("/images/selleftcorner.gif", new ResourceReference(
BasePage.class, "selleftcorner.gif").getSharedResourceKey());
mountSharedResource("/images/open.gif", new ResourceReference(Trace.class,
"open.gif").getSharedResourceKey());
mountSharedResource("/images/closed.gif", new ResourceReference(
Trace.class, "closed.gif").getSharedResourceKey());
mountSharedResource("/images/tab_bottom.gif", new ResourceReference(ConfigPage.class,
"tab_bottom.gif").getSharedResourceKey());
Set<String> benchResources = Workbench.getImageFiles();
doImageMounts(benchResources, Workbench.class);
}
private void doImageMounts(Set<String> resources, Class<?> clazz) {
if (resources != null) {
for (String resource : resources) {
String resName = new File(resource).getName();
String resPath = "/images/" + resName;
LOG.log(Level.INFO, "Mounting: [" + resPath + "] origName: [" + resName
+ "]: resource: [" + resource + "]");
mountSharedResource(resPath,
new ResourceReference(clazz, resName).getSharedResourceKey());
}
}
}
}