| /* |
| * Copyright 1996-2011 Niclas Hedhman. |
| * |
| * 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.qi4j.library.alarm; |
| |
| import java.util.Date; |
| import java.util.Locale; |
| import java.util.ResourceBundle; |
| import org.qi4j.api.injection.scope.Service; |
| import org.qi4j.api.mixin.Mixins; |
| import org.qi4j.api.property.Property; |
| import org.qi4j.api.service.ServiceComposite; |
| import org.qi4j.api.value.ValueComposite; |
| |
| /** |
| * Event for indicating change of AlarmStatus of an AlarmPoint. |
| * |
| * @author Niclas Hedhman |
| */ |
| @Mixins( AlarmEvent.Mixin.class ) |
| public interface AlarmEvent |
| extends ValueComposite |
| { |
| /** |
| * Returns the identity of the AlarmPoint that generated the event. |
| * |
| * @return the AlarmPoint causing this event. |
| */ |
| Property<String> alarmIdentity(); |
| |
| /** |
| * Returns the AlarmStatus prior to the Event. |
| * |
| * @return the old AlarmStatus prior to this event. |
| */ |
| Property<AlarmStatus> oldStatus(); |
| |
| /** |
| * Returns the AlarmStatus after the Event. |
| * |
| * @return the new AlarmStatus of the AlarmPoint after this event. |
| */ |
| Property<AlarmStatus> newStatus(); |
| |
| /** |
| * Returns the Time when the event occurred. |
| * |
| * @return the timestamp when this event occurred. |
| */ |
| Property<Date> eventTime(); |
| |
| /** |
| * Returns the Name of the event. |
| * This normally returns the human readable name of the Event, such as |
| * activate, deactivate and acknowledge, in the default locale. |
| * |
| * @return the name of this event in the default locale. |
| */ |
| Property<String> systemName(); |
| |
| /** |
| * Returns the Name of the event. |
| * This normally returns the human readable name of the Event, such as |
| * activate, deactivate and acknowledge, in the given locale. |
| * |
| * @param locale the locale that the name should be returned in. |
| * |
| * @return the name of the event in the given locale. |
| */ |
| String name( Locale locale ); |
| |
| /** |
| * Returns a Description of the event in the specified locale. |
| * This normally returns a brief description of the event type, but could/should |
| * allow for AlarmPoint specific descriptions for humans to be better informed. |
| * |
| * @param locale the locale that the description should be returned in. |
| * |
| * @return the description of the event in the given locale. |
| */ |
| String description( Locale locale ); |
| |
| abstract class Mixin |
| implements AlarmEvent |
| { |
| @Service |
| private AlarmModel model; |
| |
| @Override |
| public String name( Locale locale ) |
| { |
| ResourceBundle bundle = ResourceBundle.getBundle( ((ServiceComposite) model).identity().get(), locale ); |
| return bundle.getString( systemName().get() ); |
| } |
| |
| @Override |
| public String description( Locale locale ) |
| { |
| ResourceBundle bundle = ResourceBundle.getBundle( ((ServiceComposite) model).identity().get(), locale ); |
| String eventDescriptionId = "EVENT_" + systemName().get().toUpperCase() + "_DESCRIPTION"; |
| return bundle.getString( eventDescriptionId ); |
| } |
| } |
| } |