M1905ModelImpl.java 4.18 KB
/*
 * Copyright (c) 2016 wugian
 * 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.xgimi.gimicinema.model;

import android.os.Handler;
import android.text.TextUtils;
import com.gimi.common.cinema.model.WrongMsg;
import com.gimi.common.cinema.utils.OkHttpClientManager;
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
import com.google.gson.reflect.TypeToken;
import com.xgimi.gimicinema.cctvsix.model.BarMovieData;
import com.xgimi.gimicinema.cctvsix.model.DataListEntity;
import com.xgimi.gimicinema.cctvsix.model.QueryData;
import com.xgimi.gimicinema.cctvsix.model.UrlContans;

import java.io.IOException;
import java.util.List;

/**
 * Created by wugian on 2016/9/28
 */
public class M1905ModelImpl implements IM1905MovieModel {
    private Handler handler = new Handler();

    @Override
    public void getAllM1905Movies(final String ip,
                                  final OnGetM1905MovieListener l) {
        new Thread() {
            @Override
            public void run() {
                super.run();

                QueryData queryData = new QueryData();
                String listUrl = "http://" + ip + UrlContans.GET_M1905_LIST;
                queryData.setPage(1);
                queryData.setPage_size(10000);

                String s = new Gson().toJson(queryData);
                listUrl = listUrl + "&params=" + s;

                String httpEntity = null;
                try {
                    httpEntity = OkHttpClientManager.getAsString(listUrl);
                } catch (final IOException e) {
                    e.printStackTrace();
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            WrongMsg wrongMsg = new WrongMsg();
                            wrongMsg.setMsg("获取数据库失败 " + e.getMessage());
                            l.onGetM1905Failure(wrongMsg);

                        }
                    });
                }
                try {
                    if (!TextUtils.isEmpty(httpEntity)) {
                        final BarMovieData o = new Gson().fromJson(httpEntity,
                                new TypeToken<BarMovieData>() {
                                }.getType());
                        handler.post(new Runnable() {
                            @Override
                            public void run() {
                                l.onGetM1905Success(o.getData().getData_list());

                            }
                        });
                    } else {
                        handler.post(new Runnable() {
                            @Override
                            public void run() {
                                WrongMsg wrongMsg = new WrongMsg();
                                wrongMsg.setMsg("获取数据为空,检测是否配置相关服务器");
                                l.onGetM1905Failure(wrongMsg);
                            }
                        });

                    }
                } catch (final JsonSyntaxException e) {
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            WrongMsg wrongMsg = new WrongMsg();
                            wrongMsg.setMsg("数据解析出错 " + e.getMessage());
                            l.onGetM1905Failure(wrongMsg);
                            e.printStackTrace();
                        }
                    });

                }
            }
        }.start();
    }

    public interface OnGetM1905MovieListener {
        void onGetM1905Success(List<DataListEntity> list);

        void onGetM1905Failure(WrongMsg wrongMsg);
    }
}