// Path: app/src/main/java/com/example/app/rxjava/base/BaseModel.java
// public class BaseModel {
//     public static final String API_SERVER = "服务器地址";
//     private static volatile HttpLoggingInterceptor loggingInterceptor;
//     private static volatile RequestInterceptor requestInterceptor;
//     private static volatile CacheInterceptor cacheInterceptor;
//     private static volatile File httpCacheDirectory;
//     private static volatile Cache cache;
//     // OkHttp3.0的使用方式
//     private static volatile OkHttpClient client;
// 
//     protected Retrofit.Builder getRetrofitBuilder() {
//         if (loggingInterceptor == null) {
//             synchronized (BaseModel.class) {
//                 // Log信息
//                 loggingInterceptor = new HttpLoggingInterceptor();
//                 loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BASIC);
// 
//                 // 拦截器，在请求中增加额外参数
//                 requestInterceptor = new RequestInterceptor();
// 
//                 // 缓存拦截器
//                 cacheInterceptor = new CacheInterceptor();
//                 //设置缓存路径
//                 httpCacheDirectory = new File(AppApplication.getInstance().getCacheDir(), "responses");
//                 //设置缓存大小 10M
//                 cache = new Cache(httpCacheDirectory, 10 * 1024 * 1024);
//                 client = new OkHttpClient.Builder()
//                         .cookieJar(new CookiesManager())
//                         .addInterceptor(requestInterceptor)
//                         .addInterceptor(loggingInterceptor)
//                         .addInterceptor(cacheInterceptor)
//                         .addNetworkInterceptor(cacheInterceptor)
//                         .cache(cache)
//                         .build();
//             }
//         }
// 
//         // 适配器
//         Retrofit.Builder builder = new Retrofit.Builder()
//                 .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
//                 .client(client);
//         return builder;
//     }
// }
// 
// Path: app/src/main/java/com/example/app/rxjava/base/ResultsDeserializer.java
// public class ResultsDeserializer<T> implements JsonDeserializer<T> {
//     @Override
//     public T deserialize(JsonElement je, Type typeOfT,
//                          JsonDeserializationContext context) throws JsonParseException {
//         // 转换Json的数据, 获取内部有用的信息
//         JsonElement results = je.getAsJsonObject();
//         return new Gson().fromJson(results, typeOfT);
//     }
// }
// 
// Path: app/src/main/java/com/example/app/rxjava/bean/weather/WeatherData.java
// @ModelContainer
// @Table(database = AppDatabase.class)
// public class WeatherData extends BaseModel {
// 	@PrimaryKey(autoincrement = false)
//     private long id;
// 	@Column
//     private String name;
// 
// 	public long getId() {
// 		return id;
// 	}
// 
// 	public void setId(long id) {
// 		this.id = id;
// 	}
// 
// 	public String getName() {
// 		return name;
// 	}
// 
// 	public void setName(String name) {
// 		this.name = name;
// 	}
// 
// }
// 
// Path: app/src/main/java/com/example/app/rxjava/bean/weather/WeatherListData.java
// public class WeatherListData {
// 	private String message;
// 	private String cod;
// 	private int count;
// 	private List<WeatherData> list;
// 	public String getMessage() {
// 		return message;
// 	}
// 	public void setMessage(String message) {
// 		this.message = message;
// 	}
// 	public String getCod() {
// 		return cod;
// 	}
// 	public void setCod(String cod) {
// 		this.cod = cod;
// 	}
// 	public int getCount() {
// 		return count;
// 	}
// 	public void setCount(int count) {
// 		this.count = count;
// 	}
// 	public List<WeatherData> getList() {
// 		return list;
// 	}
// 	public void setList(List<WeatherData> list) {
// 		this.list = list;
// 	}
// 	
// }
// 
// Path: app/src/main/java/com/example/app/rxjava/module/main/model/ia/WeatherIA.java
// public interface WeatherIA {
//     public Observable<List<WeatherData>> getServerData(final String lat, final String lon, final String cnt);
// }


import com.example.app.rxjava.base.BaseModel;
import com.example.app.rxjava.base.ResultsDeserializer;
import com.example.app.rxjava.bean.weather.WeatherData;
import com.example.app.rxjava.bean.weather.WeatherListData;
import com.example.app.rxjava.module.main.model.ia.WeatherIA;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import java.util.List;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
import retrofit2.http.GET;
import retrofit2.http.Query;
import rx.Observable;
import rx.functions.Func1;
package com.example.app.rxjava.module.main.model;




/**
 * Created by Administrator on 2016/2/29.
 */
public class WeatherModel extends BaseModel implements WeatherIA {
    private static final String ENDPOINT = "http://api.openweathermap.org";
    private final Service mService;

