org.apache.hadoop.chukwa.rest.bean.WidgetBean.java Source code

Java tutorial

Introduction

Here is the source code for org.apache.hadoop.chukwa.rest.bean.WidgetBean.java

Source

/*
 * 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.hadoop.chukwa.rest.bean;

import java.text.ParseException;
import java.util.Collection;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import org.apache.hadoop.chukwa.datastore.WidgetStore;
import org.apache.hadoop.chukwa.util.ExceptionUtil;

@XmlRootElement
@XmlType(propOrder = { "id", "title", "version", "categories", "url", "description", "refresh", "parameters" })
public class WidgetBean {
    private String id;
    private String title;
    private String version;
    private String categories;
    private String url;
    private String description;
    private int refresh;
    private ParametersBean[] parameters;
    private static Log log = LogFactory.getLog(WidgetBean.class);

    public WidgetBean() {

    }

    public WidgetBean(JSONObject json) throws ParseException {
        try {
            this.id = json.getString("id");
            this.title = json.getString("title");
            this.version = json.getString("version");
            this.categories = json.getString("categories");
            this.url = json.getString("url");
            this.description = json.getString("description");
            this.refresh = json.getInt("refresh");
            try {
                int size = json.getJSONArray("parameters").length();
                ParametersBean[] list = new ParametersBean[size];
                for (int i = 0; i < size; i++) {
                    list[i] = new ParametersBean(json.getJSONArray("parameters").getJSONObject(i));
                }
                this.parameters = list;
            } catch (JSONException e) {
                this.parameters = null;
            }
        } catch (JSONException e) {
            log.error(ExceptionUtil.getStackTrace(e));
            throw new ParseException(ExceptionUtil.getStackTrace(e), 0);
        }
    }

    @XmlElement
    public String getId() {
        return id;
    }

    @XmlElement
    public String getTitle() {
        return title;
    }

    @XmlElement
    public String getVersion() {
        return version;
    }

    @XmlElement
    public String getCategories() {
        return categories;
    }

    @XmlElement
    public String getUrl() {
        return url;
    }

    @XmlElement
    public String getDescription() {
        return description;
    }

    @XmlElement
    public int getRefresh() {
        return refresh;
    }

    @XmlElement
    public ParametersBean[] getParameters() {
        return parameters;
    }

    public void setId(String id) {
        this.id = id;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public void setVersion(String version) {
        this.version = version;
    }

    public void setCategories(String categories) {
        this.categories = categories;
    }

    public void setRefresh(int refresh) {
        this.refresh = refresh;
    }

    public void setParameters(ParametersBean[] p) {
        this.parameters = p;
    }

    public void update() {
        try {
            WidgetBean widget = WidgetStore.list().get(this.id);
            if (widget != null) {
                if (widget.getVersion().intern() != this.version.intern()) {
                    this.categories = widget.getCategories();
                    this.title = widget.getTitle();
                    this.version = widget.getVersion();
                    this.url = widget.getUrl();
                    this.description = widget.getDescription();
                    ParametersBean[] plist = widget.getParameters();
                    for (int i = 0; i < this.parameters.length; i++) {
                        Collection<String> value = this.parameters[i].getValue();
                        for (int j = 0; j < plist.length; j++) {
                            if (plist[i].getName().intern() == this.parameters[j].getName().intern()) {
                                plist[j].setValue(value);
                            }
                        }
                    }
                    this.parameters = plist;
                }
            } else {
                log.info("Widget " + this.id + " is deprecated.");
            }
        } catch (IllegalAccessException e) {
            log.error("Unable to update widget: " + this.id + " " + ExceptionUtil.getStackTrace(e));
        }

    }

    public JSONObject deserialize() {
        JSONObject json = new JSONObject();
        try {
            json.put("id", this.id);
            json.put("title", this.title);
            json.put("description", this.description);
            json.put("version", this.version);
            json.put("categories", this.categories);
            json.put("refresh", this.refresh);
            json.put("url", this.url);
            JSONArray ja = new JSONArray();
            if (this.parameters != null) {
                for (int i = 0; i < this.parameters.length; i++) {
                    ja.put(this.parameters[i].deserialize());
                }
            }
            json.put("parameters", (JSONArray) ja);
        } catch (Exception e) {
            log.error(ExceptionUtil.getStackTrace(e));
        }
        return json;
    }
}