001package org.javasimon.jmx; 002 003import org.javasimon.Simon; 004import org.javasimon.SimonState; 005import org.javasimon.utils.SimonUtils; 006 007import java.util.ArrayList; 008import java.util.List; 009 010/** 011 * Common functionality for JMX bean for a single Simon that corresponds to AbstractSimon in the core package. 012 * 013 * @author <a href="mailto:virgo47@gmail.com">Richard "Virgo" Richter</a> 014 */ 015public abstract class AbstractSimonMXBeanImpl implements SimonSuperMXBean { 016 017 @Override 018 public final String getName() { 019 return simon().getName(); 020 } 021 022 @Override 023 public final String getParentName() { 024 if (simon().getParent() != null) { 025 return simon().getParent().getName(); 026 } 027 return null; 028 } 029 030 @Override 031 public final List<String> getChildrenNames() { 032 List<String> names = new ArrayList<>(); 033 for (Simon child : simon().getChildren()) { 034 names.add(child.getName()); 035 } 036 return names; 037 } 038 039 @Override 040 public final String getState() { 041 return simon().getState().name(); 042 } 043 044 @Override 045 public final void setState(String state, boolean overrule) { 046 simon().setState(SimonState.valueOf(state), overrule); 047 } 048 049 @Override 050 public final boolean isEnabled() { 051 return simon().isEnabled(); 052 } 053 054 @Override 055 public final String getNote() { 056 return simon().getNote(); 057 } 058 059 @Override 060 public final void setNote(String note) { 061 simon().setNote(note); 062 } 063 064 @Override 065 public final long getFirstUsage() { 066 return simon().getFirstUsage(); 067 } 068 069 @Override 070 public String getFirstUsageAsString() { 071 return SimonUtils.presentTimestamp(getFirstUsage()); 072 } 073 074 @Override 075 public final long getLastUsage() { 076 return simon().getLastUsage(); 077 } 078 079 @Override 080 public final String getLastUsageAsString() { 081 return SimonUtils.presentTimestamp(getLastUsage()); 082 } 083 084 /** 085 * Returns the wrapped Simon. 086 * 087 * @return wrapped Simon 088 */ 089 protected abstract Simon simon(); 090}