Package org.knowhowlab.osgi.monitoradmin.mocks

Source Code of org.knowhowlab.osgi.monitoradmin.mocks.MockMonitorable

/*
* Copyright (c) 2010 Dmytro Pishchukhin (http://knowhowlab.org)
*
* 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 org.knowhowlab.osgi.monitoradmin.mocks;

import org.osgi.service.monitor.MonitorListener;
import org.osgi.service.monitor.Monitorable;
import org.osgi.service.monitor.StatusVariable;

import java.util.HashSet;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;

/**
* @author dpishchukhin
*/
public class MockMonitorable implements Monitorable {
    private SortedMap<String, StatusVariable> variables = new TreeMap<String, StatusVariable>();
    private Set<String> notifiableVariables = new HashSet<String>();
    private String monitorableId;
    private MonitorListener listener;

    public MockMonitorable(StatusVariable... statusVariables) {
        setStatusVariables(statusVariables);
    }

    public void setMonitorableId(String monitorableId) {
        this.monitorableId = monitorableId;
    }

    public void setListener(MonitorListener listener) {
        this.listener = listener;
    }

    public void setStatusVariables(StatusVariable... statusVariables) {
        for (StatusVariable statusVariable : statusVariables) {
            variables.put(statusVariable.getID(), statusVariable);
        }
    }

    public void setNotificationSupport(String id, boolean on) {
        if (on) {
            notifiableVariables.add(id);
        } else {
            notifiableVariables.remove(id);
        }
    }

    public String[] getStatusVariableNames() {
        Set<String> names = variables.keySet();
        return names.toArray(new String[names.size()]);
    }

    public StatusVariable getStatusVariable(String s) throws IllegalArgumentException {
        StatusVariable statusVariable = variables.get(s);
        if (statusVariable == null) {
            throw new IllegalArgumentException();
        }
        return statusVariable;
    }

    public boolean notifiesOnChange(String s) throws IllegalArgumentException {
        return notifiableVariables.contains(s);
    }

    public boolean resetStatusVariable(String s) throws IllegalArgumentException {
        StatusVariable statusVariable = getStatusVariable(s);
        if (statusVariable != null) {
            switch (statusVariable.getType()) {
                case StatusVariable.TYPE_BOOLEAN:
                    setStatusVariables(new StatusVariable(statusVariable.getID(), statusVariable.getCollectionMethod(), false));
                    break;
                case StatusVariable.TYPE_FLOAT:
                    setStatusVariables(new StatusVariable(statusVariable.getID(), statusVariable.getCollectionMethod(), 0));
                    break;
                case StatusVariable.TYPE_INTEGER:
                    setStatusVariables(new StatusVariable(statusVariable.getID(), statusVariable.getCollectionMethod(), 0));
                    break;
                case StatusVariable.TYPE_STRING:
                    setStatusVariables(new StatusVariable(statusVariable.getID(), statusVariable.getCollectionMethod(), ""));
                    break;
            }
            if (notifiableVariables.contains(s) && listener != null) {
                listener.updated(monitorableId, getStatusVariable(s));
            }
            return true;
        }
        return false;
    }

    public String getDescription(String s) throws IllegalArgumentException {
        return getStatusVariable(s).getID();
    }

    public void setNewStatusVariableValue(String s, String value) {
        StatusVariable statusVariable = getStatusVariable(s);
        if (statusVariable != null) {
            switch (statusVariable.getType()) {
                case StatusVariable.TYPE_BOOLEAN:
                    setStatusVariables(new StatusVariable(statusVariable.getID(), statusVariable.getCollectionMethod(), Boolean.valueOf(value)));
                    break;
                case StatusVariable.TYPE_FLOAT:
                    setStatusVariables(new StatusVariable(statusVariable.getID(), statusVariable.getCollectionMethod(), Float.valueOf(value)));
                    break;
                case StatusVariable.TYPE_INTEGER:
                    setStatusVariables(new StatusVariable(statusVariable.getID(), statusVariable.getCollectionMethod(), Integer.valueOf(value)));
                    break;
                case StatusVariable.TYPE_STRING:
                    setStatusVariables(new StatusVariable(statusVariable.getID(), statusVariable.getCollectionMethod(), value));
                    break;
            }
            if (notifiableVariables.contains(s) && listener != null) {
                listener.updated(monitorableId, getStatusVariable(s));
            }
        }
    }
}
TOP

Related Classes of org.knowhowlab.osgi.monitoradmin.mocks.MockMonitorable

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.