Делаю освобождение ресурсов базы
This commit is contained in:
4
.idea/deploymentTargetSelector.xml
generated
4
.idea/deploymentTargetSelector.xml
generated
@ -4,10 +4,10 @@
|
|||||||
<selectionStates>
|
<selectionStates>
|
||||||
<SelectionState runConfigName="app">
|
<SelectionState runConfigName="app">
|
||||||
<option name="selectionMode" value="DROPDOWN" />
|
<option name="selectionMode" value="DROPDOWN" />
|
||||||
<DropdownSelection timestamp="2024-08-04T06:58:46.122913300Z">
|
<DropdownSelection timestamp="2024-08-08T11:32:33.898603700Z">
|
||||||
<Target type="DEFAULT_BOOT">
|
<Target type="DEFAULT_BOOT">
|
||||||
<handle>
|
<handle>
|
||||||
<DeviceId pluginId="LocalEmulator" identifier="path=C:\Users\igor\.android\avd\Pixel_Tablet_API_34.avd" />
|
<DeviceId pluginId="LocalEmulator" identifier="path=C:\Users\ivanov.i\.android\avd\Pixel_3a_API_34_extension_level_7_x86_64.avd" />
|
||||||
</handle>
|
</handle>
|
||||||
</Target>
|
</Target>
|
||||||
</DropdownSelection>
|
</DropdownSelection>
|
||||||
|
|||||||
@ -11,11 +11,15 @@ import java.time.LocalDateTime;
|
|||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.time.format.DateTimeParseException;
|
import java.time.format.DateTimeParseException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Calendar;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.TimeZone;
|
||||||
|
|
||||||
|
import kz.istt.locust.Tools;
|
||||||
|
|
||||||
public class DateTimeTM extends com.google.android.material.textfield.TextInputEditText implements fieldDB
|
public class DateTimeTM extends com.google.android.material.textfield.TextInputEditText implements fieldDB
|
||||||
{
|
{
|
||||||
private String m_Value = null;
|
private String m_Value = null; //Строка с датой в формате: "YYYY-mm-dd hh:mm:ss" без часового пояса так как храню время в гринвиче на сервере
|
||||||
|
|
||||||
public DateTimeTM(Context context)
|
public DateTimeTM(Context context)
|
||||||
{
|
{
|
||||||
@ -30,27 +34,28 @@ public class DateTimeTM extends com.google.android.material.textfield.TextInputE
|
|||||||
return m_Value;
|
return m_Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Передаётся в секундах с 1970 года по гринвичу но отображается в локальном времени 1579154400 отображается 16.01.2020 12:00 (в Алмате)
|
|
||||||
public void setValue(String val)
|
public void setValue(String val)
|
||||||
{
|
{
|
||||||
m_Value = val;
|
m_Value = null; //Присваиваю ниже так как нужно только проверянное значение даты
|
||||||
if(val!=null && !val.equals(""))
|
if(val!=null && !val.equals(""))
|
||||||
{
|
{
|
||||||
Date date=null;
|
Date date=null;
|
||||||
try {
|
try {
|
||||||
date = new Date(Long.parseLong(m_Value)*1000);
|
date = new Date(Long.parseLong(val)*1000);
|
||||||
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //Теперь для простого преобразования в тип даты PostgreSQL дату храню в виде текста в формате "yyyy-MM-dd HH:mm:ss"
|
||||||
|
m_Value=format.format(date);
|
||||||
} catch (NumberFormatException e) {
|
} catch (NumberFormatException e) {
|
||||||
}
|
}
|
||||||
if(date==null){
|
if(date==null){
|
||||||
try {
|
try {
|
||||||
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||||
date = format.parse(m_Value);
|
date = format.parse(val);
|
||||||
|
m_Value = val;
|
||||||
} catch (ParseException e) {
|
} catch (ParseException e) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(date!=null) {
|
if(date!=null) {
|
||||||
SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy HH:mm");
|
SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy HH:mm"); //Убрал секунды так всё равно то что отображается не соответствует тому что храниться
|
||||||
//format.setTimeZone(TimeZone.getTimeZone("UTC"));
|
|
||||||
String str = format.format(date);
|
String str = format.format(date);
|
||||||
setText(str);
|
setText(str);
|
||||||
}else{
|
}else{
|
||||||
|
|||||||
@ -26,7 +26,6 @@ public class DateTimeText extends EditText implements fieldDB
|
|||||||
return m_Value;
|
return m_Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Передаётся в секундах с 1970 года по гринвичу но отображается в локальном времени 1579154400 отображается 16.01.2020 12:00 (в Алмате)
|
|
||||||
public void setValue(String val)
|
public void setValue(String val)
|
||||||
{
|
{
|
||||||
m_Value = val;
|
m_Value = val;
|
||||||
@ -34,8 +33,7 @@ public class DateTimeText extends EditText implements fieldDB
|
|||||||
{
|
{
|
||||||
Date date = new Date(Long.parseLong(m_Value)*1000);
|
Date date = new Date(Long.parseLong(m_Value)*1000);
|
||||||
|
|
||||||
SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy HH:mm");
|
SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
|
||||||
//format.setTimeZone(TimeZone.getTimeZone("UTC"));
|
|
||||||
|
|
||||||
String str = format.format(date);
|
String str = format.format(date);
|
||||||
setText(str);
|
setText(str);
|
||||||
@ -45,7 +43,6 @@ public class DateTimeText extends EditText implements fieldDB
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Класс для сохранения изменений сделаных пользователем при повороте экрана
|
// Класс для сохранения изменений сделаных пользователем при повороте экрана
|
||||||
public static class SavedStateDTT extends BaseSavedState
|
public static class SavedStateDTT extends BaseSavedState
|
||||||
{
|
{
|
||||||
|
|||||||
@ -10,7 +10,7 @@ import android.util.Log;
|
|||||||
import android.widget.CheckBox;
|
import android.widget.CheckBox;
|
||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
import android.widget.Spinner;
|
import android.widget.Spinner;
|
||||||
|
import java.sql.SQLException;
|
||||||
import com.google.android.material.textfield.TextInputEditText;
|
import com.google.android.material.textfield.TextInputEditText;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -21,8 +21,8 @@ import java.util.Set;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import dbfields.DateInput;
|
import dbfields.DateInput;
|
||||||
import dbfields.DateTimeText;
|
|
||||||
import dbfields.DateTimeTM;
|
import dbfields.DateTimeTM;
|
||||||
|
import dbfields.DateTimeText;
|
||||||
import dbfields.SpinnerDB;
|
import dbfields.SpinnerDB;
|
||||||
import dbfields.AutoCompleteTextViewDB;
|
import dbfields.AutoCompleteTextViewDB;
|
||||||
import dbfields.StringDB;
|
import dbfields.StringDB;
|
||||||
@ -62,19 +62,24 @@ public class DBGUITable
|
|||||||
String type=null;
|
String type=null;
|
||||||
//Считываем поля и их типы из таблицы
|
//Считываем поля и их типы из таблицы
|
||||||
DbOpenHelper dboh = new DbOpenHelper(m_context);
|
DbOpenHelper dboh = new DbOpenHelper(m_context);
|
||||||
Cursor cursor = dboh.getReadableDatabase().rawQuery("PRAGMA table_info('"+m_table+"');",null);
|
SQLiteDatabase rdb = null;
|
||||||
if(cursor.moveToFirst())
|
try {
|
||||||
{
|
rdb = dboh.getReadableDatabase();
|
||||||
do{
|
Cursor cursor = rdb.rawQuery("PRAGMA table_info('" + m_table + "');", null);
|
||||||
if(Tools.getStringFromCursor(cursor,"name").equals(name.toLowerCase()))
|
if (cursor.moveToFirst()) {
|
||||||
{
|
do {
|
||||||
type = Tools.getStringFromCursor(cursor,"type");
|
if (Tools.getStringFromCursor(cursor, "name").equals(name.toLowerCase())) {
|
||||||
|
type = Tools.getStringFromCursor(cursor, "type");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}while (cursor.moveToNext());
|
} while (cursor.moveToNext());
|
||||||
}
|
}
|
||||||
cursor.close();
|
cursor.close();
|
||||||
|
}finally{
|
||||||
|
if(rdb != null) { rdb.close(); }
|
||||||
|
}
|
||||||
dboh.close();
|
dboh.close();
|
||||||
|
|
||||||
if(type!=null){
|
if(type!=null){
|
||||||
return type.toLowerCase().trim();
|
return type.toLowerCase().trim();
|
||||||
}else{
|
}else{
|
||||||
@ -87,7 +92,10 @@ public class DBGUITable
|
|||||||
{
|
{
|
||||||
boolean result = true;
|
boolean result = true;
|
||||||
DbOpenHelper dboh = new DbOpenHelper(m_context);
|
DbOpenHelper dboh = new DbOpenHelper(m_context);
|
||||||
Cursor cursor = dboh.getReadableDatabase().rawQuery("PRAGMA table_info('"+m_table+"');",null);
|
SQLiteDatabase rdb = null;
|
||||||
|
try {
|
||||||
|
rdb = dboh.getReadableDatabase();
|
||||||
|
Cursor cursor = rdb.rawQuery("PRAGMA table_info('"+m_table+"');",null);
|
||||||
if(cursor.moveToFirst())
|
if(cursor.moveToFirst())
|
||||||
{
|
{
|
||||||
do{
|
do{
|
||||||
@ -113,6 +121,9 @@ public class DBGUITable
|
|||||||
}while (cursor.moveToNext());
|
}while (cursor.moveToNext());
|
||||||
}
|
}
|
||||||
cursor.close();
|
cursor.close();
|
||||||
|
} finally {
|
||||||
|
if (rdb != null) { rdb.close(); }
|
||||||
|
}
|
||||||
dboh.close();
|
dboh.close();
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
@ -194,11 +205,19 @@ public class DBGUITable
|
|||||||
{
|
{
|
||||||
uid=cv.getAsString("uid");
|
uid=cv.getAsString("uid");
|
||||||
String sql="select 1 from "+m_table+" where uid = '" + uid +"'";
|
String sql="select 1 from "+m_table+" where uid = '" + uid +"'";
|
||||||
cursor = dboh.getReadableDatabase().rawQuery(sql,null);
|
SQLiteDatabase rdb=null;
|
||||||
|
try {
|
||||||
|
rdb = dboh.getReadableDatabase();
|
||||||
|
cursor = rdb.rawQuery(sql,null);
|
||||||
b=cursor.moveToFirst();
|
b=cursor.moveToFirst();
|
||||||
cursor.close();
|
cursor.close();
|
||||||
|
} catch (Exception ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
if(rdb!=null) rdb.close();
|
||||||
}
|
}
|
||||||
dboh.close();
|
}
|
||||||
|
|
||||||
|
|
||||||
if(!b) //Вставляем новую запись
|
if(!b) //Вставляем новую запись
|
||||||
{
|
{
|
||||||
@ -207,31 +226,40 @@ public class DBGUITable
|
|||||||
|
|
||||||
validateField(cv);
|
validateField(cv);
|
||||||
|
|
||||||
SQLiteDatabase db = dboh.getWritableDatabase();
|
SQLiteDatabase db=null;
|
||||||
db.beginTransaction(); //Вроде как защита от многопоточности (для сервиса)
|
|
||||||
try {
|
try {
|
||||||
|
db = dboh.getWritableDatabase();
|
||||||
|
db.beginTransaction(); //Вроде как защита от многопоточности (для сервиса)
|
||||||
db.insert(m_table, null, cv);
|
db.insert(m_table, null, cv);
|
||||||
db.setTransactionSuccessful();
|
db.setTransactionSuccessful();
|
||||||
|
} catch (Exception ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
} finally {
|
} finally {
|
||||||
db.endTransaction();
|
if(db!=null) db.endTransaction();
|
||||||
|
if(db!=null) db.close();
|
||||||
}
|
}
|
||||||
db.close();
|
|
||||||
|
|
||||||
}else //Обновить запись
|
}else //Обновить запись
|
||||||
{
|
{
|
||||||
validateField(cv);
|
validateField(cv);
|
||||||
|
|
||||||
SQLiteDatabase db = dboh.getWritableDatabase();
|
SQLiteDatabase db=null;
|
||||||
|
try {
|
||||||
|
db = dboh.getWritableDatabase();
|
||||||
db.beginTransaction(); //Вроде как защита от многопоточности (для сервиса)
|
db.beginTransaction(); //Вроде как защита от многопоточности (для сервиса)
|
||||||
uid=cv.getAsString("uid");
|
uid=cv.getAsString("uid");
|
||||||
try {
|
|
||||||
db.update(m_table, cv, "uid = ?", new String[] {uid});
|
db.update(m_table, cv, "uid = ?", new String[] {uid});
|
||||||
db.setTransactionSuccessful();
|
db.setTransactionSuccessful();
|
||||||
|
} catch (Exception ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
} finally {
|
} finally {
|
||||||
db.endTransaction();
|
if(db!=null) db.endTransaction();
|
||||||
|
if(db!=null) db.close();
|
||||||
}
|
}
|
||||||
db.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dboh.close(); //Можно и не закрывать, главное закрыть getWritableDatabase() и getReadableDatabase()
|
||||||
return uid;
|
return uid;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -247,8 +275,10 @@ public class DBGUITable
|
|||||||
Cursor cursor = null;
|
Cursor cursor = null;
|
||||||
sql = "select * from "+m_table+" where uid='" + uid + "'";
|
sql = "select * from "+m_table+" where uid='" + uid + "'";
|
||||||
|
|
||||||
cursor = dboh.getReadableDatabase().rawQuery(sql, null);
|
SQLiteDatabase rdb=null;
|
||||||
|
try {
|
||||||
|
rdb = dboh.getReadableDatabase();
|
||||||
|
cursor = rdb.rawQuery(sql, null);
|
||||||
if (cursor.moveToFirst())
|
if (cursor.moveToFirst())
|
||||||
{
|
{
|
||||||
//перебираем столбцы и вставляем значения в поля
|
//перебираем столбцы и вставляем значения в поля
|
||||||
@ -273,6 +303,9 @@ public class DBGUITable
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
cursor.close();
|
cursor.close();
|
||||||
|
}finally{
|
||||||
|
if(rdb != null) { rdb.close(); }
|
||||||
|
}
|
||||||
dboh.close();
|
dboh.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -4,9 +4,12 @@ import android.content.ContentValues;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
|
import android.database.SQLException;
|
||||||
|
import android.database.sqlite.SQLiteConstraintException;
|
||||||
import android.database.sqlite.SQLiteDatabase;
|
import android.database.sqlite.SQLiteDatabase;
|
||||||
import android.database.sqlite.SQLiteOpenHelper;
|
import android.database.sqlite.SQLiteOpenHelper;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
@ -1573,12 +1576,13 @@ public class DbOpenHelper extends SQLiteOpenHelper
|
|||||||
/** Получить список столбцов*/
|
/** Получить список столбцов*/
|
||||||
public List<String> GetColumns(String tableName)
|
public List<String> GetColumns(String tableName)
|
||||||
{
|
{
|
||||||
SQLiteDatabase db = getReadableDatabase();
|
|
||||||
|
|
||||||
List<String> ar = null;
|
List<String> ar = null;
|
||||||
Cursor c = null;
|
Cursor c = null;
|
||||||
|
SQLiteDatabase rdb=null;
|
||||||
try {
|
try {
|
||||||
c = db.rawQuery("select * from " + tableName + " limit 1", null);
|
rdb = getReadableDatabase();
|
||||||
|
try {
|
||||||
|
c = rdb.rawQuery("select * from " + tableName + " limit 1", null);
|
||||||
if (c != null) {
|
if (c != null) {
|
||||||
ar = new ArrayList<String>(Arrays.asList(c.getColumnNames()));
|
ar = new ArrayList<String>(Arrays.asList(c.getColumnNames()));
|
||||||
}
|
}
|
||||||
@ -1590,12 +1594,18 @@ public class DbOpenHelper extends SQLiteOpenHelper
|
|||||||
if (c != null)
|
if (c != null)
|
||||||
c.close();
|
c.close();
|
||||||
}
|
}
|
||||||
|
}finally{
|
||||||
|
if(rdb != null) { rdb.close(); }
|
||||||
|
}
|
||||||
return ar;
|
return ar;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**Функция для обновления или вставки табличных данных*/
|
/**Функция для обновления или вставки табличных данных*/
|
||||||
public Boolean updateTable(TCTable tbl)
|
public Boolean updateTable(TCTable tbl)
|
||||||
{
|
{
|
||||||
|
SQLiteDatabase db;
|
||||||
|
Cursor cursor;
|
||||||
|
|
||||||
//Проверка на существование полей
|
//Проверка на существование полей
|
||||||
Boolean[] fb=new Boolean[tbl.fields.size()]; //Для проверки существования полей в локальной таблице
|
Boolean[] fb=new Boolean[tbl.fields.size()]; //Для проверки существования полей в локальной таблице
|
||||||
for(int i=0;i<fb.length;i++) fb[i]=false; //Помечаем что ниодного поля не существует
|
for(int i=0;i<fb.length;i++) fb[i]=false; //Помечаем что ниодного поля не существует
|
||||||
@ -1611,7 +1621,7 @@ public class DbOpenHelper extends SQLiteOpenHelper
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SQLiteDatabase db = this.getWritableDatabase();
|
db = this.getWritableDatabase();
|
||||||
//Переписываем значения существующих полей и выполняем запросы
|
//Переписываем значения существующих полей и выполняем запросы
|
||||||
while(tbl.ReadNextRecord())
|
while(tbl.ReadNextRecord())
|
||||||
{
|
{
|
||||||
@ -1621,9 +1631,16 @@ public class DbOpenHelper extends SQLiteOpenHelper
|
|||||||
String sql="select 1 from "+tbl.name+" where id = ?";
|
String sql="select 1 from "+tbl.name+" where id = ?";
|
||||||
String[] par = new String[] { tbl.getRowByName("id").getStrVal() };
|
String[] par = new String[] { tbl.getRowByName("id").getStrVal() };
|
||||||
|
|
||||||
Cursor cursor = getReadableDatabase().rawQuery(sql, par);
|
boolean exists=false;
|
||||||
boolean exists=cursor.moveToFirst();
|
SQLiteDatabase rdb=null;
|
||||||
|
try {
|
||||||
|
rdb = getReadableDatabase();
|
||||||
|
cursor = rdb.rawQuery(sql, par);
|
||||||
|
exists=cursor.moveToFirst();
|
||||||
cursor.close();
|
cursor.close();
|
||||||
|
}finally{
|
||||||
|
if(rdb != null) { rdb.close(); }
|
||||||
|
}
|
||||||
|
|
||||||
ContentValues cv = new ContentValues();
|
ContentValues cv = new ContentValues();
|
||||||
for(int i=0;i<tbl.fields.size();i++)
|
for(int i=0;i<tbl.fields.size();i++)
|
||||||
@ -1646,7 +1663,9 @@ public class DbOpenHelper extends SQLiteOpenHelper
|
|||||||
try {
|
try {
|
||||||
db.insert(tbl.name, null, cv);
|
db.insert(tbl.name, null, cv);
|
||||||
db.setTransactionSuccessful();
|
db.setTransactionSuccessful();
|
||||||
} finally {
|
}catch(SQLException ex){
|
||||||
|
ex.printStackTrace();
|
||||||
|
}finally {
|
||||||
db.endTransaction();
|
db.endTransaction();
|
||||||
}
|
}
|
||||||
}else
|
}else
|
||||||
@ -1655,6 +1674,8 @@ public class DbOpenHelper extends SQLiteOpenHelper
|
|||||||
try {
|
try {
|
||||||
db.update(tbl.name, cv, "id = ?", new String[] { tbl.getRowByName("id").getStrVal() });
|
db.update(tbl.name, cv, "id = ?", new String[] { tbl.getRowByName("id").getStrVal() });
|
||||||
db.setTransactionSuccessful();
|
db.setTransactionSuccessful();
|
||||||
|
}catch(SQLException ex){
|
||||||
|
ex.printStackTrace();
|
||||||
} finally {
|
} finally {
|
||||||
db.endTransaction();
|
db.endTransaction();
|
||||||
}
|
}
|
||||||
@ -1663,14 +1684,19 @@ public class DbOpenHelper extends SQLiteOpenHelper
|
|||||||
db.close();
|
db.close();
|
||||||
|
|
||||||
//Для дебага
|
//Для дебага
|
||||||
Cursor cursor = getReadableDatabase().rawQuery("select sum(1) s from "+tbl.name,null);
|
SQLiteDatabase rdb=null;
|
||||||
if(cursor.moveToFirst())
|
try {
|
||||||
{
|
rdb=getReadableDatabase();
|
||||||
do{
|
cursor = rdb.rawQuery("select sum(1) s from " + tbl.name, null);
|
||||||
Log.i("igor","tbl="+tbl.name+" cnt="+cursor.getString(cursor.getColumnIndex("s")));
|
if (cursor.moveToFirst()) {
|
||||||
}while (cursor.moveToNext());
|
do {
|
||||||
|
Log.i("igor", "tbl1=" + tbl.name + " cnt=" + cursor.getString(cursor.getColumnIndex("s")));
|
||||||
|
} while (cursor.moveToNext());
|
||||||
}
|
}
|
||||||
cursor.close();
|
cursor.close();
|
||||||
|
}finally{
|
||||||
|
if(rdb!=null) rdb.close();
|
||||||
|
}
|
||||||
/**/
|
/**/
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -1728,11 +1754,17 @@ public class DbOpenHelper extends SQLiteOpenHelper
|
|||||||
public void setUser(int id, int del, int seq, String name, String surname, String patronymic, String login, String password)
|
public void setUser(int id, int del, int seq, String name, String surname, String patronymic, String login, String password)
|
||||||
{
|
{
|
||||||
//так как пользователь может быть только 1 то удаляем всех остальных
|
//так как пользователь может быть только 1 то удаляем всех остальных
|
||||||
getReadableDatabase().execSQL("update _user set del=1;");
|
boolean b=false;
|
||||||
|
SQLiteDatabase rdb=null;
|
||||||
Cursor cursor = getReadableDatabase().rawQuery("select 1 from _user where id = ?", new String[] { String.valueOf(id) });
|
try {
|
||||||
boolean b=cursor.moveToFirst();
|
rdb=getReadableDatabase();
|
||||||
|
rdb.execSQL("update _user set del=1;");
|
||||||
|
Cursor cursor = rdb.rawQuery("select 1 from _user where id = ?", new String[]{String.valueOf(id)});
|
||||||
|
b = cursor.moveToFirst();
|
||||||
cursor.close();
|
cursor.close();
|
||||||
|
}finally{
|
||||||
|
if(rdb!=null) rdb.close();
|
||||||
|
}
|
||||||
|
|
||||||
if(!b) //Новый
|
if(!b) //Новый
|
||||||
{
|
{
|
||||||
@ -2144,25 +2176,24 @@ public class DbOpenHelper extends SQLiteOpenHelper
|
|||||||
public int[] inPerimeter(float lon,float lat)
|
public int[] inPerimeter(float lon,float lat)
|
||||||
{
|
{
|
||||||
int result[]={0,0};
|
int result[]={0,0};
|
||||||
Cursor cursor = this
|
SQLiteDatabase rdb = null;
|
||||||
.getReadableDatabase()
|
try {
|
||||||
.rawQuery(
|
rdb = this.getReadableDatabase();
|
||||||
"select id,country_id,lon_max,name from CountriesRegions where del=0 and "+lon+">lon_min and "+lon+"<lon_max and "+lat+">lat_min and "+lat+"<lat_max order by area", null);
|
|
||||||
if (cursor.moveToFirst())
|
Cursor cursor = rdb.rawQuery("select id,country_id,lon_max,name from CountriesRegions where del=0 and " + lon + ">lon_min and " + lon + "<lon_max and " + lat + ">lat_min and " + lat + "<lat_max order by area", null);
|
||||||
{
|
if (cursor.moveToFirst()) {
|
||||||
do
|
do {
|
||||||
{
|
result[0] = cursor.getInt(cursor.getColumnIndex("country_id"));
|
||||||
result[0]=cursor.getInt(cursor.getColumnIndex("country_id"));
|
Log.i("igor", "Region name = " + cursor.getString(cursor.getColumnIndex("name")) + " id = " + cursor.getString(cursor.getColumnIndex("id")));
|
||||||
Log.i("igor", "Region name = "+cursor.getString(cursor.getColumnIndex("name"))+" id = " + cursor.getString(cursor.getColumnIndex("id")));
|
|
||||||
//String points="{ \"type\": \"Polygon\", \"coordinates\": [[";
|
//String points="{ \"type\": \"Polygon\", \"coordinates\": [[";
|
||||||
Point PHead0 = new Point();
|
Point PHead0 = new Point();
|
||||||
PHead0.x=lon;
|
PHead0.x = lon;
|
||||||
PHead0.y=lat;
|
PHead0.y = lat;
|
||||||
Point PTail0 = new Point();
|
Point PTail0 = new Point();
|
||||||
PTail0.x=cursor.getFloat(cursor.getColumnIndex("lon_max"))+1;
|
PTail0.x = cursor.getFloat(cursor.getColumnIndex("lon_max")) + 1;
|
||||||
PTail0.y=lat;
|
PTail0.y = lat;
|
||||||
|
|
||||||
int resId = _context.getResources().getIdentifier("raw/region_"+cursor.getString(cursor.getColumnIndex("id")), null, _context.getPackageName());
|
int resId = _context.getResources().getIdentifier("raw/region_" + cursor.getString(cursor.getColumnIndex("id")), null, _context.getPackageName());
|
||||||
try {
|
try {
|
||||||
InputStream isRaw = null;
|
InputStream isRaw = null;
|
||||||
isRaw = _context.getResources().openRawResource(resId);
|
isRaw = _context.getResources().openRawResource(resId);
|
||||||
@ -2171,25 +2202,23 @@ public class DbOpenHelper extends SQLiteOpenHelper
|
|||||||
if (tbl.OpenTableH(isRaw)) {
|
if (tbl.OpenTableH(isRaw)) {
|
||||||
|
|
||||||
//Первая и конечная точка совпадают
|
//Первая и конечная точка совпадают
|
||||||
int cnt=0; //Подсчитываю пересичения в право, если они не чётны то внутри иначе с наружи
|
int cnt = 0; //Подсчитываю пересичения в право, если они не чётны то внутри иначе с наружи
|
||||||
boolean first=true;
|
boolean first = true;
|
||||||
Point PHead1 = new Point();
|
Point PHead1 = new Point();
|
||||||
Point PTail1 = new Point();
|
Point PTail1 = new Point();
|
||||||
|
|
||||||
while(tbl.ReadNextRecord())
|
while (tbl.ReadNextRecord()) {
|
||||||
{
|
|
||||||
//points+="["+tbl.fields.get(0).getFloatVal()+", "+tbl.fields.get(1).getFloatVal()+"],";
|
//points+="["+tbl.fields.get(0).getFloatVal()+", "+tbl.fields.get(1).getFloatVal()+"],";
|
||||||
|
|
||||||
if(first)
|
if (first) {
|
||||||
{
|
|
||||||
PHead1.x = tbl.fields.get(0).getFloatVal();
|
PHead1.x = tbl.fields.get(0).getFloatVal();
|
||||||
PHead1.y = tbl.fields.get(1).getFloatVal();
|
PHead1.y = tbl.fields.get(1).getFloatVal();
|
||||||
first=false;
|
first = false;
|
||||||
}else{
|
} else {
|
||||||
PTail1.x = tbl.fields.get(0).getFloatVal();
|
PTail1.x = tbl.fields.get(0).getFloatVal();
|
||||||
PTail1.y = tbl.fields.get(1).getFloatVal();
|
PTail1.y = tbl.fields.get(1).getFloatVal();
|
||||||
Point pnt = Tools.getCrossingLine2(PHead0,PTail0,PHead1,PTail1);
|
Point pnt = Tools.getCrossingLine2(PHead0, PTail0, PHead1, PTail1);
|
||||||
if(pnt.x!=0 && pnt.y!=0) {
|
if (pnt.x != 0 && pnt.y != 0) {
|
||||||
cnt++;
|
cnt++;
|
||||||
}
|
}
|
||||||
PHead1.x = PTail1.x;
|
PHead1.x = PTail1.x;
|
||||||
@ -2198,8 +2227,8 @@ public class DbOpenHelper extends SQLiteOpenHelper
|
|||||||
}
|
}
|
||||||
//points+="]]}";
|
//points+="]]}";
|
||||||
//Log.i("igor", points);
|
//Log.i("igor", points);
|
||||||
if(cnt%2!=0){
|
if (cnt % 2 != 0) {
|
||||||
result[1]=cursor.getInt(cursor.getColumnIndex("id"));
|
result[1] = cursor.getInt(cursor.getColumnIndex("id"));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2211,7 +2240,9 @@ public class DbOpenHelper extends SQLiteOpenHelper
|
|||||||
} while (cursor.moveToNext());
|
} while (cursor.moveToNext());
|
||||||
}
|
}
|
||||||
cursor.close();
|
cursor.close();
|
||||||
|
}finally{
|
||||||
|
if(rdb != null) { rdb.close(); }
|
||||||
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -37,6 +37,7 @@ public class LatLon implements android.os.Parcelable{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void writeToParcel(Parcel dest, int flags) {
|
public void writeToParcel(Parcel dest, int flags) {
|
||||||
|
dest.writeString(uid);
|
||||||
dest.writeDouble(lat);
|
dest.writeDouble(lat);
|
||||||
dest.writeDouble(lon);
|
dest.writeDouble(lon);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -253,13 +253,19 @@ public class LocustActivity extends FragmentActivity implements LocationListener
|
|||||||
((selectDB)spiCountry).addField("", "");
|
((selectDB)spiCountry).addField("", "");
|
||||||
// Выбираем страны и заполняем поля
|
// Выбираем страны и заполняем поля
|
||||||
dboh = new DbOpenHelper(this);
|
dboh = new DbOpenHelper(this);
|
||||||
cursor = dboh.getReadableDatabase().rawQuery("select c.id, COALESCE((SELECT translation FROM _translations t JOIN _languages l ON t.language_id=l.id WHERE t.del = 0 AND identifier = c.name AND l.short_name='" + Tools.getLang() + "' LIMIT 1),c.name) name from countries c where c.del=0 order by c.name", null);
|
SQLiteDatabase rdb = null;
|
||||||
|
try {
|
||||||
|
rdb = dboh.getReadableDatabase();
|
||||||
|
cursor = rdb.rawQuery("select c.id, COALESCE((SELECT translation FROM _translations t JOIN _languages l ON t.language_id=l.id WHERE t.del = 0 AND identifier = c.name AND l.short_name='" + Tools.getLang() + "' LIMIT 1),c.name) name from countries c where c.del=0 order by c.name", null);
|
||||||
if (cursor.moveToFirst()) {
|
if (cursor.moveToFirst()) {
|
||||||
do {
|
do {
|
||||||
((selectDB)spiCountry).addField(cursor.getString(cursor.getColumnIndex("name")), cursor.getString(cursor.getColumnIndex("id")));
|
((selectDB) spiCountry).addField(cursor.getString(cursor.getColumnIndex("name")), cursor.getString(cursor.getColumnIndex("id")));
|
||||||
} while (cursor.moveToNext());
|
} while (cursor.moveToNext());
|
||||||
}
|
}
|
||||||
cursor.close();
|
cursor.close();
|
||||||
|
}finally{
|
||||||
|
if(rdb != null) { rdb.close(); }
|
||||||
|
}
|
||||||
dboh.close();
|
dboh.close();
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------
|
||||||
@ -287,13 +293,19 @@ public class LocustActivity extends FragmentActivity implements LocationListener
|
|||||||
if (((selectDB)spiCountry).getValue() != null && !((selectDB)spiCountry).getValue().equals("")) {
|
if (((selectDB)spiCountry).getValue() != null && !((selectDB)spiCountry).getValue().equals("")) {
|
||||||
DbOpenHelper dboh = new DbOpenHelper(LocustActivity.this);
|
DbOpenHelper dboh = new DbOpenHelper(LocustActivity.this);
|
||||||
String sql = "select id, name, lon_min from countriesregions where del=0 and country_id=" + ((selectDB)spiCountry).getValue() + " order by name";
|
String sql = "select id, name, lon_min from countriesregions where del=0 and country_id=" + ((selectDB)spiCountry).getValue() + " order by name";
|
||||||
Cursor cursor = dboh.getReadableDatabase().rawQuery(sql, null);
|
SQLiteDatabase rdb=null;
|
||||||
|
try {
|
||||||
|
rdb = dboh.getReadableDatabase();
|
||||||
|
Cursor cursor = rdb.rawQuery(sql, null);
|
||||||
if (cursor.moveToFirst()) {
|
if (cursor.moveToFirst()) {
|
||||||
do {
|
do {
|
||||||
((selectDB)spiRegion).addField(cursor.getString(cursor.getColumnIndex("name")), cursor.getString(cursor.getColumnIndex("id")));
|
((selectDB) spiRegion).addField(cursor.getString(cursor.getColumnIndex("name")), cursor.getString(cursor.getColumnIndex("id")));
|
||||||
} while (cursor.moveToNext());
|
} while (cursor.moveToNext());
|
||||||
}
|
}
|
||||||
cursor.close();
|
cursor.close();
|
||||||
|
}finally{
|
||||||
|
if(rdb!=null) { rdb.close();}
|
||||||
|
}
|
||||||
dboh.close();
|
dboh.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -328,8 +340,7 @@ public class LocustActivity extends FragmentActivity implements LocationListener
|
|||||||
// @Override
|
// @Override
|
||||||
// public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
|
// public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
|
||||||
//
|
//
|
||||||
// //SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy HH:mm");
|
// //SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
|
||||||
// //format.setTimeZone(TimeZone.getTimeZone("UTC"));
|
|
||||||
// //LocustActivity.this.edtDate.setText(format.format(curDateTime));
|
// //LocustActivity.this.edtDate.setText(format.format(curDateTime));
|
||||||
//
|
//
|
||||||
// //Теперь выбираем время
|
// //Теперь выбираем время
|
||||||
@ -365,8 +376,7 @@ public class LocustActivity extends FragmentActivity implements LocationListener
|
|||||||
//
|
//
|
||||||
// if (!LocustActivity.this.edtDate.getText().toString().equals("")) {
|
// if (!LocustActivity.this.edtDate.getText().toString().equals("")) {
|
||||||
// Date date = null;
|
// Date date = null;
|
||||||
// SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy HH:mm");
|
// SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
|
||||||
// //format.setTimeZone(TimeZone.getTimeZone("UTC"));
|
|
||||||
// try {
|
// try {
|
||||||
// date = format.parse(LocustActivity.this.edtDate.getText().toString());
|
// date = format.parse(LocustActivity.this.edtDate.getText().toString());
|
||||||
// } catch (ParseException e) {
|
// } catch (ParseException e) {
|
||||||
|
|||||||
@ -356,88 +356,6 @@ public class LocustDelActivity extends FragmentActivity implements LocationListe
|
|||||||
|
|
||||||
View btnGetDate = (View) findViewById(R.id.btnGetDate);
|
View btnGetDate = (View) findViewById(R.id.btnGetDate);
|
||||||
btnGetDate.setOnClickListener(new OnClickListenerDateTime((fieldDB)edtDate,this));
|
btnGetDate.setOnClickListener(new OnClickListenerDateTime((fieldDB)edtDate,this));
|
||||||
//Закоментил так как создал отдельный класс: OnClickListenerDateTime2
|
|
||||||
// View.OnClickListener clk0 = new View.OnClickListener() {
|
|
||||||
// public void onClick(View v)
|
|
||||||
// {
|
|
||||||
// DatePickerDialog.OnDateSetListener myDateListener = new DatePickerDialog.OnDateSetListener() {
|
|
||||||
// @Override
|
|
||||||
// public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)
|
|
||||||
// {
|
|
||||||
//
|
|
||||||
// //SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy HH:mm");
|
|
||||||
// //format.setTimeZone(TimeZone.getTimeZone("UTC"));
|
|
||||||
// //LocustDelActivity.this.edtDate.setText(format.format(curDateTime));
|
|
||||||
//
|
|
||||||
// //Теперь выбираем время
|
|
||||||
// OnTimeSetListener myDateListener = new OnTimeSetListener() {
|
|
||||||
// @Override
|
|
||||||
// public void onTimeSet(TimePicker view, int hourOfDay, int minute)
|
|
||||||
// {
|
|
||||||
// long val = Long.parseLong(((fieldDB)LocustDelActivity.this.edtDate).getValue());
|
|
||||||
// val += (hourOfDay*60+minute)*60;
|
|
||||||
// ((fieldDB)LocustDelActivity.this.edtDate).setValue(String.valueOf(val));
|
|
||||||
// }
|
|
||||||
// };
|
|
||||||
//
|
|
||||||
// if(((fieldDB)LocustDelActivity.this.edtDate).getValue()!=null && !((fieldDB)LocustDelActivity.this.edtDate).getValue().equals(""))
|
|
||||||
// {
|
|
||||||
// Date time = new Date(Long.parseLong(((fieldDB)LocustDelActivity.this.edtDate).getValue())*1000);
|
|
||||||
// Calendar myCal = new GregorianCalendar();
|
|
||||||
// myCal.setTime(time);
|
|
||||||
// int hour = myCal.get(Calendar.HOUR_OF_DAY);
|
|
||||||
// int minute = myCal.get(Calendar.MINUTE);
|
|
||||||
// TimePickerDialog tpd = new TimePickerDialog(LocustDelActivity.this, R.style.AlertDialogTheme, myDateListener, hour, minute, true);
|
|
||||||
// tpd.show();
|
|
||||||
// }else
|
|
||||||
// {
|
|
||||||
// final Calendar myCal = Calendar.getInstance();
|
|
||||||
// int hour = myCal.get(Calendar.HOUR_OF_DAY);
|
|
||||||
// int minute = myCal.get(Calendar.MINUTE);
|
|
||||||
// TimePickerDialog tpd = new TimePickerDialog(LocustDelActivity.this, R.style.AlertDialogTheme, myDateListener, hour, minute, true);
|
|
||||||
// tpd.show();
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// Date date = new Date(year-1900, monthOfYear, dayOfMonth);
|
|
||||||
// ((fieldDB)LocustDelActivity.this.edtDate).setValue(String.valueOf(date.getTime()/1000));
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// };
|
|
||||||
//
|
|
||||||
// if(!LocustDelActivity.this.edtDate.getText().toString().equals(""))
|
|
||||||
// {
|
|
||||||
// Date date=null;
|
|
||||||
// SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy HH:mm");
|
|
||||||
// //format.setTimeZone(TimeZone.getTimeZone("UTC"));
|
|
||||||
// try {
|
|
||||||
// date = format.parse(LocustDelActivity.this.edtDate.getText().toString());
|
|
||||||
// } catch (ParseException e) {
|
|
||||||
// e.printStackTrace();
|
|
||||||
// }
|
|
||||||
// if(date!=null)
|
|
||||||
// {
|
|
||||||
// Calendar myCal = new GregorianCalendar();
|
|
||||||
// myCal.setTime(date);
|
|
||||||
// int day = myCal.get(Calendar.DAY_OF_MONTH);
|
|
||||||
// int month = myCal.get(Calendar.MONTH);
|
|
||||||
// int year = myCal.get(Calendar.YEAR);
|
|
||||||
// DatePickerDialog dpd = new DatePickerDialog(LocustDelActivity.this, R.style.AlertDialogTheme, myDateListener, year, month, day);
|
|
||||||
// dpd.show();
|
|
||||||
// }
|
|
||||||
// }else
|
|
||||||
// {
|
|
||||||
// final Calendar c = Calendar.getInstance();
|
|
||||||
// int year = c.get(Calendar.YEAR);
|
|
||||||
// int month = c.get(Calendar.MONTH);
|
|
||||||
// int day = c.get(Calendar.DAY_OF_MONTH);
|
|
||||||
//
|
|
||||||
// DatePickerDialog dpd = new DatePickerDialog(LocustDelActivity.this, R.style.AlertDialogTheme, myDateListener, year, month, day);
|
|
||||||
// dpd.show();
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// };
|
|
||||||
// btnGetDate.setOnClickListener(clk0);
|
|
||||||
|
|
||||||
edtTimeZone = (EditText) findViewById(R.id.edtTimeZone);
|
edtTimeZone = (EditText) findViewById(R.id.edtTimeZone);
|
||||||
guiTable.add(edtTimeZone,"timezone");
|
guiTable.add(edtTimeZone,"timezone");
|
||||||
|
|||||||
@ -1358,9 +1358,9 @@ public class LocustHealthActivity extends FragmentActivity implements LocationLi
|
|||||||
guiTableHealth.add(edtImage2, "image_name2");
|
guiTableHealth.add(edtImage2, "image_name2");
|
||||||
edtImage3 = (EditText) findViewById(R.id.edtImage3); // Фото
|
edtImage3 = (EditText) findViewById(R.id.edtImage3); // Фото
|
||||||
guiTableHealth.add(edtImage3, "image_name3");
|
guiTableHealth.add(edtImage3, "image_name3");
|
||||||
edtImage4 = (EditText) findViewById(R.id.edtImage3); // Фото
|
edtImage4 = (EditText) findViewById(R.id.edtImage4); // Фото
|
||||||
guiTableHealth.add(edtImage4, "image_name4");
|
guiTableHealth.add(edtImage4, "image_name4");
|
||||||
edtImage5 = (EditText) findViewById(R.id.edtImage3); // Фото
|
edtImage5 = (EditText) findViewById(R.id.edtImage5); // Фото
|
||||||
guiTableHealth.add(edtImage5, "image_name5");
|
guiTableHealth.add(edtImage5, "image_name5");
|
||||||
|
|
||||||
//********** Оценки риска **********
|
//********** Оценки риска **********
|
||||||
@ -1896,88 +1896,7 @@ public class LocustHealthActivity extends FragmentActivity implements LocationLi
|
|||||||
// guiTable.add(edtDate, "date");
|
// guiTable.add(edtDate, "date");
|
||||||
|
|
||||||
// View btnGetDate = (View) findViewById(R.id.btnGetDate);
|
// View btnGetDate = (View) findViewById(R.id.btnGetDate);
|
||||||
// OnClickListener clk0 = new OnClickListener() {
|
|
||||||
// public void onClick(View v)
|
|
||||||
// {
|
|
||||||
// DatePickerDialog.OnDateSetListener myDateListener = new DatePickerDialog.OnDateSetListener() {
|
|
||||||
// @Override
|
|
||||||
// public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)
|
|
||||||
// {
|
|
||||||
//
|
|
||||||
// //SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy HH:mm");
|
|
||||||
// //format.setTimeZone(TimeZone.getTimeZone("UTC"));
|
|
||||||
// //LocustDelActivity.this.edtDate.setText(format.format(curDateTime));
|
|
||||||
//
|
|
||||||
// //Теперь выбираем время
|
|
||||||
// OnTimeSetListener myDateListener = new OnTimeSetListener() {
|
|
||||||
// @Override
|
|
||||||
// public void onTimeSet(TimePicker view, int hourOfDay, int minute)
|
|
||||||
// {
|
|
||||||
// long val = Long.parseLong(((fieldDB) LocustHealthActivity.this.edtDate).getValue());
|
|
||||||
// val += (hourOfDay*60+minute)*60;
|
|
||||||
// ((fieldDB) LocustHealthActivity.this.edtDate).setValue(String.valueOf(val));
|
|
||||||
// }
|
|
||||||
// };
|
|
||||||
//
|
|
||||||
// if(((fieldDB) LocustHealthActivity.this.edtDate).getValue()!=null && !((fieldDB) LocustHealthActivity.this.edtDate).getValue().equals(""))
|
|
||||||
// {
|
|
||||||
// Date time = new Date(Long.parseLong(((fieldDB) LocustHealthActivity.this.edtDate).getValue())*1000);
|
|
||||||
// Calendar myCal = new GregorianCalendar();
|
|
||||||
// myCal.setTime(time);
|
|
||||||
// int hour = myCal.get(Calendar.HOUR_OF_DAY);
|
|
||||||
// int minute = myCal.get(Calendar.MINUTE);
|
|
||||||
// TimePickerDialog tpd = new TimePickerDialog(LocustHealthActivity.this, R.style.AlertDialogTheme, myDateListener, hour, minute, true);
|
|
||||||
// tpd.show();
|
|
||||||
// }else
|
|
||||||
// {
|
|
||||||
// final Calendar myCal = Calendar.getInstance();
|
|
||||||
// int hour = myCal.get(Calendar.HOUR_OF_DAY);
|
|
||||||
// int minute = myCal.get(Calendar.MINUTE);
|
|
||||||
// TimePickerDialog tpd = new TimePickerDialog(LocustHealthActivity.this, R.style.AlertDialogTheme, myDateListener, hour, minute, true);
|
|
||||||
// tpd.show();
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// Date date = new Date(year-1900, monthOfYear, dayOfMonth);
|
|
||||||
// ((fieldDB) LocustHealthActivity.this.edtDate).setValue(String.valueOf(date.getTime()/1000));
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// };
|
|
||||||
//
|
|
||||||
// if(!LocustHealthActivity.this.edtDate.getText().toString().equals(""))
|
|
||||||
// {
|
|
||||||
// Date date=null;
|
|
||||||
// SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy HH:mm");
|
|
||||||
// //format.setTimeZone(TimeZone.getTimeZone("UTC"));
|
|
||||||
// try {
|
|
||||||
// date = format.parse(LocustHealthActivity.this.edtDate.getText().toString());
|
|
||||||
// } catch (ParseException e) {
|
|
||||||
// e.printStackTrace();
|
|
||||||
// }
|
|
||||||
// if(date!=null)
|
|
||||||
// {
|
|
||||||
// Calendar myCal = new GregorianCalendar();
|
|
||||||
// myCal.setTime(date);
|
|
||||||
// int day = myCal.get(Calendar.DAY_OF_MONTH);
|
|
||||||
// int month = myCal.get(Calendar.MONTH);
|
|
||||||
// int year = myCal.get(Calendar.YEAR);
|
|
||||||
// DatePickerDialog dpd = new DatePickerDialog(LocustHealthActivity.this, R.style.AlertDialogTheme, myDateListener, year, month, day);
|
|
||||||
// dpd.show();
|
|
||||||
// }
|
|
||||||
// }else
|
|
||||||
// {
|
|
||||||
// final Calendar c = Calendar.getInstance();
|
|
||||||
// int year = c.get(Calendar.YEAR);
|
|
||||||
// int month = c.get(Calendar.MONTH);
|
|
||||||
// int day = c.get(Calendar.DAY_OF_MONTH);
|
|
||||||
//
|
|
||||||
// DatePickerDialog dpd = new DatePickerDialog(LocustHealthActivity.this, R.style.AlertDialogTheme, myDateListener, year, month, day);
|
|
||||||
// dpd.show();
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// };
|
|
||||||
// btnGetDate.setOnClickListener(clk0);
|
|
||||||
//
|
|
||||||
// edtTimeZone = (EditText) findViewById(R.id.edtTimeZone);
|
// edtTimeZone = (EditText) findViewById(R.id.edtTimeZone);
|
||||||
// guiTable.add(edtTimeZone,"timezone");
|
// guiTable.add(edtTimeZone,"timezone");
|
||||||
//
|
//
|
||||||
|
|||||||
@ -622,7 +622,7 @@ public class LocustListActivity extends AppCompatActivity
|
|||||||
|
|
||||||
long dv = cursor.getLong(cursor.getColumnIndex("date")) * (long) 1000; // its need to be in milisecond
|
long dv = cursor.getLong(cursor.getColumnIndex("date")) * (long) 1000; // its need to be in milisecond
|
||||||
Date df = new java.util.Date(dv);
|
Date df = new java.util.Date(dv);
|
||||||
String vv = new SimpleDateFormat("dd.MM.yyyy HH:mm").format(df);
|
String vv = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(df);
|
||||||
|
|
||||||
btn.setText(cursor.getString(cursor.getColumnIndex("terrain")) + " (" + vv + ")");
|
btn.setText(cursor.getString(cursor.getColumnIndex("terrain")) + " (" + vv + ")");
|
||||||
|
|
||||||
|
|||||||
@ -96,8 +96,9 @@ public class MySynchronizationOld
|
|||||||
private int rid_sendFrmLocustDel = -1; //Для отправки данных
|
private int rid_sendFrmLocustDel = -1; //Для отправки данных
|
||||||
private int rid_sendFrmLocustHealth = -1; //Для отправки данных
|
private int rid_sendFrmLocustHealth = -1; //Для отправки данных
|
||||||
|
|
||||||
private int rid_frmlocust = -1; //Для запроса данных
|
private int rid_frmlocust = -1; //Для запроса данных (не используется так как нет синхронизации)
|
||||||
private int rid_frmlocustdel = -1; //Для запроса данных
|
private int rid_frmlocustdel = -1; //Для запроса данных
|
||||||
|
private int rid_frmlocustdel_locations = -1; //Для подгрузки координат формы
|
||||||
|
|
||||||
private int rid_Borns = -1;
|
private int rid_Borns = -1;
|
||||||
private int rid_countries=-1; //Для идентификации прихода данных списка стран
|
private int rid_countries=-1; //Для идентификации прихода данных списка стран
|
||||||
@ -509,10 +510,11 @@ public class MySynchronizationOld
|
|||||||
{
|
{
|
||||||
String country_id = cursor.getString(0);
|
String country_id = cursor.getString(0);
|
||||||
rid_frmlocustdel = makeRequest("frmlocustdel",String.valueOf(MySynchronizationOld.SyncDays),country_id);
|
rid_frmlocustdel = makeRequest("frmlocustdel",String.valueOf(MySynchronizationOld.SyncDays),country_id);
|
||||||
|
//Загружаю координаты для формы frmlocustdel
|
||||||
|
rid_frmlocustdel_locations = makeRequest("frmlocustdel_locations",String.valueOf(MySynchronizationOld.SyncDays),country_id);
|
||||||
}
|
}
|
||||||
cursor.close();
|
cursor.close();
|
||||||
dboh.close();
|
dboh.close();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Пришел ответ от HTTP сервера
|
//Пришел ответ от HTTP сервера
|
||||||
@ -546,7 +548,7 @@ public class MySynchronizationOld
|
|||||||
(rid == rid_Borns && rid_Borns!=-1) || (rid == rid_LocustsTypes && rid_LocustsTypes!=-1) ||
|
(rid == rid_Borns && rid_Borns!=-1) || (rid == rid_LocustsTypes && rid_LocustsTypes!=-1) ||
|
||||||
(rid == rid_countries && rid_countries!=-1) || (rid==rid_CountriesRegions && rid_CountriesRegions!=-1) ||
|
(rid == rid_countries && rid_countries!=-1) || (rid==rid_CountriesRegions && rid_CountriesRegions!=-1) ||
|
||||||
(rid == rid__languages && rid__languages != -1) || (rid == rid__translations && rid__translations != -1) ||
|
(rid == rid__languages && rid__languages != -1) || (rid == rid__translations && rid__translations != -1) ||
|
||||||
(rid == rid_frmlocust && rid_frmlocust!=-1) || (rid == rid_frmlocustdel && rid_frmlocustdel!=-1) ||
|
(rid == rid_frmlocust && rid_frmlocust!=-1) || (rid == rid_frmlocustdel && rid_frmlocustdel!=-1) || (rid == rid_frmlocustdel_locations && rid_frmlocustdel_locations!=-1) ||
|
||||||
(rid == rid_list_greenery && rid_list_greenery!=-1) || (rid == rid_list_biotope && rid_list_biotope!=-1) ||
|
(rid == rid_list_greenery && rid_list_greenery!=-1) || (rid == rid_list_biotope && rid_list_biotope!=-1) ||
|
||||||
(rid == rid_list_cover && rid_list_cover!=-1) || (rid == rid_list_age && rid_list_age!=-1) ||
|
(rid == rid_list_cover && rid_list_cover!=-1) || (rid == rid_list_age && rid_list_age!=-1) ||
|
||||||
(rid == rid_list_actions && rid_list_actions!=-1) || (rid == rid_list_paintings && rid_list_paintings!=-1) ||
|
(rid == rid_list_actions && rid_list_actions!=-1) || (rid == rid_list_paintings && rid_list_paintings!=-1) ||
|
||||||
|
|||||||
@ -21,6 +21,7 @@ import java.io.InputStream;
|
|||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.security.MessageDigest;
|
import java.security.MessageDigest;
|
||||||
import java.security.NoSuchAlgorithmException;
|
import java.security.NoSuchAlgorithmException;
|
||||||
|
import java.text.ParseException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
@ -44,6 +45,66 @@ import android.widget.AdapterView.OnItemSelectedListener;
|
|||||||
*/
|
*/
|
||||||
public class Tools
|
public class Tools
|
||||||
{
|
{
|
||||||
|
public static Date getDateFromStr(String str) {
|
||||||
|
if(str==null)
|
||||||
|
return null;
|
||||||
|
Date date=null;
|
||||||
|
try {
|
||||||
|
date = new Date(Long.parseLong(str)*1000);
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
}
|
||||||
|
if(date==null){
|
||||||
|
try {
|
||||||
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||||
|
date = format.parse(str);
|
||||||
|
} catch (ParseException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return date;
|
||||||
|
}
|
||||||
|
//Преобразую в подходящий формат для PostgreSQL
|
||||||
|
public static String dateToStr(Date date){
|
||||||
|
if(date==null)
|
||||||
|
return null;
|
||||||
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||||
|
return format.format(date);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Date setYMD(Date date, int year, int monthOfYear, int dayOfMonth){
|
||||||
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
calendar.setTime(date);
|
||||||
|
calendar.set(Calendar.YEAR, year);
|
||||||
|
calendar.set(Calendar.MONTH, monthOfYear - 1); // Месяцы в Calendar начинаются с 0 (январь)
|
||||||
|
calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
|
||||||
|
return calendar.getTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Date setHMS(Date date, int hourOfDay, int minute,int second){
|
||||||
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
calendar.setTime(date);
|
||||||
|
calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
|
||||||
|
calendar.set(Calendar.MINUTE, minute);
|
||||||
|
calendar.set(Calendar.SECOND, second);
|
||||||
|
calendar.set(Calendar.MILLISECOND, 0);
|
||||||
|
return calendar.getTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Преобразование из локального времени пользователя во время по Гринвичу (UTC)
|
||||||
|
/*public static Date toUTCDate(Date localDate) {
|
||||||
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
calendar.setTime(localDate);
|
||||||
|
calendar.setTimeZone(TimeZone.getTimeZone("UTC"));
|
||||||
|
return calendar.getTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Преобразование из времени по Гринвичу (UTC) в локальное время пользователя
|
||||||
|
public static Date toLocalDate(Date utcDate) {
|
||||||
|
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
|
||||||
|
calendar.setTime(utcDate);
|
||||||
|
calendar.setTimeZone(TimeZone.getDefault());
|
||||||
|
return calendar.getTime();
|
||||||
|
}*/
|
||||||
|
|
||||||
public static boolean setListViewHeightBasedOnItems(ListView listView) {
|
public static boolean setListViewHeightBasedOnItems(ListView listView) {
|
||||||
|
|
||||||
ListAdapter listAdapter = listView.getAdapter();
|
ListAdapter listAdapter = listView.getAdapter();
|
||||||
|
|||||||
@ -7,12 +7,16 @@ import android.view.View;
|
|||||||
import android.widget.DatePicker;
|
import android.widget.DatePicker;
|
||||||
import android.widget.TimePicker;
|
import android.widget.TimePicker;
|
||||||
|
|
||||||
|
import java.text.ParseException;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.GregorianCalendar;
|
import java.util.GregorianCalendar;
|
||||||
|
import java.util.TimeZone;
|
||||||
|
|
||||||
import dbfields.fieldDB;
|
import dbfields.fieldDB;
|
||||||
import kz.istt.locust.R;
|
import kz.istt.locust.R;
|
||||||
|
import kz.istt.locust.Tools;
|
||||||
|
|
||||||
|
|
||||||
public class OnClickListenerDateTime implements View.OnClickListener {
|
public class OnClickListenerDateTime implements View.OnClickListener {
|
||||||
@ -30,54 +34,45 @@ public class OnClickListenerDateTime implements View.OnClickListener {
|
|||||||
DatePickerDialog.OnDateSetListener myDateListener = new DatePickerDialog.OnDateSetListener() {
|
DatePickerDialog.OnDateSetListener myDateListener = new DatePickerDialog.OnDateSetListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
|
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
|
||||||
|
int month = monthOfYear + 1;
|
||||||
//SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy HH:mm");
|
|
||||||
//format.setTimeZone(TimeZone.getTimeZone("UTC"));
|
|
||||||
//LocustActivity.this.edtDate.setText(format.format(curDateTime));
|
|
||||||
|
|
||||||
//Теперь выбираем время
|
//Теперь выбираем время
|
||||||
TimePickerDialog.OnTimeSetListener myDateListener = new TimePickerDialog.OnTimeSetListener() {
|
TimePickerDialog.OnTimeSetListener myTimeListener = new TimePickerDialog.OnTimeSetListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
|
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
|
||||||
long val = Long.parseLong(edtDate.getValue());
|
Date date = Tools.getDateFromStr(edtDate.getValue());
|
||||||
val += (hourOfDay * 60 + minute) * 60;
|
if(date != null) {
|
||||||
edtDate.setValue(String.valueOf(val));
|
date = Tools.setHMS(date,hourOfDay,minute,0);
|
||||||
|
edtDate.setValue(Tools.dateToStr(date));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
if (edtDate.getValue() != null && !edtDate.getValue().equals("")) {
|
Date time = Tools.getDateFromStr(edtDate.getValue());
|
||||||
Date time = new Date(Long.parseLong(edtDate.getValue()) * 1000);
|
if(time != null){
|
||||||
|
|
||||||
Calendar myCal = new GregorianCalendar();
|
Calendar myCal = new GregorianCalendar();
|
||||||
myCal.setTime(time);
|
myCal.setTime(time);
|
||||||
int hour = myCal.get(Calendar.HOUR_OF_DAY);
|
int hour = myCal.get(Calendar.HOUR_OF_DAY);
|
||||||
int minute = myCal.get(Calendar.MINUTE);
|
int minute = myCal.get(Calendar.MINUTE);
|
||||||
TimePickerDialog tpd = new TimePickerDialog(context, R.style.AlertDialogTheme, myDateListener, hour, minute, true);
|
TimePickerDialog tpd = new TimePickerDialog(context, R.style.AlertDialogTheme, myTimeListener, hour, minute, true);
|
||||||
tpd.show();
|
tpd.show();
|
||||||
} else {
|
} else {
|
||||||
final Calendar myCal = Calendar.getInstance();
|
final Calendar myCal = Calendar.getInstance();
|
||||||
int hour = myCal.get(Calendar.HOUR_OF_DAY);
|
int hour = myCal.get(Calendar.HOUR_OF_DAY);
|
||||||
int minute = myCal.get(Calendar.MINUTE);
|
int minute = myCal.get(Calendar.MINUTE);
|
||||||
TimePickerDialog tpd = new TimePickerDialog(context, R.style.AlertDialogTheme, myDateListener, hour, minute, true);
|
TimePickerDialog tpd = new TimePickerDialog(context, R.style.AlertDialogTheme, myTimeListener, hour, minute, true);
|
||||||
tpd.show();
|
tpd.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
Date date = new Date(year - 1900, monthOfYear, dayOfMonth);
|
time = Tools.setYMD(time,year,month,dayOfMonth);
|
||||||
edtDate.setValue(String.valueOf(date.getTime() / 1000));
|
edtDate.setValue(Tools.dateToStr(time));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
//if (!edtDate.getText().toString().equals("")) {
|
Date date = Tools.getDateFromStr(edtDate.getValue());
|
||||||
if(edtDate.getValue() != null && !edtDate.getValue().equals("")){
|
if(date != null){
|
||||||
Date date = null;
|
|
||||||
date = new Date(Long.parseLong(edtDate.getValue())*1000);
|
|
||||||
//SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy HH:mm");
|
|
||||||
//format.setTimeZone(TimeZone.getTimeZone("UTC"));
|
|
||||||
//try {
|
|
||||||
// date = format.parse(edtDate.getText().toString());
|
|
||||||
//} catch (ParseException e) {
|
|
||||||
// e.printStackTrace();
|
|
||||||
//}
|
|
||||||
if (date != null) {
|
|
||||||
Calendar myCal = new GregorianCalendar();
|
Calendar myCal = new GregorianCalendar();
|
||||||
myCal.setTime(date);
|
myCal.setTime(date);
|
||||||
int day = myCal.get(Calendar.DAY_OF_MONTH);
|
int day = myCal.get(Calendar.DAY_OF_MONTH);
|
||||||
@ -85,7 +80,7 @@ public class OnClickListenerDateTime implements View.OnClickListener {
|
|||||||
int year = myCal.get(Calendar.YEAR);
|
int year = myCal.get(Calendar.YEAR);
|
||||||
DatePickerDialog dpd = new DatePickerDialog(context, R.style.AlertDialogTheme, myDateListener, year, month, day);
|
DatePickerDialog dpd = new DatePickerDialog(context, R.style.AlertDialogTheme, myDateListener, year, month, day);
|
||||||
dpd.show();
|
dpd.show();
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
final Calendar c = Calendar.getInstance();
|
final Calendar c = Calendar.getInstance();
|
||||||
int year = c.get(Calendar.YEAR);
|
int year = c.get(Calendar.YEAR);
|
||||||
|
|||||||
Reference in New Issue
Block a user