package safeluck.drive.evaluation.DB.route; import android.content.Context; import android.os.Environment; import android.util.Log; import androidx.annotation.NonNull; import androidx.work.Worker; import androidx.work.WorkerParameters; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.google.gson.stream.JsonReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.lang.reflect.Type; import java.util.List; import okhttp3.Route; import safeluck.drive.evaluation.DB.Constant; import safeluck.drive.evaluation.DB.Student; import safeluck.drive.evaluation.DB.WorkRoomDataBase; import safeluck.drive.evaluation.bean.RouteCollect; /** * DriveJudge * Created by lzw on 2020/9/16. 16:00:40 * 邮箱:632393724@qq.com * All Rights Saved! Chongqing AnYun Tech co. LTD */ public class RouteInitWorker extends Worker { private static final String TAG = "RouteInitWorker"; public RouteInitWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) { super(context, workerParams); } @NonNull @Override public Result doWork() { Log.i(TAG, "doWork: "+Thread.currentThread().getId()); try { File file = new File(Environment.getExternalStorageDirectory()+File.separator+getApplicationContext().getPackageName()+ File.separator+ Constant.ROUTELINE_JSON); if (!file.exists()){ return Result.failure(); } InputStream inputStream = null; try { inputStream =new FileInputStream(file); } catch (IOException e) { e.printStackTrace(); } InputStreamReader inputStreamReader = new InputStreamReader(inputStream); JsonReader jsonReader = new JsonReader(inputStreamReader); Gson gson = new Gson(); Type type = new TypeToken>(){}.getType(); List mstus=gson.fromJson(jsonReader, type); for (int i = 0; i < mstus.size(); i++) { RouteBean routeBean = new RouteBean(); routeBean.setRouteName(mstus.get(i).getName()); WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getRouteBeanDao().insertRouteBean(routeBean); RouteBean route = WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getRouteBeanDao().getLastRoute(); RouteCollect routeCollect = mstus.get(i); ListcrossingActiveBeans = routeCollect.getCrossing_active(); List triggerLineBeans = routeCollect.getTrigger_line(); Log.i(TAG,String.format("triggerLineBeans.size=%d,crossingActiveBeans.size=%d",triggerLineBeans.size(),crossingActiveBeans.size())); for (RouteCollect.TriggerLineBean bean:triggerLineBeans){ RouteTriggerLine routeTriggerLine = new RouteTriggerLine(); routeTriggerLine.setRoad(bean.getRoad()); routeTriggerLine.setRouteline_id(route.getId()); routeTriggerLine.setType(bean.getType()); routeTriggerLine.setX(bean.getX_y().get(0)); routeTriggerLine.setY(bean.getX_y().get(1)); WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getRouteTriggerLineDao().insertTriggerLine(routeTriggerLine); } if (crossingActiveBeans != null && crossingActiveBeans.size()>0){ for (RouteCollect.CrossingActiveBean bean:crossingActiveBeans){ RouteCross routeCross = new RouteCross(); routeCross.setActive(bean.getActive()); routeCross.setIdx(bean.getIdx()); routeCross.setRoad(bean.getRoad()); routeCross.setRouteline_id(route.getId()); WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getRouteCrooDao().insertRouteCross(routeCross); } } } } catch (Exception e) { e.printStackTrace(); return Result.failure(); } return Result.success(); } }