Thursday, August 2, 2012

[android-developers] ORMLite NullPointerException on dao's create method

Creation of database and tables pass successfulyl. My onCreate() of DatabaseHandler class: 
public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) 
   
{
         
try
         
{  

           
TableUtils.createTable(connectionSource, Category.class);
           
TableUtils.createTable(connectionSource, Level.class);
           
DataParsing a = new DataParsing();
            a
.fillCategories();
           
Log.i(DatabaseHandler.class.getName(), "created new entries in onCreate: " );
         
}
         
catch (SQLException e){
             
Log.e(TAG, "error creating DB " + DATABASE_NAME);
             
throw new RuntimeException(e);
         
} catch (JSONException e) {
           
// TODO Auto-generated catch block
            e
.printStackTrace();
       
}

   
}
  I get data JSON from web service and parse it with GSON. Data fill the class data successfully in fillcategories() method. Then I want to put all the data into ORMLite database in saveContacts() method:  
  
   public class DataParsing {
   
private static String KEY_STATUS = "status";
   
private static String KEY_MESSAGE = "message";
   
private static String KEY_CATEGORIES = "categories";
   
private static String KEY_DATA = "data";
   
private DatabaseHandler databaseHandler;
   
private Context _context;
   
public void fillCategories() throws JSONException, SQLException
   
{   UserFunctions userFunction  = new UserFunctions();
       
JSONObject json = userFunction.loginUser("login@ukr.net", "123456");
       
JSONObject data = json.getJSONObject(KEY_DATA);
       
// getting categories
       
JSONArray categories = new JSONArray();
        categories
= data.getJSONArray(KEY_CATEGORIES);
       
Gson gson = new Gson();
       
JsonParser parser = new JsonParser();
       
JsonArray array = parser.parse(categories.toString()).getAsJsonArray();
       
Type listType = new TypeToken<List<Category>>() {}.getType();
       
List<Category> tasks = new ArrayList<Category>();
        tasks
= gson.fromJson(array.toString(), listType);

        saveContacts
(tasks);

   
}

   
public void saveContacts(List<Category> contacts) throws SQLException
       
{

           
OrmLiteSqliteOpenHelper dbHelper= DatabaseHandler.getInstance(_context);
           
Dao<Category, Integer> daoContact=dbHelper.getDao(Category.class);

           
QueryBuilder<Category, Integer> queryBuilder = daoContact.queryBuilder();
           
Log.i("dao",queryBuilder.selectColumns("title").prepare().toString());


           
for (Category contact : contacts) {
               
Log.i("dao",contact.toString());
               
HelperFactory.GetHelper().getCategoryDao().create(contact);
           
}
       
}
}
And get the set of exceptions on the  
HelperFactory.GetHelper().getCategoryDao().create(contact);
row:
08-02 10:32:02.119: E/AndroidRuntime(1026): FATAL EXCEPTION: main 08-02 10:32:02.119: E/AndroidRuntime(1026): java.lang.NullPointerException 08-02 10:32:02.119: E/AndroidRuntime(1026): at com.library.DataParsing.saveContacts(DataParsing.java:61) 08-02 10:32:02.119: E/AndroidRuntime(1026): at com.library.DataParsing.fillCategories(DataParsing.java:45) 08-02 10:32:02.119: E/AndroidRuntime(1026): at com.library.DatabaseHandler.onCreate(DatabaseHandler.java:85) 08-02 10:32:02.119: E/AndroidRuntime(1026): at com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper.onCreate(OrmLiteSqliteOpenHelper.java:169) 08-02 10:32:02.119: E/AndroidRuntime(1026): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:126) 08-02 10:32:02.119: E/AndroidRuntime(1026): at com.j256.ormlite.android.AndroidConnectionSource.getReadWriteConnection(AndroidConnectionSource.java:63) 08-02 10:32:02.119: E/AndroidRuntime(1026): at com.j256.ormlite.android.AndroidConnectionSource.getReadOnlyConnection(AndroidConnectionSource.java:51) 08-02 10:32:02.119: E/AndroidRuntime(1026): at com.j256.ormlite.stmt.StatementExecutor.buildIterator(StatementExecutor.java:202) 08-02 10:32:02.119: E/AndroidRuntime(1026): at com.j256.ormlite.stmt.StatementExecutor.query(StatementExecutor.java:155) 08-02 10:32:02.119: E/AndroidRuntime(1026): at com.j256.ormlite.stmt.StatementExecutor.queryForAll(StatementExecutor.java:113) 08-02 10:32:02.119: E/AndroidRuntime(1026): at com.j256.ormlite.dao.BaseDaoImpl.queryForAll(BaseDaoImpl.java:237) 08-02 10:32:02.119: E/AndroidRuntime(1026): at com.assignmentexpert.LoginActivity$3.onClick(LoginActivity.java:121) 08-02 10:32:02.119: E/AndroidRuntime(1026): at android.view.View.performClick(View.java:2485) 08-02 10:32:02.119: E/AndroidRuntime(1026): at android.view.View$PerformClick.run(View.java:9080) 08-02 10:32:02.119: E/AndroidRuntime(1026): at android.os.Handler.handleCallback(Handler.java:587) 08-02 10:32:02.119: E/AndroidRuntime(1026): at android.os.Handler.dispatchMessage(Handler.java:92) 08-02 10:32:02.119: E/AndroidRuntime(1026): at android.os.Looper.loop(Looper.java:123) 08-02 10:32:02.119: E/AndroidRuntime(1026): at android.app.ActivityThread.main(ActivityThread.java:3687) 08-02 10:32:02.119: E/AndroidRuntime(1026): at java.lang.reflect.Method.invokeNative(Native Method) 08-02 10:32:02.119: E/AndroidRuntime(1026): at java.lang.reflect.Method.invoke(Method.java:507) 08-02 10:32:02.119: E/AndroidRuntime(1026): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 08-02 10:32:02.119: E/AndroidRuntime(1026): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 08-02 10:32:02.119: E/AndroidRuntime(1026): at dalvik.system.NativeStart.main(Native Method)
What's the problem, tell me please. List of objects, which I pass to the saveContacts() method is filling succesfully. Tables of the database with corresponding rows were created successfully too...

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

No comments:

Post a Comment