001    /**
002     * Licensed to the Apache Software Foundation (ASF) under one
003     * or more contributor license agreements.  See the NOTICE file
004     * distributed with this work for additional information
005     * regarding copyright ownership.  The ASF licenses this file
006     * to you under the Apache License, Version 2.0 (the
007     * "License"); you may not use this file except in compliance
008     * with the License.  You may obtain a copy of the License at
009     *
010     *     http://www.apache.org/licenses/LICENSE-2.0
011     *
012     * Unless required by applicable law or agreed to in writing, software
013     * distributed under the License is distributed on an "AS IS" BASIS,
014     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015     * See the License for the specific language governing permissions and
016     * limitations under the License.
017     */
018    
019    package org.apache.hadoop.yarn.api.records.timeline;
020    
021    import java.util.ArrayList;
022    import java.util.List;
023    
024    import javax.xml.bind.annotation.XmlAccessType;
025    import javax.xml.bind.annotation.XmlAccessorType;
026    import javax.xml.bind.annotation.XmlElement;
027    import javax.xml.bind.annotation.XmlRootElement;
028    
029    import org.apache.hadoop.classification.InterfaceAudience.Public;
030    import org.apache.hadoop.classification.InterfaceStability.Unstable;
031    
032    /**
033     * The class that hosts a list of events, which are categorized according to
034     * their related entities.
035     */
036    @XmlRootElement(name = "events")
037    @XmlAccessorType(XmlAccessType.NONE)
038    @Public
039    @Unstable
040    public class TimelineEvents {
041    
042      private List<EventsOfOneEntity> allEvents =
043          new ArrayList<EventsOfOneEntity>();
044    
045      public TimelineEvents() {
046    
047      }
048    
049      /**
050       * Get a list of {@link EventsOfOneEntity} instances
051       * 
052       * @return a list of {@link EventsOfOneEntity} instances
053       */
054      @XmlElement(name = "events")
055      public List<EventsOfOneEntity> getAllEvents() {
056        return allEvents;
057      }
058    
059      /**
060       * Add a single {@link EventsOfOneEntity} instance into the existing list
061       * 
062       * @param eventsOfOneEntity
063       *          a single {@link EventsOfOneEntity} instance
064       */
065      public void addEvent(EventsOfOneEntity eventsOfOneEntity) {
066        allEvents.add(eventsOfOneEntity);
067      }
068    
069      /**
070       * Add a list of {@link EventsOfOneEntity} instances into the existing list
071       * 
072       * @param allEvents
073       *          a list of {@link EventsOfOneEntity} instances
074       */
075      public void addEvents(List<EventsOfOneEntity> allEvents) {
076        this.allEvents.addAll(allEvents);
077      }
078    
079      /**
080       * Set the list to the given list of {@link EventsOfOneEntity} instances
081       * 
082       * @param allEvents
083       *          a list of {@link EventsOfOneEntity} instances
084       */
085      public void setEvents(List<EventsOfOneEntity> allEvents) {
086        this.allEvents.clear();
087        this.allEvents.addAll(allEvents);
088      }
089    
090      /**
091       * The class that hosts a list of events that are only related to one entity.
092       */
093      @XmlRootElement(name = "events")
094      @XmlAccessorType(XmlAccessType.NONE)
095      @Public
096      @Unstable
097      public static class EventsOfOneEntity {
098    
099        private String entityId;
100        private String entityType;
101        private List<TimelineEvent> events = new ArrayList<TimelineEvent>();
102    
103        public EventsOfOneEntity() {
104    
105        }
106    
107        /**
108         * Get the entity Id
109         * 
110         * @return the entity Id
111         */
112        @XmlElement(name = "entity")
113        public String getEntityId() {
114          return entityId;
115        }
116    
117        /**
118         * Set the entity Id
119         * 
120         * @param entityId
121         *          the entity Id
122         */
123        public void setEntityId(String entityId) {
124          this.entityId = entityId;
125        }
126    
127        /**
128         * Get the entity type
129         * 
130         * @return the entity type
131         */
132        @XmlElement(name = "entitytype")
133        public String getEntityType() {
134          return entityType;
135        }
136    
137        /**
138         * Set the entity type
139         * 
140         * @param entityType
141         *          the entity type
142         */
143        public void setEntityType(String entityType) {
144          this.entityType = entityType;
145        }
146    
147        /**
148         * Get a list of events
149         * 
150         * @return a list of events
151         */
152        @XmlElement(name = "events")
153        public List<TimelineEvent> getEvents() {
154          return events;
155        }
156    
157        /**
158         * Add a single event to the existing event list
159         * 
160         * @param event
161         *          a single event
162         */
163        public void addEvent(TimelineEvent event) {
164          events.add(event);
165        }
166    
167        /**
168         * Add a list of event to the existing event list
169         * 
170         * @param events
171         *          a list of events
172         */
173        public void addEvents(List<TimelineEvent> events) {
174          this.events.addAll(events);
175        }
176    
177        /**
178         * Set the event list to the given list of events
179         * 
180         * @param events
181         *          a list of events
182         */
183        public void setEvents(List<TimelineEvent> events) {
184          this.events = events;
185        }
186    
187      }
188    
189    }