    public WeatherModel() {
        // 对返回的数据进行解析
        Gson gsonInstance = new GsonBuilder()
// Path: app/src/main/java/com/example/app/rxjava/base/BaseModel.java
// public class BaseModel {
//     public static final String API_SERVER = "服务器地址";
//     private static volatile HttpLoggingInterceptor loggingInterceptor;
//     private static volatile RequestInterceptor requestInterceptor;
//     private static volatile CacheInterceptor cacheInterceptor;
//     private static volatile File httpCacheDirectory;
//     private static volatile Cache cache;
//     // OkHttp3.0的使用方式
//     private static volatile OkHttpClient client;
// 
//     protected Retrofit.Builder getRetrofitBuilder() {
//         if (loggingInterceptor == null) {
//             synchronized (BaseModel.class) {
//                 // Log信息
//                 loggingInterceptor = new HttpLoggingInterceptor();
//                 loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BASIC);
// 
//                 // 拦截器，在请求中增加额外参数
//                 requestInterceptor = new RequestInterceptor();
// 
//                 // 缓存拦截器
//                 cacheInterceptor = new CacheInterceptor();
//                 //设置缓存路径
//                 httpCacheDirectory = new File(AppApplication.getInstance().getCacheDir(), "responses");
//                 //设置缓存大小 10M
//                 cache = new Cache(httpCacheDirectory, 10 * 1024 * 1024);
//                 client = new OkHttpClient.Builder()
//                         .cookieJar(new CookiesManager())
//                         .addInterceptor(requestInterceptor)
//                         .addInterceptor(loggingInterceptor)
//                         .addInterceptor(cacheInterceptor)
//                         .addNetworkInterceptor(cacheInterceptor)
//                         .cache(cache)
//                         .build();
//             }
//         }
// 
//         // 适配器
//         Retrofit.Builder builder = new Retrofit.Builder()
//                 .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
//                 .client(client);
//         return builder;
//     }
// }
// 
// Path: app/src/main/java/com/example/app/rxjava/base/ResultsDeserializer.java
// public class ResultsDeserializer<T> implements JsonDeserializer<T> {
//     @Override
//     public T deserialize(JsonElement je, Type typeOfT,
//                          JsonDeserializationContext context) throws JsonParseException {
//         // 转换Json的数据, 获取内部有用的信息
//         JsonElement results = je.getAsJsonObject();
//         return new Gson().fromJson(results, typeOfT);
//     }
// }
// 
// Path: app/src/main/java/com/example/app/rxjava/bean/weather/WeatherData.java
// @ModelContainer
// @Table(database = AppDatabase.class)
// public class WeatherData extends BaseModel {
// 	@PrimaryKey(autoincrement = false)
//     private long id;
// 	@Column
//     private String name;
// 
// 	public long getId() {
// 		return id;
// 	}
// 
// 	public void setId(long id) {
// 		this.id = id;
// 	}
// 
// 	public String getName() {
// 		return name;
// 	}
// 
// 	public void setName(String name) {
// 		this.name = name;
// 	}
// 
// }
// 
// Path: app/src/main/java/com/example/app/rxjava/bean/weather/WeatherListData.java
// public class WeatherListData {
// 	private String message;
// 	private String cod;
// 	private int count;
// 	private List<WeatherData> list;
// 	public String getMessage() {
// 		return message;
// 	}
// 	public void setMessage(String message) {
// 		this.message = message;
// 	}
// 	public String getCod() {
// 		return cod;
// 	}
// 	public void setCod(String cod) {
// 		this.cod = cod;
// 	}
// 	public int getCount() {
// 		return count;
// 	}
// 	public void setCount(int count) {
// 		this.count = count;
// 	}
// 	public List<WeatherData> getList() {
// 		return list;
// 	}
// 	public void setList(List<WeatherData> list) {
// 		this.list = list;
// 	}
// 	
// }
// 
// Path: app/src/main/java/com/example/app/rxjava/module/main/model/ia/WeatherIA.java
// public interface WeatherIA {
//     public Observable<List<WeatherData>> getServerData(final String lat, final String lon, final String cnt);
// }


// Path: app/src/main/java/com/example/app/rxjava/module/main/model/WeatherModel.java
import com.example.app.rxjava.base.BaseModel;
import com.example.app.rxjava.base.ResultsDeserializer;
import com.example.app.rxjava.bean.weather.WeatherData;
import com.example.app.rxjava.bean.weather.WeatherListData;
import com.example.app.rxjava.module.main.model.ia.WeatherIA;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import java.util.List;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
import retrofit2.http.GET;
import retrofit2.http.Query;
import rx.Observable;
import rx.functions.Func1;

package com.example.app.rxjava.module.main.model;




/**
 * Created by Administrator on 2016/2/29.
 */
public class WeatherModel extends BaseModel implements WeatherIA {
    private static final String ENDPOINT = "http://api.openweathermap.org";
    private final Service mService;

    public WeatherModel() {
        // 对返回的数据进行解析
        Gson gsonInstance = new GsonBuilder()
                .registerTypeAdapter(new TypeToken<WeatherListData>() {