88
99import com .amit .utilities .SharedPreferenceData ;
1010
11+ import org .json .JSONArray ;
12+ import org .json .JSONObject ;
13+
1114import java .lang .reflect .Method ;
1215import java .util .ArrayList ;
16+ import java .util .Iterator ;
1317import java .util .LinkedHashMap ;
1418import java .util .TreeSet ;
1519
2024 * this class has method for executing db queries
2125 * like: creating table, inserting into table, deleting table, dropping table
2226**/
23- @ SuppressWarnings ({"unused" , "unchecked " , "PrimitiveArrayArgumentToVarargsMethod" , "ConstantConditions " })
27+ @ SuppressWarnings ({"unused" , "WeakerAccess " , "UnusedReturnValue " })
2428public class DBHelper
2529{
2630 private static final String TAG = DBHelper .class .getSimpleName ();
@@ -1102,12 +1106,12 @@ public DBHelper insertData(String tableName)
11021106 **/
11031107 //#endregion COMMENTS FOR insertDataWithTransaction method
11041108 @ Deprecated
1105- public DBHelper insertDataWithTransaction (String tableName )
1109+ public void insertDataWithTransaction (String tableName )
11061110 {
11071111 if (dbDataArrayList == null || dbDataArrayList .size () == 0 )
11081112 {
11091113 Log .e (TAG , "insertDataWithTransaction: Db Data was not provided. Cannot insert data in table." );
1110- return this ;
1114+ return ;
11111115 }
11121116
11131117 // tree set is used for removing duplicate column name from data array list
@@ -1233,7 +1237,6 @@ else if (columnData instanceof Double || columnData instanceof Float)
12331237 db .getWritableDatabase ().endTransaction ();
12341238
12351239 dbDataArrayList = new ArrayList <>();
1236- return this ;
12371240 }
12381241
12391242 //#region COMMENTS FOR insertDataWithTransaction method
@@ -1249,12 +1252,12 @@ else if (columnData instanceof Double || columnData instanceof Float)
12491252 * this method is useful for inserting bulk records into table in less time
12501253 **/
12511254 //#endregion COMMENTS FOR insertDataWithTransaction method
1252- public DBHelper insertDataWithTransaction (String tableName , int dbColumnCount )
1255+ public void insertDataWithTransaction (String tableName , int dbColumnCount )
12531256 {
12541257 if (dbDataArrayList == null || dbDataArrayList .size () == 0 )
12551258 {
12561259 Log .e (TAG , "insertDataWithTransaction: Db Data was not provided. Cannot insert data in table." );
1257- return this ;
1260+ return ;
12581261 }
12591262
12601263 // tree set is used for removing duplicate column name from data array list
@@ -1385,7 +1388,155 @@ else if (columnData instanceof Double || columnData instanceof Float)
13851388 db .getWritableDatabase ().endTransaction ();
13861389
13871390 dbDataArrayList = new ArrayList <>();
1388- return this ;
1391+ }
1392+
1393+ //#region COMMENTS FOR insertDataWithJson method
1394+ /**
1395+ * 2019 Apr 25 - Thursday - 12:25 PM
1396+ * insert data with json method
1397+ *
1398+ * this method will insert data using JSON Array or JSON Object
1399+ *
1400+ * @param tableName - name of the table to insert data in
1401+ *
1402+ * @param object - JSON Object or JSON Array of records and columns to be inserted
1403+ *
1404+ * @return True or False for success for failure in inserting records
1405+ **/
1406+ //#endregion COMMENTS FOR insertDataWithJson method
1407+ public boolean insertDataWithJson (String tableName , Object object )
1408+ {
1409+ try
1410+ {
1411+ JSONArray jsonArray = new JSONArray ();
1412+
1413+ if (object == null )
1414+ {
1415+ Log .e (TAG , "insertData: object value cannot be null." );
1416+ return false ;
1417+ }
1418+
1419+ if (object instanceof ArrayList )
1420+ {
1421+ Log .e (TAG , "insertDataWithJson: cannot parse array list, you can use json object or json array." );
1422+ return false ;
1423+ }
1424+
1425+ if (object instanceof JSONObject )
1426+ {
1427+ Iterator <String > iterator = ((JSONObject ) object ).keys ();
1428+
1429+ while (iterator .hasNext ())
1430+ {
1431+ String key = iterator .next ();
1432+ jsonArray = ((JSONObject ) object ).getJSONArray (key );
1433+
1434+ Log .e (TAG , "insertData: json array for " + key + " is: " + jsonArray );
1435+ }
1436+ }
1437+ else if (object instanceof JSONArray )
1438+ {
1439+ jsonArray = (JSONArray ) object ;
1440+ }
1441+
1442+ for (int i = 0 ; i < jsonArray .length (); i ++)
1443+ {
1444+ JSONObject jsonObject = jsonArray .getJSONObject (i );
1445+ Iterator <String > iterator = jsonObject .keys ();
1446+
1447+ while (iterator .hasNext ())
1448+ {
1449+ String columnName = iterator .next ();
1450+ String columnData = jsonObject .getString (columnName );
1451+
1452+ // Log.e(TAG, "insertData: name of column from json is: " + columnName);
1453+ // Log.e(TAG, "insertData: value of column from json is: " + columnData);
1454+
1455+ this .addDataForTable (new DbData (columnName , columnData ));
1456+ }
1457+ }
1458+
1459+ this .insertDataWithTransaction (tableName , 5 );
1460+ return true ;
1461+ }
1462+ catch (Exception e )
1463+ {
1464+ Log .e (TAG , "insertData: exception while inserting data using json:\n " );
1465+ e .printStackTrace ();
1466+
1467+ return false ;
1468+ }
1469+ }
1470+
1471+ //#region COMMENTS FOR insertDataWithJsonAndTransaction method
1472+ /**
1473+ * 2019 Apr 25 - Thursday - 12:25 PM
1474+ * insert data with json method
1475+ *
1476+ * this method will insert data using JSON Array or JSON Object
1477+ * this method will user SQLite Database Transaction for inserting records in db
1478+ *
1479+ * @param tableName - name of the table to insert data in
1480+ *
1481+ * @param object - JSON Object or JSON Array of records and columns to be inserted
1482+ *
1483+ * @param tableColumnCount - Count of Number of columns for that table
1484+ *
1485+ * @return True or False for success for failure in inserting records
1486+ **/
1487+ //#endregion COMMENTS FOR insertDataWithJsonAndTransaction method
1488+ public boolean insertDataWithJsonAndTransaction (String tableName , Object object , int tableColumnCount )
1489+ {
1490+ try
1491+ {
1492+ JSONArray jsonArray = new JSONArray ();
1493+
1494+ if (object == null )
1495+ {
1496+ Log .e (TAG , "insertData: object value cannot be null." );
1497+ return false ;
1498+ }
1499+
1500+ if (object instanceof JSONObject )
1501+ {
1502+ Iterator <String > iterator = ((JSONObject ) object ).keys ();
1503+
1504+ while (iterator .hasNext ())
1505+ {
1506+ String key = iterator .next ();
1507+ jsonArray = ((JSONObject ) object ).getJSONArray (key );
1508+
1509+ // Log.e(TAG, "insertData: json array for " + key + " is: " + jsonArray);
1510+ }
1511+ }
1512+ else if (object instanceof JSONArray )
1513+ {
1514+ jsonArray = (JSONArray ) object ;
1515+ }
1516+
1517+ for (int i = 0 ; i < jsonArray .length (); i ++)
1518+ {
1519+ JSONObject jsonObject = jsonArray .getJSONObject (i );
1520+ Iterator <String > iterator = jsonObject .keys ();
1521+
1522+ while (iterator .hasNext ())
1523+ {
1524+ String columnName = iterator .next ();
1525+ String columnData = jsonObject .getString (columnName );
1526+ this .addDataForTable (new DbData (columnName , columnData ));
1527+ }
1528+ }
1529+
1530+ this .insertDataWithTransaction (tableName , tableColumnCount );
1531+ return true ;
1532+ }
1533+ catch (Exception e )
1534+ {
1535+ Log .e (TAG , "insertData: exception while inserting data using json:\n " );
1536+ e .printStackTrace ();
1537+
1538+ return false ;
1539+ }
13891540 }
13901541
13911542 //#region COMMENTS FOR updateData method
0 commit comments