/rabbit.data.handler/src/rabbit/data/handler/DataHandler.java
Java | 116 lines | 50 code | 10 blank | 56 comment | 0 complexity | a6b88a26b113cb21bbb7bf1452549654 MD5 | raw file
- /*
- * Copyright 2010 The Rabbit Eclipse Plug-in Project
- *
- * 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 rabbit.data.handler;
-
- import rabbit.data.access.IAccessor;
- import rabbit.data.access.model.ICommandData;
- import rabbit.data.access.model.IFileData;
- import rabbit.data.access.model.IJavaData;
- import rabbit.data.access.model.ILaunchData;
- import rabbit.data.access.model.IPartData;
- import rabbit.data.access.model.IPerspectiveData;
- import rabbit.data.access.model.ISessionData;
- import rabbit.data.access.model.ITaskData;
- import rabbit.data.store.IStorer;
- import rabbit.data.store.model.CommandEvent;
- import rabbit.data.store.model.FileEvent;
- import rabbit.data.store.model.JavaEvent;
- import rabbit.data.store.model.LaunchEvent;
- import rabbit.data.store.model.PartEvent;
- import rabbit.data.store.model.PerspectiveEvent;
- import rabbit.data.store.model.SessionEvent;
- import rabbit.data.store.model.TaskFileEvent;
- import rabbit.data.xml.XmlModule;
-
- import com.google.inject.ConfigurationException;
- import com.google.inject.Guice;
- import com.google.inject.Injector;
- import com.google.inject.Key;
- import com.google.inject.util.Types;
-
- /**
- * Handler class provider common classes to access the data.
- */
- public class DataHandler {
-
- private static final Injector injector;
-
- static {
- injector = Guice.createInjector(new XmlModule());
- }
-
- /**
- * Gets a storer that stores the objects of the given type.
- * <p>
- * The following object types are supported:
- * <ul>
- * <li>{@link CommandEvent}</li>
- * <li>{@link FileEvent}</li>
- * <li>{@link PartEvent}</li>
- * <li>{@link PerspectiveEvent}</li>
- * <li>{@link LaunchEvent}</li>
- * <li>{@link TaskFileEvent}</li>
- * <li>{@link SessionEvent}</li>
- * <li>{@link JavaEvent}</li>
- * </ul>
- * </p>
- *
- * @param clazz The class of the type.
- * @return A storer that stores the objects of the given type, or null.
- */
- @SuppressWarnings("unchecked")
- public static <T> IStorer<T> getStorer(Class<T> clazz) {
- try {
- Key<?> k = Key.get(Types.newParameterizedType(IStorer.class, clazz));
- return (IStorer<T>) injector.getInstance(k);
-
- } catch (ConfigurationException e) {
- return null;
- }
- }
-
- /**
- * Gets an accessor that gets the stored data.
- * <p>
- * The following object types are supported:
- * <ul>
- * <li>{@link ICommandData}</li>
- * <li>{@link IFileData}</li>
- * <li>{@link IPartData}</li>
- * <li>{@link IPerspectiveData}</li>
- * <li>{@link ILaunchData}</li>
- * <li>{@link ITaskData}</li>
- * <li>{@link ISessionData}</li>
- * <li>{@link IJavaData}</li>
- * </ul>
- * </p>
- *
- * @param clazz The class of the type.
- * @return An accessor that get the data of the given type, or null.
- */
- @SuppressWarnings("unchecked")
- public static <T> IAccessor<T> getAccessor(Class<T> clazz) {
- try {
- Key<?> k = Key.get(Types.newParameterizedType(IAccessor.class, clazz));
- return (IAccessor<T>) injector.getInstance(k);
-
- } catch (ConfigurationException e) {
- return null;
- }
- }
-
- private DataHandler() {}
- }