/**
* Copyright (C) 2012-2013 eBusiness Information (www.ebusinessinformation.fr)
*
* 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 com.athomas.androidkickstartr.util;
import java.util.HashMap;
import com.sun.codemodel.JClass;
import com.sun.codemodel.JCodeModel;
public class RefHelper {
private final JCodeModel codeModel;
private HashMap<String, JClass> refs = new HashMap<String, JClass>();
private JClass r;
public RefHelper(JCodeModel codeModel) {
this.codeModel = codeModel;
}
public JClass ref(String fullName) {
JClass jClass = refs.get(fullName);
if (jClass == null) {
jClass = codeModel.ref(fullName);
refs.put(fullName, jClass);
}
return jClass;
}
/**
* Java lang
*/
public JClass override() {
return ref(Override.class.getCanonicalName());
}
public JClass charSequence() {
return ref(CharSequence.class.getCanonicalName());
}
public JClass string() {
return ref(String.class.getCanonicalName());
}
/**
* Android classes
*/
public JClass activity() {
return ref("android.app.Activity");
}
public JClass viewGroup() {
return ref("android.view.ViewGroup");
}
public JClass view() {
return ref("android.view.View");
}
public JClass color() {
return ref("android.graphics.Color");
}
public JClass textView() {
return ref("android.widget.TextView");
}
public JClass bundle() {
return ref("android.os.Bundle");
}
public JClass menu() {
return ref("android.view.Menu");
}
public JClass context() {
return ref("android.content.Context");
}
public JClass arrayAdapter() {
return ref("android.widget.ArrayAdapter");
}
public JClass application() {
return ref("android.app.Application");
}
public JClass gravity() {
return ref("android.view.Gravity");
}
public JClass layoutInflater() {
return ref("android.view.LayoutInflater");
}
public JClass r(String name) {
r = ref(name);
return r;
}
public JClass r() {
if (r == null) {
throw new NullPointerException("call r(String name) method at least once");
}
return r;
}
/**
* Android Support v4
*/
public JClass viewPager() {
return ref("android.support.v4.view.ViewPager");
}
public JClass onPageChangeListener() {
return ref("android.support.v4.view.ViewPager.OnPageChangeListener");
}
public JClass fragment() {
return ref("android.support.v4.app.Fragment");
}
public JClass fragmentTransaction() {
return ref("android.support.v4.app.FragmentTransaction");
}
public JClass fragmentActivity() {
return ref("android.support.v4.app.FragmentActivity");
}
public JClass fragmentPagerAdapter() {
return ref("android.support.v4.app.FragmentPagerAdapter");
}
public JClass fragmentManager() {
return ref("android.support.v4.app.FragmentManager");
}
public JClass pagerAdapter() {
return ref("android.support.v4.view.PagerAdapter");
}
/**
* AndroidAnnotations classes
*/
public JClass eactivity() {
return ref("com.googlecode.androidannotations.annotations.EActivity");
}
public JClass efragment() {
return ref("com.googlecode.androidannotations.annotations.EFragment");
}
public JClass viewById() {
return ref("com.googlecode.androidannotations.annotations.ViewById");
}
public JClass afterViews() {
return ref("com.googlecode.androidannotations.annotations.AfterViews");
}
public JClass background() {
return ref("com.googlecode.androidannotations.annotations.Background");
}
public JClass uithread() {
return ref("com.googlecode.androidannotations.annotations.UiThread");
}
public JClass rest() {
return ref("com.googlecode.androidannotations.annotations.rest.Rest");
}
public JClass get() {
return ref("com.googlecode.androidannotations.annotations.rest.Get");
}
public JClass restService() {
return ref("com.googlecode.androidannotations.annotations.rest.RestService");
}
/**
* ActionBarSherlock classes
*/
public JClass sActivity() {
return ref("com.actionbarsherlock.app.SherlockActivity");
}
public JClass sFragmentActivity() {
return ref("com.actionbarsherlock.app.SherlockFragmentActivity");
}
public JClass sMenu() {
return ref("com.actionbarsherlock.view.Menu");
}
public JClass sNavigationListener() {
return ref("com.actionbarsherlock.app.ActionBar.OnNavigationListener");
}
public JClass sActionBar() {
return ref("com.actionbarsherlock.app.ActionBar");
}
public JClass sTabListener() {
return ref("com.actionbarsherlock.app.ActionBar.TabListener");
}
public JClass sTab() {
return ref("com.actionbarsherlock.app.ActionBar.Tab");
}
/**
* Acra
*/
public JClass reportsCrashes() {
return ref("org.acra.annotation.ReportsCrashes");
}
public JClass acra() {
return ref("org.acra.ACRA");
}
/**
* Roboguice
*/
public JClass roboguice() {
return ref("com.googlecode.androidannotations.annotations.RoboGuice");
}
public JClass injectView() {
return ref("roboguice.inject.InjectView");
}
public JClass roboActivity() {
return ref("roboguice.activity.RoboActivity");
}
public JClass roboFragment() {
return ref("roboguice.fragment.RoboFragment");
}
public JClass roboFragmentActivity() {
return ref("roboguice.activity.RoboFragmentActivity");
}
/**
* Spring-Android RestTemplate
*/
public JClass stringHttpMessageConverter() {
return ref("org.springframework.http.converter.StringHttpMessageConverter");
}
}