// Copyright 2015 The Project Buendia Authors // // 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 distrib- // uted 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 // specific language governing permissions and limitations under the License. package org.projectbuendia.client.events.data; import org.projectbuendia.client.models.Location; import org.projectbuendia.client.models.Patient; import org.projectbuendia.client.models.TypedCursor; import org.projectbuendia.client.models.User; /** A factory that creates instances of subclasses of {@link TypedCursorFetchedEvent}. */ public class TypedCursorFetchedEventFactory { /** * Creates a {@link TypedCursorFetchedEvent} for the specified data type and cursor. * @throws IllegalArgumentException if {@code clazz} is unknown */ @SuppressWarnings("unchecked") // Types checked by code. public static <T> TypedCursorFetchedEvent<?> createEvent( Class<T> clazz, TypedCursor<T> cursor) { if (clazz.equals(Patient.class)) { return new AppPatientsFetchedEvent((TypedCursor<Patient>) cursor); } else if (clazz.equals(User.class)) { return new AppUsersFetchedEvent((TypedCursor<User>) cursor); } else if (clazz.equals(Location.class)) { return new AppLocationsFetchedEvent((TypedCursor<Location>) cursor); } else { throw new IllegalArgumentException( "Unable to create an event for unknown type " + clazz.getName()); } } private TypedCursorFetchedEventFactory() { } }