From 52409ffda678d96529397717bccacd7f2d255b92 Mon Sep 17 00:00:00 2001 From: Igor I Date: Tue, 6 Aug 2024 19:42:27 +0500 Subject: [PATCH] =?UTF-8?q?=D0=9E=D1=82=D0=BF=D1=80=D0=B0=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20=D1=88=D0=B8=D1=80=D0=BE=D1=82=D1=8B=20=D0=B8=20=D0=B4?= =?UTF-8?q?=D0=BE=D0=BB=D0=B3=D0=BE=D1=82=D1=8B=20=D0=BE=D1=82=D0=B4=D0=B5?= =?UTF-8?q?=D0=BB=D1=8C=D0=BD=D0=BE=20=D0=B4=D0=BB=D1=8F=20=D1=81=D0=B8?= =?UTF-8?q?=D0=BD=D1=85=D1=80=D0=BE=D0=BD=D0=B8=D0=B7=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/kz/istt/locust/LatLon.java | 7 +- .../java/kz/istt/locust/LatLonAdapter.java | 3 +- .../java/kz/istt/locust/LocustActivity.java | 24 ++-- .../kz/istt/locust/LocustDelActivity.java | 46 +++++-- .../kz/istt/locust/LocustHealthActivity.java | 19 +-- .../java/kz/istt/locust/MapsActivity.java | 3 +- .../kz/istt/locust/MySynchronizationOld.java | 113 ++++++++++++++---- app/src/main/java/tools/TCTableTools2.java | 52 ++++++++ .../main/res/xml/network_security_config.xml | 1 + 9 files changed, 205 insertions(+), 63 deletions(-) create mode 100644 app/src/main/java/tools/TCTableTools2.java diff --git a/app/src/main/java/kz/istt/locust/LatLon.java b/app/src/main/java/kz/istt/locust/LatLon.java index 4497d68..089498c 100644 --- a/app/src/main/java/kz/istt/locust/LatLon.java +++ b/app/src/main/java/kz/istt/locust/LatLon.java @@ -5,15 +5,17 @@ import android.os.Parcelable; public class LatLon implements android.os.Parcelable{ + String uid; public double lat; public double lon; public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { @Override public LatLon createFromParcel(Parcel source) { + String uid = source.readString(); double lat = source.readDouble(); double lon = source.readDouble(); - return new LatLon(lat, lon); + return new LatLon(uid, lat, lon); } @Override @@ -22,7 +24,8 @@ public class LatLon implements android.os.Parcelable{ } }; - LatLon(double lat, double lon){ + LatLon(String uid, double lat, double lon){ + this.uid=uid; this.lat=lat; this.lon=lon; } diff --git a/app/src/main/java/kz/istt/locust/LatLonAdapter.java b/app/src/main/java/kz/istt/locust/LatLonAdapter.java index 2d24306..cecdcc4 100644 --- a/app/src/main/java/kz/istt/locust/LatLonAdapter.java +++ b/app/src/main/java/kz/istt/locust/LatLonAdapter.java @@ -15,6 +15,7 @@ import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; import java.util.ArrayList; import java.util.Locale; +import java.util.UUID; import tools.LatLonListener; @@ -125,7 +126,7 @@ public class LatLonAdapter extends ArrayAdapter { latlon.lat=adapter.latlonListener.getLat(); latlon.lon=adapter.latlonListener.getLon(); if(adapter.latlonList.get(adapter.latlonList.size()-1).lat!=0 && adapter.latlonList.get(adapter.latlonList.size()-1).lon!=0){ - adapter.latlonList.add(new LatLon(0, 0)); + adapter.latlonList.add(new LatLon(UUID.randomUUID().toString(),0, 0)); if(adapter.clc!=null){ adapter.clc.onClick(null); } diff --git a/app/src/main/java/kz/istt/locust/LocustActivity.java b/app/src/main/java/kz/istt/locust/LocustActivity.java index b97e767..9399ff3 100644 --- a/app/src/main/java/kz/istt/locust/LocustActivity.java +++ b/app/src/main/java/kz/istt/locust/LocustActivity.java @@ -52,6 +52,7 @@ import java.text.DecimalFormatSymbols; import java.util.ArrayList; import java.util.Date; import java.util.Locale; +import java.util.UUID; import java.util.zip.CRC32; import dbfields.AutoCompleteTextViewDB; @@ -403,7 +404,7 @@ public class LocustActivity extends FragmentActivity implements LocationListener ArrayList latlon = new ArrayList(); if(latlon.size()==0){ - latlon.add(new LatLon(0, 0)); + latlon.add(new LatLon(UUID.randomUUID().toString(),0, 0)); } latlonList = findViewById(R.id.latlonList); LatLonAdapter adapter = new LatLonAdapter(this, R.layout.list_lat_lon, latlon, this, latlonList,false); @@ -1374,10 +1375,10 @@ public class LocustActivity extends FragmentActivity implements LocationListener list.clear(); for(int i=0;i list = adapter.latlonList; list.clear(); DbOpenHelper dboh = new DbOpenHelper(this); - Cursor cursor = dboh.getReadableDatabase().rawQuery("select lat,lon from frmlocust_locations where frmlocust_uid='" + uid + "' order by pos", null); + Cursor cursor = dboh.getReadableDatabase().rawQuery("select uid,lat,lon from frmlocust_locations where del=false and frmlocust_uid='" + uid + "' order by pos", null); if (cursor.moveToFirst()) { do { - list.add(new LatLon(cursor.getDouble(0), cursor.getDouble(1))); + list.add(new LatLon(cursor.getString(0), cursor.getDouble(1), cursor.getDouble(2))); } while (cursor.moveToNext()); } cursor.close(); dboh.close(); - list.add(new LatLon(0, 0)); + list.add(new LatLon(UUID.randomUUID().toString(),0, 0)); } } @@ -2469,11 +2470,12 @@ public class LocustActivity extends FragmentActivity implements LocationListener { if(list.get(i)!=null && list.get(i).lon!=0 && list.get(i).lat!=0){ SQLiteDatabase wdb = dboh.getWritableDatabase(); - SQLiteStatement stmt = wdb.compileStatement("insert into frmlocust_locations(frmlocust_uid,pos,lat,lon)values(?,?,?,?)"); - stmt.bindString(1, uid); - stmt.bindLong(2, i); - stmt.bindDouble(3, list.get(i).lat); - stmt.bindDouble(4, list.get(i).lon); + SQLiteStatement stmt = wdb.compileStatement("insert into frmlocust_locations(uid,frmlocust_uid,pos,lat,lon)values(?,?,?,?,?)"); + stmt.bindString(1, UUID.randomUUID().toString()); + stmt.bindString(2, uid); + stmt.bindLong(3, i); + stmt.bindDouble(4, list.get(i).lat); + stmt.bindDouble(5, list.get(i).lon); stmt.executeInsert(); } } diff --git a/app/src/main/java/kz/istt/locust/LocustDelActivity.java b/app/src/main/java/kz/istt/locust/LocustDelActivity.java index e160518..80d8371 100644 --- a/app/src/main/java/kz/istt/locust/LocustDelActivity.java +++ b/app/src/main/java/kz/istt/locust/LocustDelActivity.java @@ -56,6 +56,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Locale; +import java.util.UUID; import java.util.zip.CRC32; import dbfields.AutoCompleteTextViewDB; @@ -447,7 +448,7 @@ public class LocustDelActivity extends FragmentActivity implements LocationListe guiTable.add(edtLonCenter, "lon_center"); ArrayList latlon = new ArrayList(); - latlon.add(new LatLon(0, 0)); + latlon.add(new LatLon(UUID.randomUUID().toString(), 0, 0)); latlonList = findViewById(R.id.latlonList); LatLonAdapter adapter = new LatLonAdapter(this, R.layout.list_lat_lon, latlon, this, latlonList, false); latlonList.setAdapter(adapter); @@ -1763,10 +1764,10 @@ public class LocustDelActivity extends FragmentActivity implements LocationListe list.clear(); for(int i=0;i list = ((LatLonAdapter)latlonList.getAdapter()).latlonList; for(int i=0;i list = adapter.latlonList; list.clear(); DbOpenHelper dboh = new DbOpenHelper(this); - Cursor cursor = dboh.getReadableDatabase().rawQuery("select lat,lon from frmlocustdel_locations where frmlocustdel_uid='" + uid + "' order by pos", null); + Cursor cursor = dboh.getReadableDatabase().rawQuery("select uid,lat,lon from frmlocustdel_locations where del=false and frmlocustdel_uid='" + uid + "' order by pos", null); if (cursor.moveToFirst()) { do { - list.add(new LatLon(cursor.getDouble(0), cursor.getDouble(1))); + list.add(new LatLon(cursor.getString(0), cursor.getDouble(1), cursor.getDouble(2))); } while (cursor.moveToNext()); } cursor.close(); dboh.close(); - list.add(new LatLon(0, 0)); + list.add(new LatLon(UUID.randomUUID().toString(),0, 0)); } } diff --git a/app/src/main/java/kz/istt/locust/LocustHealthActivity.java b/app/src/main/java/kz/istt/locust/LocustHealthActivity.java index 21e9a4c..6fb69e9 100644 --- a/app/src/main/java/kz/istt/locust/LocustHealthActivity.java +++ b/app/src/main/java/kz/istt/locust/LocustHealthActivity.java @@ -44,6 +44,7 @@ import java.io.InputStream; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.UUID; import java.util.zip.CRC32; import dbfields.AutoCompleteTextViewDB; @@ -433,7 +434,7 @@ public class LocustHealthActivity extends FragmentActivity implements LocationLi guiTableDel.add(edtLonCenter, "lon_center"); ArrayList latlon = new ArrayList(); - latlon.add(new LatLon(0, 0)); + latlon.add(new LatLon(UUID.randomUUID().toString(),0, 0)); latlonList = findViewById(R.id.latlonList); LatLonAdapter adapter = new LatLonAdapter(this, R.layout.list_lat_lon, latlon, this, latlonList, true); latlonList.setAdapter(adapter); @@ -3208,10 +3209,10 @@ public class LocustHealthActivity extends FragmentActivity implements LocationLi list.clear(); for(int i=0;i list = adapter.latlonList; list.clear(); DbOpenHelper dboh = new DbOpenHelper(this); - Cursor cursor = dboh.getReadableDatabase().rawQuery("select lat,lon from frmlocustdel_locations where frmlocustdel_uid='" + uid + "' order by pos", null); + Cursor cursor = dboh.getReadableDatabase().rawQuery("select uid,lat,lon from frmlocustdel_locations where frmlocustdel_uid='" + uid + "' order by pos", null); if (cursor.moveToFirst()) { do { - list.add(new LatLon(cursor.getDouble(0), cursor.getDouble(1))); + list.add(new LatLon(cursor.getString(0), cursor.getDouble(1), cursor.getDouble(2))); } while (cursor.moveToNext()); } cursor.close(); dboh.close(); - list.add(new LatLon(0, 0)); + list.add(new LatLon(UUID.randomUUID().toString(),0, 0)); } } @@ -3517,17 +3518,17 @@ public class LocustHealthActivity extends FragmentActivity implements LocationLi ArrayList list = adapter.latlonList; list.clear(); DbOpenHelper dboh = new DbOpenHelper(this); - Cursor cursor = dboh.getReadableDatabase().rawQuery("select lat,lon from frmlocusthealth_locations where frmlocusthealth_uid='" + uid + "' order by pos", null); + Cursor cursor = dboh.getReadableDatabase().rawQuery("select uid,lat,lon from frmlocusthealth_locations where frmlocusthealth_uid='" + uid + "' order by pos", null); if (cursor.moveToFirst()) { do { - list.add(new LatLon(cursor.getDouble(0), cursor.getDouble(1))); + list.add(new LatLon(cursor.getString(0),cursor.getDouble(1), cursor.getDouble(2))); } while (cursor.moveToNext()); } cursor.close(); dboh.close(); - list.add(new LatLon(0, 0)); + list.add(new LatLon(UUID.randomUUID().toString(),0, 0)); }*/ } diff --git a/app/src/main/java/kz/istt/locust/MapsActivity.java b/app/src/main/java/kz/istt/locust/MapsActivity.java index d150c86..a1a999b 100644 --- a/app/src/main/java/kz/istt/locust/MapsActivity.java +++ b/app/src/main/java/kz/istt/locust/MapsActivity.java @@ -41,6 +41,7 @@ import com.google.maps.android.ui.IconGenerator; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; +import java.util.UUID; import dbfields.selectDB; import tctable.Point; @@ -259,7 +260,7 @@ public class MapsActivity extends FragmentActivity implements OnMapReadyCallback Intent intent = new Intent(); ArrayList list=new ArrayList(); for(int j=0;j"; xml+=""; @@ -235,7 +241,7 @@ public class MySynchronizationOld cursor2.close(); xml+=""; - rid_sendFrmLocust = myThread.addRequest(MySynchronizationOld.URL+"/get/", xml, null); + rid_sendFrmLocust = myThread.addRequest(MySynchronizationOld.URL+"/get/", xml, null,null); }while (cursor.moveToNext()); } @@ -263,15 +269,15 @@ public class MySynchronizationOld String fname; fname=cursor.getString(cursor.getColumnIndex("image_name1")); if(fname!=null && !fname.equals("")) - myThread.addRequest(MySynchronizationOld.URL+"/get/?fn=6", null, Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/Locust/" + fname); + myThread.addRequest(MySynchronizationOld.URL+"/get/?fn=6", null, Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/Locust/" + fname,null); fname = cursor.getString(cursor.getColumnIndex("image_name2")); if(fname!=null && !fname.equals("")) - myThread.addRequest(MySynchronizationOld.URL+"/get/?fn=6", null, Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/Locust/" + fname); + myThread.addRequest(MySynchronizationOld.URL+"/get/?fn=6", null, Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/Locust/" + fname,null); fname = cursor.getString(cursor.getColumnIndex("image_name3")); if(fname!=null && !fname.equals("")) - myThread.addRequest(MySynchronizationOld.URL+"/get/?fn=6", null, Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/Locust/" + fname); + myThread.addRequest(MySynchronizationOld.URL+"/get/?fn=6", null, Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/Locust/" + fname,null); xml=""; @@ -302,7 +308,43 @@ public class MySynchronizationOld cursor2.close(); xml+=""; - rid_sendFrmLocustDel = myThread.addRequest(MySynchronizationOld.URL+"/get/", xml, null); + rid_sendFrmLocust = myThread.addRequest(MySynchronizationOld.URL+"/get/", xml, null,null); + + //Отправляю данные координат отдельно (без подтверждения доставки, потом нужно добавить поле send boolean и отправлять отдельно от frmlocustdel) + Cursor cursor3 = dboh.getReadableDatabase().rawQuery("select uid,del,seq,frmlocustdel_uid,pos,lon,lat from frmlocustdel_locations where frmlocustdel_uid=? order by pos", new String[] { String.valueOf(uid) }); + ByteArrayOutputStream outStream = new ByteArrayOutputStream(); + TCTableTools2.getTCTableFromCursor("frmlocustdel_locations", 0, cursor3, outStream); + myThread.addRequest(MySynchronizationOld.URL+"/asdc/tctable/", null, null, outStream.toByteArray()); + + +/* ByteArrayOutputStream outStream = new ByteArrayOutputStream(); + TCTable tbl = new TCTable("frmlocustdel_locations", 0); + tbl.addField(new TCField("uid",TCField.BD_UTF8_1)); + tbl.addField(new TCField("del",TCField.BD_UINT1)); + tbl.addField(new TCField("seq",TCField.BD_UINT4)); + tbl.addField(new TCField("frmlocustdel_uid",TCField.BD_UTF8_1)); + tbl.addField(new TCField("pos",TCField.BD_UINT4)); + tbl.addField(new TCField("lon",TCField.BD_FLOAT8)); + tbl.addField(new TCField("lat",TCField.BD_FLOAT8)); + tbl.getHeader(outStream); + //Переписываю значения из базы данных в outStream + Cursor cursor3 = dboh.getReadableDatabase().rawQuery("select uid,del,seq,frmlocustdel_uid,pos,lon,lat from frmlocustdel_locations where frmlocustdel_uid=? order by pos", new String[] { String.valueOf(uid) }); + if(cursor3.moveToFirst()) { + do { + tbl.fields.get(0).setValue(cursor3.getString(0)); + tbl.fields.get(1).setValue(cursor3.getString(1)); + tbl.fields.get(2).setValue(cursor3.getString(2)); + tbl.fields.get(3).setValue(cursor3.getString(3)); + tbl.fields.get(4).setValue(cursor3.getString(4)); + tbl.fields.get(5).setValue(cursor3.getString(5)); + tbl.fields.get(6).setValue(cursor3.getString(6)); + tbl.getCol(outStream); + }while (cursor3.moveToNext()); + } + cursor3.close(); + //Отправляю пакет данных на сервер для вставки либо обновления + myThread.addRequest(MySynchronizationOld.URL+"/asdc/tctable/", null, null, outStream.toByteArray()); +*/ }while (cursor.moveToNext()); } @@ -330,19 +372,19 @@ public class MySynchronizationOld String fname; fname=cursor.getString(cursor.getColumnIndex("image_name1")); if(fname!=null && !fname.equals("")) - myThread.addRequest(MySynchronizationOld.URL+"/get/?fn=6", null, Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/Locust/" + fname); + myThread.addRequest(MySynchronizationOld.URL+"/get/?fn=6", null, Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/Locust/" + fname,null); fname = cursor.getString(cursor.getColumnIndex("image_name2")); if(fname!=null && !fname.equals("")) - myThread.addRequest(MySynchronizationOld.URL+"/get/?fn=6", null, Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/Locust/" + fname); + myThread.addRequest(MySynchronizationOld.URL+"/get/?fn=6", null, Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/Locust/" + fname,null); fname = cursor.getString(cursor.getColumnIndex("image_name3")); if(fname!=null && !fname.equals("")) - myThread.addRequest(MySynchronizationOld.URL+"/get/?fn=6", null, Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/Locust/" + fname); + myThread.addRequest(MySynchronizationOld.URL+"/get/?fn=6", null, Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/Locust/" + fname,null); fname = cursor.getString(cursor.getColumnIndex("image_name4")); if(fname!=null && !fname.equals("")) - myThread.addRequest(MySynchronizationOld.URL+"/get/?fn=6", null, Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/Locust/" + fname); + myThread.addRequest(MySynchronizationOld.URL+"/get/?fn=6", null, Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/Locust/" + fname,null); fname = cursor.getString(cursor.getColumnIndex("image_name5")); if(fname!=null && !fname.equals("")) - myThread.addRequest(MySynchronizationOld.URL+"/get/?fn=6", null, Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/Locust/" + fname); + myThread.addRequest(MySynchronizationOld.URL+"/get/?fn=6", null, Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/Locust/" + fname,null); for(int i=0;iccalm.org test.ccalm.org 192.168.200.100 + 10.0.2.2 \ No newline at end of file