blob: a5b65a54e7162f25379be40749e1be66e8c5d0b9 [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 com.alibaba.jstorm.ui.model.pages;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.alibaba.jstorm.client.ConfigExtension;
import com.alibaba.jstorm.ui.UIDef;
import com.alibaba.jstorm.ui.UIMetrics;
import com.alibaba.jstorm.ui.UIUtils;
import com.alibaba.jstorm.ui.model.ColumnData;
import com.alibaba.jstorm.ui.model.LinkData;
import com.alibaba.jstorm.ui.model.TableData;
/**
*
* @author xin.zhou/Longda
*/
@ManagedBean(name = "homepage")
@ViewScoped
public class HomePage implements Serializable {
private static final long serialVersionUID = -6103468603521876731L;
private static final Logger LOG = LoggerFactory.getLogger(HomePage.class);
public static final String SINGLE_CLUSTER = "single";
public static final String MULTI_CLUSTER = "multi";
public static final String HEADER_ZK_ROOT = "ZK Root";
public static final String HEADER_ZK_SERVERS = "ZK Servers";
public static final String HEADER_ZK_PORT = "ZK Port";
protected String clusterType;
protected List<TableData> tables = new ArrayList<TableData>();
protected Map<String, String> parameterMap;
static {
// add code to load UIMetrics
UIMetrics.mkInstance();
}
public HomePage() throws Exception {
// FacesContext ctx = FacesContext.getCurrentInstance();
// parameterMap = ctx.getExternalContext().getRequestParameterMap();
init();
}
@SuppressWarnings("rawtypes")
public void init() {
generateTables();
if (tables == null || tables.size() == 0
|| tables.get(0).getLines().size() == 1) {
clusterType = SINGLE_CLUSTER;
} else {
clusterType = MULTI_CLUSTER;
}
}
public void generateTables() {
long start = System.nanoTime();
try {
LOG.info("ClusterPage init...");
Map conf = UIUtils.readUiConfig();
List<Map> uiClusters = ConfigExtension.getUiClusters(conf);
if (uiClusters == null) {
return;
}
TableData table = new TableData();
tables.add(table);
List<String> headers = table.getHeaders();
List<Map<String, ColumnData>> lines = table.getLines();
table.setName("Cluster List");
headers.add(StringUtils.capitalize(UIDef.CLUSTER));
headers.add(HEADER_ZK_ROOT);
headers.add(HEADER_ZK_SERVERS);
headers.add(HEADER_ZK_PORT);
for (Map cluster : uiClusters) {
Map<String, ColumnData> line =
new HashMap<String, ColumnData>();
lines.add(line);
String clusterName = ConfigExtension.getUiClusterName(cluster);
ColumnData clusterColumn = new ColumnData();
LinkData linkData = new LinkData();
linkData.setUrl(UIDef.LINK_TABLE_PAGE);
linkData.setText(clusterName);
linkData.addParam(UIDef.PAGE_TYPE, UIDef.PAGE_TYPE_CLUSTER);
linkData.addParam(UIDef.CLUSTER, clusterName);
clusterColumn.addLinkData(linkData);
line.put(StringUtils.capitalize(UIDef.CLUSTER), clusterColumn);
String zkRoot = ConfigExtension.getUiClusterZkRoot(cluster);
ColumnData zkRootColumn = new ColumnData();
zkRootColumn.addText(zkRoot);
line.put(HEADER_ZK_ROOT, zkRootColumn);
List<String> servers =
ConfigExtension.getUiClusterZkServers(cluster);
ColumnData zkServerColumn = new ColumnData();
for (String server : servers) {
zkServerColumn.addText(server);
}
line.put(HEADER_ZK_SERVERS, zkServerColumn);
String port =
String.valueOf(ConfigExtension
.getUiClusterZkPort(cluster));
ColumnData zkPortColumn = new ColumnData();
zkPortColumn.addText(port);
line.put(HEADER_ZK_PORT, zkPortColumn);
}
} catch (Exception e) {
LOG.error("Failed to get cluster information:", e);
throw new RuntimeException(e);
} finally {
long end = System.nanoTime();
UIMetrics.updateHistorgram(this.getClass().getSimpleName(), (end - start)/1000000.0d);
LOG.info("Finish ClusterPage");
}
}
public String getClusterType() {
return clusterType;
}
public List<TableData> getTables() {
return tables;
}
public Map<String, String> getParameterMap() {
return parameterMap;
}
public static void main(String[] args) {
try {
HomePage c = new HomePage();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}