forked from github/wulkanowy-mirror
Prepare app for MVP (#40)
This commit is contained in:
parent
844230956a
commit
7e6a73d1f3
@ -1,5 +1,5 @@
|
|||||||
exclude:
|
exclude:
|
||||||
- /app/src/main/java/io/github/wulkanowy/dao/entities/.*
|
- /app/src/main/java/io/github/wulkanowy/db/dao/entities/.*
|
||||||
component_depth: 1
|
component_depth: 1
|
||||||
languages:
|
languages:
|
||||||
- java
|
- java
|
||||||
|
@ -63,11 +63,14 @@ dependencies {
|
|||||||
implementation 'com.jakewharton:butterknife:8.8.1'
|
implementation 'com.jakewharton:butterknife:8.8.1'
|
||||||
implementation 'joda-time:joda-time:2.9.9'
|
implementation 'joda-time:joda-time:2.9.9'
|
||||||
implementation 'com.github.javiersantos:AppUpdater:2.6.4'
|
implementation 'com.github.javiersantos:AppUpdater:2.6.4'
|
||||||
|
implementation 'com.google.dagger:dagger-android:2.14.1'
|
||||||
|
implementation 'com.google.dagger:dagger-android-support:2.14.1'
|
||||||
|
|
||||||
|
annotationProcessor 'com.google.dagger:dagger-android-processor:2.14.1'
|
||||||
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
|
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
|
||||||
|
|
||||||
debugImplementation 'com.amitshekhar.android:debug-db:1.0.1'
|
debugImplementation 'com.amitshekhar.android:debug-db:1.0.1'
|
||||||
debugImplementation 'net.zetetic:android-database-sqlcipher:3.5.7@aar'
|
debugImplementation 'net.zetetic:android-database-sqlcipher:3.5.9'
|
||||||
|
|
||||||
testImplementation 'junit:junit:4.12'
|
testImplementation 'junit:junit:4.12'
|
||||||
testImplementation 'org.mockito:mockito-core:2.11.0'
|
testImplementation 'org.mockito:mockito-core:2.11.0'
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package io.github.wulkanowy.dao;
|
package io.github.wulkanowy.db.dao;
|
||||||
|
|
||||||
import android.support.test.InstrumentationRegistry;
|
import android.support.test.InstrumentationRegistry;
|
||||||
|
|
||||||
@ -9,9 +9,9 @@ import org.junit.Before;
|
|||||||
import org.junit.BeforeClass;
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import io.github.wulkanowy.dao.entities.DaoMaster;
|
import io.github.wulkanowy.db.dao.entities.DaoMaster;
|
||||||
import io.github.wulkanowy.dao.entities.DaoSession;
|
import io.github.wulkanowy.db.dao.entities.DaoSession;
|
||||||
import io.github.wulkanowy.dao.entities.Grade;
|
import io.github.wulkanowy.db.dao.entities.Grade;
|
||||||
|
|
||||||
public class DatabaseAccessTest extends DatabaseAccess {
|
public class DatabaseAccessTest extends DatabaseAccess {
|
||||||
|
|
||||||
@ -20,7 +20,7 @@ public class DatabaseAccessTest extends DatabaseAccess {
|
|||||||
@BeforeClass
|
@BeforeClass
|
||||||
public static void setUpClass() {
|
public static void setUpClass() {
|
||||||
DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(InstrumentationRegistry.getTargetContext()
|
DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(InstrumentationRegistry.getTargetContext()
|
||||||
, "wulkanowyTest-database");
|
, "wulkanowyTest-db");
|
||||||
Database database = devOpenHelper.getWritableDb();
|
Database database = devOpenHelper.getWritableDb();
|
||||||
|
|
||||||
daoSession = new DaoMaster(database).newSession();
|
daoSession = new DaoMaster(database).newSession();
|
@ -1,10 +1,7 @@
|
|||||||
package io.github.wulkanowy.dao.entities;
|
package io.github.wulkanowy.db.dao.entities;
|
||||||
|
|
||||||
import android.support.test.filters.SmallTest;
|
|
||||||
|
|
||||||
import org.greenrobot.greendao.test.AbstractDaoTestLongPk;
|
import org.greenrobot.greendao.test.AbstractDaoTestLongPk;
|
||||||
|
|
||||||
@SmallTest
|
|
||||||
public class AccountTest extends AbstractDaoTestLongPk<AccountDao, Account> {
|
public class AccountTest extends AbstractDaoTestLongPk<AccountDao, Account> {
|
||||||
|
|
||||||
public AccountTest() {
|
public AccountTest() {
|
@ -1,4 +1,4 @@
|
|||||||
package io.github.wulkanowy.dao.entities;
|
package io.github.wulkanowy.db.dao.entities;
|
||||||
|
|
||||||
import org.greenrobot.greendao.test.AbstractDaoTestLongPk;
|
import org.greenrobot.greendao.test.AbstractDaoTestLongPk;
|
||||||
|
|
@ -1,10 +1,7 @@
|
|||||||
package io.github.wulkanowy.dao.entities;
|
package io.github.wulkanowy.db.dao.entities;
|
||||||
|
|
||||||
import android.support.test.filters.SmallTest;
|
|
||||||
|
|
||||||
import org.greenrobot.greendao.test.AbstractDaoTestLongPk;
|
import org.greenrobot.greendao.test.AbstractDaoTestLongPk;
|
||||||
|
|
||||||
@SmallTest
|
|
||||||
public class GradeTest extends AbstractDaoTestLongPk<GradeDao, Grade> {
|
public class GradeTest extends AbstractDaoTestLongPk<GradeDao, Grade> {
|
||||||
|
|
||||||
public GradeTest() {
|
public GradeTest() {
|
||||||
@ -16,6 +13,7 @@ public class GradeTest extends AbstractDaoTestLongPk<GradeDao, Grade> {
|
|||||||
Grade entity = new Grade();
|
Grade entity = new Grade();
|
||||||
entity.setId(key);
|
entity.setId(key);
|
||||||
entity.setIsNew(false);
|
entity.setIsNew(false);
|
||||||
|
entity.setRead(false);
|
||||||
return entity;
|
return entity;
|
||||||
}
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package io.github.wulkanowy.dao.entities;
|
package io.github.wulkanowy.db.dao.entities;
|
||||||
|
|
||||||
import org.greenrobot.greendao.test.AbstractDaoTestLongPk;
|
import org.greenrobot.greendao.test.AbstractDaoTestLongPk;
|
||||||
|
|
@ -1,10 +1,7 @@
|
|||||||
package io.github.wulkanowy.dao.entities;
|
package io.github.wulkanowy.db.dao.entities;
|
||||||
|
|
||||||
import android.support.test.filters.SmallTest;
|
|
||||||
|
|
||||||
import org.greenrobot.greendao.test.AbstractDaoTestLongPk;
|
import org.greenrobot.greendao.test.AbstractDaoTestLongPk;
|
||||||
|
|
||||||
@SmallTest
|
|
||||||
public class SubjectTest extends AbstractDaoTestLongPk<SubjectDao, Subject> {
|
public class SubjectTest extends AbstractDaoTestLongPk<SubjectDao, Subject> {
|
||||||
|
|
||||||
public SubjectTest() {
|
public SubjectTest() {
|
@ -1,10 +1,7 @@
|
|||||||
package io.github.wulkanowy.dao.entities;
|
package io.github.wulkanowy.db.dao.entities;
|
||||||
|
|
||||||
import org.greenrobot.greendao.test.AbstractDaoTestLongPk;
|
import org.greenrobot.greendao.test.AbstractDaoTestLongPk;
|
||||||
|
|
||||||
import io.github.wulkanowy.dao.entities.Week;
|
|
||||||
import io.github.wulkanowy.dao.entities.WeekDao;
|
|
||||||
|
|
||||||
public class WeekTest extends AbstractDaoTestLongPk<WeekDao, Week> {
|
public class WeekTest extends AbstractDaoTestLongPk<WeekDao, Week> {
|
||||||
|
|
||||||
public WeekTest() {
|
public WeekTest() {
|
@ -1,30 +0,0 @@
|
|||||||
package io.github.wulkanowy.services;
|
|
||||||
|
|
||||||
import android.support.test.runner.AndroidJUnit4;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4.class)
|
|
||||||
public class VulcanSynchronizationTest {
|
|
||||||
|
|
||||||
@Test(expected = IOException.class)
|
|
||||||
public void syncNoLoginSessionSubjectTest() throws IOException {
|
|
||||||
VulcanSynchronization vulcanSynchronization = new VulcanSynchronization(new LoginSession());
|
|
||||||
vulcanSynchronization.syncSubjectsAndGrades();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test(expected = IOException.class)
|
|
||||||
public void syncNoLoginSessionGradeTest() throws IOException {
|
|
||||||
VulcanSynchronization vulcanSynchronization = new VulcanSynchronization(new LoginSession());
|
|
||||||
vulcanSynchronization.syncGrades();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test(expected = IOException.class)
|
|
||||||
public void syncNoLoginSessionTimetableTest() throws IOException {
|
|
||||||
VulcanSynchronization vulcanSynchronization = new VulcanSynchronization(new LoginSession());
|
|
||||||
vulcanSynchronization.syncTimetable();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,4 +1,4 @@
|
|||||||
package io.github.wulkanowy.services.synchronization;
|
package io.github.wulkanowy.services.sync;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
@ -21,14 +21,12 @@ import io.github.wulkanowy.api.login.AccountPermissionException;
|
|||||||
import io.github.wulkanowy.api.login.BadCredentialsException;
|
import io.github.wulkanowy.api.login.BadCredentialsException;
|
||||||
import io.github.wulkanowy.api.login.LoginErrorException;
|
import io.github.wulkanowy.api.login.LoginErrorException;
|
||||||
import io.github.wulkanowy.api.login.VulcanOfflineException;
|
import io.github.wulkanowy.api.login.VulcanOfflineException;
|
||||||
import io.github.wulkanowy.dao.entities.Account;
|
import io.github.wulkanowy.db.dao.entities.Account;
|
||||||
import io.github.wulkanowy.dao.entities.AccountDao;
|
import io.github.wulkanowy.db.dao.entities.AccountDao;
|
||||||
import io.github.wulkanowy.dao.entities.DaoMaster;
|
import io.github.wulkanowy.db.dao.entities.DaoMaster;
|
||||||
import io.github.wulkanowy.dao.entities.DaoSession;
|
import io.github.wulkanowy.db.dao.entities.DaoSession;
|
||||||
import io.github.wulkanowy.security.CryptoException;
|
import io.github.wulkanowy.utils.security.CryptoException;
|
||||||
import io.github.wulkanowy.security.Safety;
|
import io.github.wulkanowy.utils.security.Safety;
|
||||||
import io.github.wulkanowy.services.LoginSession;
|
|
||||||
import io.github.wulkanowy.services.synchronisation.CurrentAccountLogin;
|
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4.class)
|
@RunWith(AndroidJUnit4.class)
|
||||||
public class CurrentAccountLoginTest {
|
public class CurrentAccountLoginTest {
|
||||||
@ -41,11 +39,12 @@ public class CurrentAccountLoginTest {
|
|||||||
|
|
||||||
@BeforeClass
|
@BeforeClass
|
||||||
public static void setUpClass() {
|
public static void setUpClass() {
|
||||||
|
DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(InstrumentationRegistry.getTargetContext(), "wulkanowyTest-db");
|
||||||
DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(InstrumentationRegistry.getTargetContext(), "wulkanowyTest-database");
|
|
||||||
Database database = devOpenHelper.getWritableDb();
|
Database database = devOpenHelper.getWritableDb();
|
||||||
|
|
||||||
daoSession = new DaoMaster(database).newSession();
|
daoSession = new DaoMaster(database).newSession();
|
||||||
|
|
||||||
|
DaoMaster.dropAllTables(database, true);
|
||||||
|
DaoMaster.createAllTables(database, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Before
|
@Before
|
@ -1,4 +1,4 @@
|
|||||||
package io.github.wulkanowy.services.synchronization;
|
package io.github.wulkanowy.services.sync;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
@ -16,12 +16,10 @@ import io.github.wulkanowy.api.StudentAndParent;
|
|||||||
import io.github.wulkanowy.api.Vulcan;
|
import io.github.wulkanowy.api.Vulcan;
|
||||||
import io.github.wulkanowy.api.user.BasicInformation;
|
import io.github.wulkanowy.api.user.BasicInformation;
|
||||||
import io.github.wulkanowy.api.user.PersonalData;
|
import io.github.wulkanowy.api.user.PersonalData;
|
||||||
import io.github.wulkanowy.dao.entities.Account;
|
import io.github.wulkanowy.db.dao.entities.Account;
|
||||||
import io.github.wulkanowy.dao.entities.DaoMaster;
|
import io.github.wulkanowy.db.dao.entities.DaoMaster;
|
||||||
import io.github.wulkanowy.dao.entities.DaoSession;
|
import io.github.wulkanowy.db.dao.entities.DaoSession;
|
||||||
import io.github.wulkanowy.security.Safety;
|
import io.github.wulkanowy.utils.security.Safety;
|
||||||
import io.github.wulkanowy.services.LoginSession;
|
|
||||||
import io.github.wulkanowy.services.synchronisation.FirstAccountLogin;
|
|
||||||
|
|
||||||
public class FirstAccountLoginTest {
|
public class FirstAccountLoginTest {
|
||||||
|
|
||||||
@ -31,11 +29,12 @@ public class FirstAccountLoginTest {
|
|||||||
|
|
||||||
@BeforeClass
|
@BeforeClass
|
||||||
public static void setUpClass() {
|
public static void setUpClass() {
|
||||||
|
DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(InstrumentationRegistry.getTargetContext(), "wulkanowyTest-db");
|
||||||
DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(InstrumentationRegistry.getTargetContext(), "wulkanowyTest-database");
|
|
||||||
Database database = devOpenHelper.getWritableDb();
|
Database database = devOpenHelper.getWritableDb();
|
||||||
|
|
||||||
daoSession = new DaoMaster(database).newSession();
|
daoSession = new DaoMaster(database).newSession();
|
||||||
|
|
||||||
|
DaoMaster.dropAllTables(database, true);
|
||||||
|
DaoMaster.createAllTables(database, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Before
|
@Before
|
@ -1,4 +1,4 @@
|
|||||||
package io.github.wulkanowy.services.synchronization;
|
package io.github.wulkanowy.services.sync;
|
||||||
|
|
||||||
import android.support.test.InstrumentationRegistry;
|
import android.support.test.InstrumentationRegistry;
|
||||||
import android.support.test.runner.AndroidJUnit4;
|
import android.support.test.runner.AndroidJUnit4;
|
||||||
@ -18,24 +18,24 @@ import java.util.List;
|
|||||||
import io.github.wulkanowy.api.Vulcan;
|
import io.github.wulkanowy.api.Vulcan;
|
||||||
import io.github.wulkanowy.api.grades.Grade;
|
import io.github.wulkanowy.api.grades.Grade;
|
||||||
import io.github.wulkanowy.api.grades.GradesList;
|
import io.github.wulkanowy.api.grades.GradesList;
|
||||||
import io.github.wulkanowy.dao.entities.Account;
|
import io.github.wulkanowy.db.dao.entities.Account;
|
||||||
import io.github.wulkanowy.dao.entities.DaoMaster;
|
import io.github.wulkanowy.db.dao.entities.DaoMaster;
|
||||||
import io.github.wulkanowy.dao.entities.DaoSession;
|
import io.github.wulkanowy.db.dao.entities.DaoSession;
|
||||||
import io.github.wulkanowy.dao.entities.Subject;
|
import io.github.wulkanowy.db.dao.entities.Subject;
|
||||||
import io.github.wulkanowy.services.LoginSession;
|
|
||||||
import io.github.wulkanowy.services.synchronisation.GradesSynchronisation;
|
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4.class)
|
@RunWith(AndroidJUnit4.class)
|
||||||
public class GradeSynchronizationTest {
|
public class GradeSyncTest {
|
||||||
|
|
||||||
private static DaoSession daoSession;
|
private static DaoSession daoSession;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeClass
|
||||||
public static void setUpClass() {
|
public static void setUpClass() {
|
||||||
DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(InstrumentationRegistry.getTargetContext(), "wulkanowyTest-database");
|
DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(InstrumentationRegistry.getTargetContext(), "wulkanowyTest-db");
|
||||||
Database database = devOpenHelper.getWritableDb();
|
Database database = devOpenHelper.getWritableDb();
|
||||||
|
|
||||||
daoSession = new DaoMaster(database).newSession();
|
daoSession = new DaoMaster(database).newSession();
|
||||||
|
|
||||||
|
DaoMaster.dropAllTables(database, true);
|
||||||
|
DaoMaster.createAllTables(database, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
@ -65,10 +65,10 @@ public class GradeSynchronizationTest {
|
|||||||
Mockito.doReturn(daoSession).when(loginSession).getDaoSession();
|
Mockito.doReturn(daoSession).when(loginSession).getDaoSession();
|
||||||
Mockito.doReturn(userId).when(loginSession).getUserId();
|
Mockito.doReturn(userId).when(loginSession).getUserId();
|
||||||
|
|
||||||
GradesSynchronisation gradesSynchronisation = new GradesSynchronisation();
|
GradesSync gradesSync = new GradesSync();
|
||||||
gradesSynchronisation.sync(loginSession);
|
gradesSync.sync(loginSession);
|
||||||
|
|
||||||
io.github.wulkanowy.dao.entities.Grade grade = daoSession.getGradeDao().load(1L);
|
io.github.wulkanowy.db.dao.entities.Grade grade = daoSession.getGradeDao().load(1L);
|
||||||
|
|
||||||
Assert.assertNotNull(grade);
|
Assert.assertNotNull(grade);
|
||||||
Assert.assertEquals(userId, grade.getUserId());
|
Assert.assertEquals(userId, grade.getUserId());
|
@ -1,4 +1,4 @@
|
|||||||
package io.github.wulkanowy.services.synchronization;
|
package io.github.wulkanowy.services.sync;
|
||||||
|
|
||||||
import android.support.test.InstrumentationRegistry;
|
import android.support.test.InstrumentationRegistry;
|
||||||
import android.support.test.runner.AndroidJUnit4;
|
import android.support.test.runner.AndroidJUnit4;
|
||||||
@ -17,23 +17,23 @@ import java.util.List;
|
|||||||
|
|
||||||
import io.github.wulkanowy.api.Vulcan;
|
import io.github.wulkanowy.api.Vulcan;
|
||||||
import io.github.wulkanowy.api.grades.SubjectsList;
|
import io.github.wulkanowy.api.grades.SubjectsList;
|
||||||
import io.github.wulkanowy.dao.entities.DaoMaster;
|
import io.github.wulkanowy.db.dao.entities.DaoMaster;
|
||||||
import io.github.wulkanowy.dao.entities.DaoSession;
|
import io.github.wulkanowy.db.dao.entities.DaoSession;
|
||||||
import io.github.wulkanowy.dao.entities.Subject;
|
import io.github.wulkanowy.db.dao.entities.Subject;
|
||||||
import io.github.wulkanowy.services.LoginSession;
|
|
||||||
import io.github.wulkanowy.services.synchronisation.SubjectsSynchronisation;
|
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4.class)
|
@RunWith(AndroidJUnit4.class)
|
||||||
public class SubjectSynchronizationTest {
|
public class SubjectSyncTest {
|
||||||
|
|
||||||
private static DaoSession daoSession;
|
private static DaoSession daoSession;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeClass
|
||||||
public static void setUpClass() {
|
public static void setUpClass() {
|
||||||
DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(InstrumentationRegistry.getTargetContext(), "wulkanowyTest-database");
|
DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(InstrumentationRegistry.getTargetContext(), "wulkanowyTest-db");
|
||||||
Database database = devOpenHelper.getWritableDb();
|
Database database = devOpenHelper.getWritableDb();
|
||||||
|
|
||||||
daoSession = new DaoMaster(database).newSession();
|
daoSession = new DaoMaster(database).newSession();
|
||||||
|
|
||||||
|
DaoMaster.dropAllTables(database, true);
|
||||||
|
DaoMaster.createAllTables(database, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
@ -61,8 +61,8 @@ public class SubjectSynchronizationTest {
|
|||||||
Mockito.doReturn(2L).when(loginSession).getUserId();
|
Mockito.doReturn(2L).when(loginSession).getUserId();
|
||||||
Mockito.doReturn(daoSession).when(loginSession).getDaoSession();
|
Mockito.doReturn(daoSession).when(loginSession).getDaoSession();
|
||||||
|
|
||||||
SubjectsSynchronisation subjectsSynchronisation = new SubjectsSynchronisation();
|
SubjectsSync subjectsSync = new SubjectsSync();
|
||||||
subjectsSynchronisation.sync(loginSession);
|
subjectsSync.sync(loginSession);
|
||||||
|
|
||||||
Subject subject = daoSession.getSubjectDao().load(1L);
|
Subject subject = daoSession.getSubjectDao().load(1L);
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package io.github.wulkanowy.services.synchronization;
|
package io.github.wulkanowy.services.sync;
|
||||||
|
|
||||||
import android.support.test.InstrumentationRegistry;
|
import android.support.test.InstrumentationRegistry;
|
||||||
import android.support.test.runner.AndroidJUnit4;
|
import android.support.test.runner.AndroidJUnit4;
|
||||||
@ -6,7 +6,6 @@ import android.support.test.runner.AndroidJUnit4;
|
|||||||
import org.greenrobot.greendao.database.Database;
|
import org.greenrobot.greendao.database.Database;
|
||||||
import org.junit.AfterClass;
|
import org.junit.AfterClass;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Before;
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
@ -19,27 +18,27 @@ import io.github.wulkanowy.api.timetable.Day;
|
|||||||
import io.github.wulkanowy.api.timetable.Lesson;
|
import io.github.wulkanowy.api.timetable.Lesson;
|
||||||
import io.github.wulkanowy.api.timetable.Timetable;
|
import io.github.wulkanowy.api.timetable.Timetable;
|
||||||
import io.github.wulkanowy.api.timetable.Week;
|
import io.github.wulkanowy.api.timetable.Week;
|
||||||
import io.github.wulkanowy.dao.entities.Account;
|
import io.github.wulkanowy.db.dao.entities.Account;
|
||||||
import io.github.wulkanowy.dao.entities.DaoMaster;
|
import io.github.wulkanowy.db.dao.entities.DaoMaster;
|
||||||
import io.github.wulkanowy.dao.entities.DaoSession;
|
import io.github.wulkanowy.db.dao.entities.DaoSession;
|
||||||
import io.github.wulkanowy.services.LoginSession;
|
|
||||||
import io.github.wulkanowy.services.synchronisation.TimetableSynchronization;
|
|
||||||
|
|
||||||
import static org.mockito.ArgumentMatchers.anyString;
|
import static org.mockito.ArgumentMatchers.anyString;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4.class)
|
@RunWith(AndroidJUnit4.class)
|
||||||
public class TimetableSynchronizationTest {
|
public class TimetableSyncTest {
|
||||||
|
|
||||||
private static DaoSession daoSession;
|
private static DaoSession daoSession;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeClass
|
||||||
public static void setUpClass() {
|
public static void setUpClass() {
|
||||||
DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(InstrumentationRegistry.getTargetContext(), "wulkanowyTest-database");
|
DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(InstrumentationRegistry.getTargetContext(), "wulkanowyTest-db");
|
||||||
Database database = devOpenHelper.getWritableDb();
|
Database database = devOpenHelper.getWritableDb();
|
||||||
|
|
||||||
daoSession = new DaoMaster(database).newSession();
|
daoSession = new DaoMaster(database).newSession();
|
||||||
|
|
||||||
|
DaoMaster.dropAllTables(database, true);
|
||||||
|
DaoMaster.createAllTables(database, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -70,11 +69,11 @@ public class TimetableSynchronizationTest {
|
|||||||
doReturn(daoSession).when(loginSession).getDaoSession();
|
doReturn(daoSession).when(loginSession).getDaoSession();
|
||||||
doReturn(userId).when(loginSession).getUserId();
|
doReturn(userId).when(loginSession).getUserId();
|
||||||
|
|
||||||
TimetableSynchronization timetableSynchronization = new TimetableSynchronization();
|
TimetableSync timetableSync = new TimetableSync();
|
||||||
timetableSynchronization.sync(loginSession, null);
|
timetableSync.sync(loginSession, null);
|
||||||
|
|
||||||
List<io.github.wulkanowy.dao.entities.Day> dayEntityList = daoSession.getDayDao().loadAll();
|
List<io.github.wulkanowy.db.dao.entities.Day> dayEntityList = daoSession.getDayDao().loadAll();
|
||||||
List<io.github.wulkanowy.dao.entities.Lesson> lessonEntityList = dayEntityList.get(0).getLessons();
|
List<io.github.wulkanowy.db.dao.entities.Lesson> lessonEntityList = dayEntityList.get(0).getLessons();
|
||||||
|
|
||||||
Assert.assertNotNull(dayEntityList.get(0));
|
Assert.assertNotNull(dayEntityList.get(0));
|
||||||
Assert.assertEquals(userId, dayEntityList.get(0).getUserId());
|
Assert.assertEquals(userId, dayEntityList.get(0).getUserId());
|
||||||
@ -85,19 +84,12 @@ public class TimetableSynchronizationTest {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Before
|
|
||||||
public void setUp() {
|
|
||||||
daoSession.getAccountDao().deleteAll();
|
|
||||||
daoSession.getDayDao().deleteAll();
|
|
||||||
daoSession.getLessonDao().deleteAll();
|
|
||||||
daoSession.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
@AfterClass
|
@AfterClass
|
||||||
public static void cleanUp() {
|
public static void cleanUp() {
|
||||||
daoSession.getAccountDao().deleteAll();
|
daoSession.getAccountDao().deleteAll();
|
||||||
daoSession.getDayDao().deleteAll();
|
daoSession.getDayDao().deleteAll();
|
||||||
daoSession.getLessonDao().deleteAll();
|
daoSession.getLessonDao().deleteAll();
|
||||||
|
daoSession.getWeekDao().deleteAll();
|
||||||
daoSession.clear();
|
daoSession.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
package io.github.wulkanowy.services.sync;
|
||||||
|
|
||||||
|
import android.support.test.runner.AndroidJUnit4;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
@RunWith(AndroidJUnit4.class)
|
||||||
|
public class VulcanSyncTest {
|
||||||
|
|
||||||
|
@Test(expected = IOException.class)
|
||||||
|
public void syncNoLoginSessionSubjectTest() throws IOException {
|
||||||
|
VulcanSync vulcanSync = new VulcanSync(new LoginSession());
|
||||||
|
vulcanSync.syncSubjectsAndGrades();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = IOException.class)
|
||||||
|
public void syncNoLoginSessionGradeTest() throws IOException {
|
||||||
|
VulcanSync vulcanSync = new VulcanSync(new LoginSession());
|
||||||
|
vulcanSync.syncGrades();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = IOException.class)
|
||||||
|
public void syncNoLoginSessionTimetableTest() throws IOException {
|
||||||
|
VulcanSync vulcanSync = new VulcanSync(new LoginSession());
|
||||||
|
vulcanSync.syncTimetable();
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package io.github.wulkanowy.security;
|
package io.github.wulkanowy.utils.security;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.support.test.InstrumentationRegistry;
|
import android.support.test.InstrumentationRegistry;
|
@ -1,4 +1,4 @@
|
|||||||
package io.github.wulkanowy.security;
|
package io.github.wulkanowy.utils.security;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
@ -14,7 +14,7 @@
|
|||||||
<uses-sdk tools:overrideLibrary="com.thoughtbot.expandablerecyclerview" />
|
<uses-sdk tools:overrideLibrary="com.thoughtbot.expandablerecyclerview" />
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:name=".ui.WulkanowyApp"
|
android:name=".WulkanowyApp"
|
||||||
android:allowBackup="false"
|
android:allowBackup="false"
|
||||||
android:icon="@mipmap/ic_launcher"
|
android:icon="@mipmap/ic_launcher"
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
|
@ -1,17 +1,15 @@
|
|||||||
package io.github.wulkanowy.ui;
|
package io.github.wulkanowy;
|
||||||
|
|
||||||
import android.app.Application;
|
import android.app.Application;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
|
|
||||||
import org.greenrobot.greendao.database.Database;
|
|
||||||
import org.greenrobot.greendao.query.QueryBuilder;
|
import org.greenrobot.greendao.query.QueryBuilder;
|
||||||
|
|
||||||
import eu.davidea.flexibleadapter.FlexibleAdapter;
|
import eu.davidea.flexibleadapter.FlexibleAdapter;
|
||||||
import eu.davidea.flexibleadapter.utils.Log;
|
import eu.davidea.flexibleadapter.utils.Log;
|
||||||
import io.github.wulkanowy.dao.entities.DaoMaster;
|
import io.github.wulkanowy.db.dao.entities.DaoMaster;
|
||||||
import io.github.wulkanowy.dao.entities.DaoSession;
|
import io.github.wulkanowy.db.dao.entities.DaoSession;
|
||||||
|
|
||||||
|
|
||||||
public class WulkanowyApp extends Application {
|
public class WulkanowyApp extends Application {
|
||||||
|
|
||||||
@ -22,12 +20,14 @@ public class WulkanowyApp extends Application {
|
|||||||
@Override
|
@Override
|
||||||
public void onCreate() {
|
public void onCreate() {
|
||||||
super.onCreate();
|
super.onCreate();
|
||||||
enableDebugLog();
|
|
||||||
|
|
||||||
DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(this, "wulkanowy-database");
|
if (BuildConfig.DEBUG) {
|
||||||
Database database = devOpenHelper.getWritableDb();
|
enableDebugLog();
|
||||||
|
}
|
||||||
|
|
||||||
daoSession = new DaoMaster(database).newSession();
|
DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(this, "wulkanowy-db");
|
||||||
|
|
||||||
|
daoSession = new DaoMaster(devOpenHelper.getWritableDb()).newSession();
|
||||||
|
|
||||||
int schemaVersion = getSharedPreferences("LoginData", Context.MODE_PRIVATE).getInt("schemaVersion", 0);
|
int schemaVersion = getSharedPreferences("LoginData", Context.MODE_PRIVATE).getInt("schemaVersion", 0);
|
||||||
|
|
@ -1,12 +1,12 @@
|
|||||||
package io.github.wulkanowy.dao;
|
package io.github.wulkanowy.db.dao;
|
||||||
|
|
||||||
import org.greenrobot.greendao.query.Query;
|
import org.greenrobot.greendao.query.Query;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import io.github.wulkanowy.dao.entities.DaoSession;
|
import io.github.wulkanowy.db.dao.entities.DaoSession;
|
||||||
import io.github.wulkanowy.dao.entities.Grade;
|
import io.github.wulkanowy.db.dao.entities.Grade;
|
||||||
import io.github.wulkanowy.dao.entities.GradeDao;
|
import io.github.wulkanowy.db.dao.entities.GradeDao;
|
||||||
|
|
||||||
public class DatabaseAccess {
|
public class DatabaseAccess {
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package io.github.wulkanowy.dao.entities;
|
package io.github.wulkanowy.db.dao.entities;
|
||||||
|
|
||||||
import org.greenrobot.greendao.DaoException;
|
import org.greenrobot.greendao.DaoException;
|
||||||
import org.greenrobot.greendao.annotation.Entity;
|
import org.greenrobot.greendao.annotation.Entity;
|
@ -1,4 +1,4 @@
|
|||||||
package io.github.wulkanowy.dao.entities;
|
package io.github.wulkanowy.db.dao.entities;
|
||||||
|
|
||||||
import org.greenrobot.greendao.DaoException;
|
import org.greenrobot.greendao.DaoException;
|
||||||
import org.greenrobot.greendao.annotation.Entity;
|
import org.greenrobot.greendao.annotation.Entity;
|
@ -1,4 +1,4 @@
|
|||||||
package io.github.wulkanowy.dao.entities;
|
package io.github.wulkanowy.db.dao.entities;
|
||||||
|
|
||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
import android.os.Parcelable;
|
import android.os.Parcelable;
|
@ -1,4 +1,4 @@
|
|||||||
package io.github.wulkanowy.dao.entities;
|
package io.github.wulkanowy.db.dao.entities;
|
||||||
|
|
||||||
import org.greenrobot.greendao.DaoException;
|
import org.greenrobot.greendao.DaoException;
|
||||||
import org.greenrobot.greendao.annotation.Entity;
|
import org.greenrobot.greendao.annotation.Entity;
|
@ -1,4 +1,4 @@
|
|||||||
package io.github.wulkanowy.dao.entities;
|
package io.github.wulkanowy.db.dao.entities;
|
||||||
|
|
||||||
import org.greenrobot.greendao.DaoException;
|
import org.greenrobot.greendao.DaoException;
|
||||||
import org.greenrobot.greendao.annotation.Entity;
|
import org.greenrobot.greendao.annotation.Entity;
|
@ -1,4 +1,4 @@
|
|||||||
package io.github.wulkanowy.dao.entities;
|
package io.github.wulkanowy.db.dao.entities;
|
||||||
|
|
||||||
import org.greenrobot.greendao.DaoException;
|
import org.greenrobot.greendao.DaoException;
|
||||||
import org.greenrobot.greendao.annotation.Entity;
|
import org.greenrobot.greendao.annotation.Entity;
|
@ -0,0 +1,27 @@
|
|||||||
|
package io.github.wulkanowy.di.modules;
|
||||||
|
|
||||||
|
import android.app.Application;
|
||||||
|
import android.content.Context;
|
||||||
|
|
||||||
|
import dagger.Module;
|
||||||
|
import dagger.Provides;
|
||||||
|
|
||||||
|
@Module
|
||||||
|
public class ApplicationModule {
|
||||||
|
|
||||||
|
protected final Application application;
|
||||||
|
|
||||||
|
public ApplicationModule(Application application) {
|
||||||
|
this.application = application;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
Application provideApplication() {
|
||||||
|
return application;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
Context provideAppContext() {
|
||||||
|
return application;
|
||||||
|
}
|
||||||
|
}
|
@ -15,15 +15,15 @@ import java.util.List;
|
|||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import io.github.wulkanowy.R;
|
import io.github.wulkanowy.R;
|
||||||
import io.github.wulkanowy.dao.DatabaseAccess;
|
import io.github.wulkanowy.WulkanowyApp;
|
||||||
import io.github.wulkanowy.dao.entities.DaoSession;
|
import io.github.wulkanowy.db.dao.DatabaseAccess;
|
||||||
import io.github.wulkanowy.dao.entities.Grade;
|
import io.github.wulkanowy.db.dao.entities.DaoSession;
|
||||||
import io.github.wulkanowy.services.VulcanSynchronization;
|
import io.github.wulkanowy.db.dao.entities.Grade;
|
||||||
import io.github.wulkanowy.services.notifications.NotificationBuilder;
|
import io.github.wulkanowy.services.notifications.NotificationBuilder;
|
||||||
import io.github.wulkanowy.ui.WulkanowyApp;
|
import io.github.wulkanowy.services.sync.VulcanSync;
|
||||||
import io.github.wulkanowy.ui.main.DashboardActivity;
|
import io.github.wulkanowy.ui.main.DashboardActivity;
|
||||||
|
|
||||||
public class FullSyncJob extends VulcanJobHelper<FullSyncJob> {
|
public class FullSyncJob extends VulcanJobHelper {
|
||||||
|
|
||||||
private static final String UNIQUE_TAG = "FullSync";
|
private static final String UNIQUE_TAG = "FullSync";
|
||||||
|
|
||||||
@ -51,7 +51,7 @@ public class FullSyncJob extends VulcanJobHelper<FullSyncJob> {
|
|||||||
public void workToBePerformed() throws Exception {
|
public void workToBePerformed() throws Exception {
|
||||||
DaoSession daoSession = ((WulkanowyApp) getApplication()).getDaoSession();
|
DaoSession daoSession = ((WulkanowyApp) getApplication()).getDaoSession();
|
||||||
|
|
||||||
VulcanSynchronization synchronization = new VulcanSynchronization()
|
VulcanSync synchronization = new VulcanSync()
|
||||||
.loginCurrentUser(getApplicationContext(), daoSession);
|
.loginCurrentUser(getApplicationContext(), daoSession);
|
||||||
synchronization.syncAll();
|
synchronization.syncAll();
|
||||||
List<Grade> newGradeList = new DatabaseAccess().getNewGrades(daoSession);
|
List<Grade> newGradeList = new DatabaseAccess().getNewGrades(daoSession);
|
||||||
|
@ -8,16 +8,14 @@ import com.firebase.jobdispatcher.FirebaseJobDispatcher;
|
|||||||
import com.firebase.jobdispatcher.GooglePlayDriver;
|
import com.firebase.jobdispatcher.GooglePlayDriver;
|
||||||
import com.firebase.jobdispatcher.Job;
|
import com.firebase.jobdispatcher.Job;
|
||||||
|
|
||||||
public abstract class VulcanJobHelper<T extends VulcanJobHelper> {
|
public abstract class VulcanJobHelper {
|
||||||
|
|
||||||
public static final String DEBUG_TAG = "SynchronizationService";
|
public static final String DEBUG_TAG = "SynchronizationService";
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
public final void scheduledJob(Context context) {
|
||||||
public final T scheduledJob(Context context) {
|
|
||||||
FirebaseJobDispatcher dispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(context));
|
FirebaseJobDispatcher dispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(context));
|
||||||
dispatcher.mustSchedule(createJob(dispatcher));
|
dispatcher.mustSchedule(createJob(dispatcher));
|
||||||
Log.i(DEBUG_TAG, "Wulkanowy Job is initiation: " + this.toString());
|
Log.i(DEBUG_TAG, "Wulkanowy Job is initiation: " + this.toString());
|
||||||
return (T) this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract Job createJob(FirebaseJobDispatcher dispatcher);
|
protected abstract Job createJob(FirebaseJobDispatcher dispatcher);
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package io.github.wulkanowy.services.synchronisation;
|
package io.github.wulkanowy.services.sync;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
@ -10,13 +10,12 @@ import io.github.wulkanowy.api.login.AccountPermissionException;
|
|||||||
import io.github.wulkanowy.api.login.BadCredentialsException;
|
import io.github.wulkanowy.api.login.BadCredentialsException;
|
||||||
import io.github.wulkanowy.api.login.LoginErrorException;
|
import io.github.wulkanowy.api.login.LoginErrorException;
|
||||||
import io.github.wulkanowy.api.login.VulcanOfflineException;
|
import io.github.wulkanowy.api.login.VulcanOfflineException;
|
||||||
import io.github.wulkanowy.dao.entities.Account;
|
import io.github.wulkanowy.db.dao.entities.Account;
|
||||||
import io.github.wulkanowy.dao.entities.AccountDao;
|
import io.github.wulkanowy.db.dao.entities.AccountDao;
|
||||||
import io.github.wulkanowy.dao.entities.DaoSession;
|
import io.github.wulkanowy.db.dao.entities.DaoSession;
|
||||||
import io.github.wulkanowy.security.CryptoException;
|
|
||||||
import io.github.wulkanowy.security.Safety;
|
|
||||||
import io.github.wulkanowy.services.LoginSession;
|
|
||||||
import io.github.wulkanowy.services.jobs.VulcanJobHelper;
|
import io.github.wulkanowy.services.jobs.VulcanJobHelper;
|
||||||
|
import io.github.wulkanowy.utils.security.CryptoException;
|
||||||
|
import io.github.wulkanowy.utils.security.Safety;
|
||||||
|
|
||||||
public class CurrentAccountLogin {
|
public class CurrentAccountLogin {
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package io.github.wulkanowy.services.synchronisation;
|
package io.github.wulkanowy.services.sync;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
@ -10,12 +10,11 @@ import io.github.wulkanowy.api.login.AccountPermissionException;
|
|||||||
import io.github.wulkanowy.api.login.BadCredentialsException;
|
import io.github.wulkanowy.api.login.BadCredentialsException;
|
||||||
import io.github.wulkanowy.api.login.NotLoggedInErrorException;
|
import io.github.wulkanowy.api.login.NotLoggedInErrorException;
|
||||||
import io.github.wulkanowy.api.login.VulcanOfflineException;
|
import io.github.wulkanowy.api.login.VulcanOfflineException;
|
||||||
import io.github.wulkanowy.dao.entities.Account;
|
import io.github.wulkanowy.db.dao.entities.Account;
|
||||||
import io.github.wulkanowy.dao.entities.AccountDao;
|
import io.github.wulkanowy.db.dao.entities.AccountDao;
|
||||||
import io.github.wulkanowy.dao.entities.DaoSession;
|
import io.github.wulkanowy.db.dao.entities.DaoSession;
|
||||||
import io.github.wulkanowy.security.CryptoException;
|
import io.github.wulkanowy.utils.security.CryptoException;
|
||||||
import io.github.wulkanowy.security.Safety;
|
import io.github.wulkanowy.utils.security.Safety;
|
||||||
import io.github.wulkanowy.services.LoginSession;
|
|
||||||
|
|
||||||
public class FirstAccountLogin {
|
public class FirstAccountLogin {
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package io.github.wulkanowy.services.synchronisation;
|
package io.github.wulkanowy.services.sync;
|
||||||
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
@ -11,18 +11,17 @@ import java.util.List;
|
|||||||
|
|
||||||
import io.github.wulkanowy.api.grades.GradesList;
|
import io.github.wulkanowy.api.grades.GradesList;
|
||||||
import io.github.wulkanowy.api.login.NotLoggedInErrorException;
|
import io.github.wulkanowy.api.login.NotLoggedInErrorException;
|
||||||
import io.github.wulkanowy.dao.EntitiesCompare;
|
import io.github.wulkanowy.db.dao.entities.Account;
|
||||||
import io.github.wulkanowy.dao.entities.Account;
|
import io.github.wulkanowy.db.dao.entities.AccountDao;
|
||||||
import io.github.wulkanowy.dao.entities.AccountDao;
|
import io.github.wulkanowy.db.dao.entities.Grade;
|
||||||
import io.github.wulkanowy.dao.entities.Grade;
|
import io.github.wulkanowy.db.dao.entities.GradeDao;
|
||||||
import io.github.wulkanowy.dao.entities.GradeDao;
|
import io.github.wulkanowy.db.dao.entities.Subject;
|
||||||
import io.github.wulkanowy.dao.entities.Subject;
|
import io.github.wulkanowy.db.dao.entities.SubjectDao;
|
||||||
import io.github.wulkanowy.dao.entities.SubjectDao;
|
|
||||||
import io.github.wulkanowy.services.LoginSession;
|
|
||||||
import io.github.wulkanowy.services.jobs.VulcanJobHelper;
|
import io.github.wulkanowy.services.jobs.VulcanJobHelper;
|
||||||
import io.github.wulkanowy.utilities.ConversionVulcanObject;
|
import io.github.wulkanowy.utils.DataObjectConverter;
|
||||||
|
import io.github.wulkanowy.utils.EntitiesCompare;
|
||||||
|
|
||||||
public class GradesSynchronisation {
|
public class GradesSync {
|
||||||
|
|
||||||
public void sync(LoginSession loginSession) throws IOException,
|
public void sync(LoginSession loginSession) throws IOException,
|
||||||
ParseException, NotLoggedInErrorException {
|
ParseException, NotLoggedInErrorException {
|
||||||
@ -39,7 +38,7 @@ public class GradesSynchronisation {
|
|||||||
account.resetSubjectList();
|
account.resetSubjectList();
|
||||||
|
|
||||||
List<Grade> gradesFromDb = account.getGradeList();
|
List<Grade> gradesFromDb = account.getGradeList();
|
||||||
List<Grade> gradeEntitiesList = ConversionVulcanObject.gradesToGradeEntities(gradesList.getAll());
|
List<Grade> gradeEntitiesList = DataObjectConverter.gradesToGradeEntities(gradesList.getAll());
|
||||||
List<Grade> updatedList = EntitiesCompare.compareGradeList(gradeEntitiesList, gradesFromDb);
|
List<Grade> updatedList = EntitiesCompare.compareGradeList(gradeEntitiesList, gradesFromDb);
|
||||||
List<Grade> lastList = new ArrayList<>();
|
List<Grade> lastList = new ArrayList<>();
|
||||||
|
|
@ -1,11 +1,12 @@
|
|||||||
package io.github.wulkanowy.services;
|
package io.github.wulkanowy.services.sync;
|
||||||
|
|
||||||
|
|
||||||
import org.apache.commons.lang3.builder.EqualsBuilder;
|
import org.apache.commons.lang3.builder.EqualsBuilder;
|
||||||
import org.apache.commons.lang3.builder.HashCodeBuilder;
|
import org.apache.commons.lang3.builder.HashCodeBuilder;
|
||||||
|
|
||||||
import io.github.wulkanowy.api.Vulcan;
|
import io.github.wulkanowy.api.Vulcan;
|
||||||
import io.github.wulkanowy.dao.entities.DaoSession;
|
import io.github.wulkanowy.db.dao.entities.DaoSession;
|
||||||
|
|
||||||
|
|
||||||
public class LoginSession {
|
public class LoginSession {
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package io.github.wulkanowy.services.synchronisation;
|
package io.github.wulkanowy.services.sync;
|
||||||
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
@ -8,13 +8,12 @@ import java.util.List;
|
|||||||
|
|
||||||
import io.github.wulkanowy.api.grades.SubjectsList;
|
import io.github.wulkanowy.api.grades.SubjectsList;
|
||||||
import io.github.wulkanowy.api.login.NotLoggedInErrorException;
|
import io.github.wulkanowy.api.login.NotLoggedInErrorException;
|
||||||
import io.github.wulkanowy.dao.entities.Subject;
|
import io.github.wulkanowy.db.dao.entities.Subject;
|
||||||
import io.github.wulkanowy.dao.entities.SubjectDao;
|
import io.github.wulkanowy.db.dao.entities.SubjectDao;
|
||||||
import io.github.wulkanowy.services.LoginSession;
|
|
||||||
import io.github.wulkanowy.services.jobs.VulcanJobHelper;
|
import io.github.wulkanowy.services.jobs.VulcanJobHelper;
|
||||||
import io.github.wulkanowy.utilities.ConversionVulcanObject;
|
import io.github.wulkanowy.utils.DataObjectConverter;
|
||||||
|
|
||||||
public class SubjectsSynchronisation {
|
public class SubjectsSync {
|
||||||
|
|
||||||
public void sync(LoginSession loginSession) throws IOException,
|
public void sync(LoginSession loginSession) throws IOException,
|
||||||
NotLoggedInErrorException {
|
NotLoggedInErrorException {
|
||||||
@ -22,7 +21,7 @@ public class SubjectsSynchronisation {
|
|||||||
SubjectsList subjectsList = loginSession.getVulcan().getSubjectsList();
|
SubjectsList subjectsList = loginSession.getVulcan().getSubjectsList();
|
||||||
SubjectDao subjectDao = loginSession.getDaoSession().getSubjectDao();
|
SubjectDao subjectDao = loginSession.getDaoSession().getSubjectDao();
|
||||||
|
|
||||||
List<Subject> subjectEntitiesList = ConversionVulcanObject.subjectsToSubjectEntities(subjectsList.getAll());
|
List<Subject> subjectEntitiesList = DataObjectConverter.subjectsToSubjectEntities(subjectsList.getAll());
|
||||||
List<Subject> preparedList = new ArrayList<>();
|
List<Subject> preparedList = new ArrayList<>();
|
||||||
|
|
||||||
for (Subject subject : subjectEntitiesList) {
|
for (Subject subject : subjectEntitiesList) {
|
@ -1,4 +1,4 @@
|
|||||||
package io.github.wulkanowy.services.synchronisation;
|
package io.github.wulkanowy.services.sync;
|
||||||
|
|
||||||
|
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
@ -15,16 +15,15 @@ import java.util.List;
|
|||||||
import io.github.wulkanowy.api.login.NotLoggedInErrorException;
|
import io.github.wulkanowy.api.login.NotLoggedInErrorException;
|
||||||
import io.github.wulkanowy.api.timetable.Day;
|
import io.github.wulkanowy.api.timetable.Day;
|
||||||
import io.github.wulkanowy.api.timetable.Week;
|
import io.github.wulkanowy.api.timetable.Week;
|
||||||
import io.github.wulkanowy.dao.entities.DayDao;
|
import io.github.wulkanowy.db.dao.entities.DayDao;
|
||||||
import io.github.wulkanowy.dao.entities.Lesson;
|
import io.github.wulkanowy.db.dao.entities.Lesson;
|
||||||
import io.github.wulkanowy.dao.entities.LessonDao;
|
import io.github.wulkanowy.db.dao.entities.LessonDao;
|
||||||
import io.github.wulkanowy.dao.entities.WeekDao;
|
import io.github.wulkanowy.db.dao.entities.WeekDao;
|
||||||
import io.github.wulkanowy.services.LoginSession;
|
|
||||||
import io.github.wulkanowy.services.jobs.VulcanJobHelper;
|
import io.github.wulkanowy.services.jobs.VulcanJobHelper;
|
||||||
import io.github.wulkanowy.utilities.ConversionVulcanObject;
|
import io.github.wulkanowy.utils.DataObjectConverter;
|
||||||
import io.github.wulkanowy.utilities.TimeUtilities;
|
import io.github.wulkanowy.utils.TimeUtils;
|
||||||
|
|
||||||
public class TimetableSynchronization {
|
public class TimetableSync {
|
||||||
|
|
||||||
public void sync(@NonNull LoginSession loginSession, @Nullable String dateOfMonday) throws NotLoggedInErrorException,
|
public void sync(@NonNull LoginSession loginSession, @Nullable String dateOfMonday) throws NotLoggedInErrorException,
|
||||||
IOException, ParseException {
|
IOException, ParseException {
|
||||||
@ -36,17 +35,17 @@ public class TimetableSynchronization {
|
|||||||
|
|
||||||
Week week = dateOfMonday == null ? loginSession.getVulcan().getTimetable().getWeekTable()
|
Week week = dateOfMonday == null ? loginSession.getVulcan().getTimetable().getWeekTable()
|
||||||
: loginSession.getVulcan().getTimetable()
|
: loginSession.getVulcan().getTimetable()
|
||||||
.getWeekTable(String.valueOf(TimeUtilities.getNetTicks(dateOfMonday, "yyyy-MM-dd")));
|
.getWeekTable(String.valueOf(TimeUtils.getNetTicks(dateOfMonday, "yyyy-MM-dd")));
|
||||||
|
|
||||||
Query<io.github.wulkanowy.dao.entities.Week> weekQuery = weekDao.queryBuilder()
|
Query<io.github.wulkanowy.db.dao.entities.Week> weekQuery = weekDao.queryBuilder()
|
||||||
.where(WeekDao.Properties.UserId.eq(loginSession.getUserId()), WeekDao.Properties.StartDayDate.eq(week.getStartDayDate())).build();
|
.where(WeekDao.Properties.UserId.eq(loginSession.getUserId()), WeekDao.Properties.StartDayDate.eq(week.getStartDayDate())).build();
|
||||||
|
|
||||||
io.github.wulkanowy.dao.entities.Week week1 = weekQuery.unique();
|
io.github.wulkanowy.db.dao.entities.Week week1 = weekQuery.unique();
|
||||||
|
|
||||||
if (week1 != null) {
|
if (week1 != null) {
|
||||||
weekId = week1.getId();
|
weekId = week1.getId();
|
||||||
} else {
|
} else {
|
||||||
weekId = weekDao.insert(ConversionVulcanObject.weekToWeekEntitie(week).setUserId(loginSession.getUserId()));
|
weekId = weekDao.insert(DataObjectConverter.weekToWeekEntitie(week).setUserId(loginSession.getUserId()));
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Day> dayList = week.getDays();
|
List<Day> dayList = week.getDays();
|
||||||
@ -56,29 +55,34 @@ public class TimetableSynchronization {
|
|||||||
Log.d(VulcanJobHelper.DEBUG_TAG, "Synchronization days (amount = " + dayList.size() + ")");
|
Log.d(VulcanJobHelper.DEBUG_TAG, "Synchronization days (amount = " + dayList.size() + ")");
|
||||||
|
|
||||||
List<Lesson> lessonList = new ArrayList<>();
|
List<Lesson> lessonList = new ArrayList<>();
|
||||||
lessonList.addAll(getPreparedLessonsList(dayList, dayDao, lessonDao));
|
lessonList.addAll(getPreparedLessonsList(dayList, dayDao, lessonDao, loginSession.getUserId(), weekId));
|
||||||
|
|
||||||
lessonDao.saveInTx(lessonList);
|
lessonDao.saveInTx(lessonList);
|
||||||
|
|
||||||
Log.d(VulcanJobHelper.DEBUG_TAG, "Synchronization lessons (amount = " + lessonList.size() + ")");
|
Log.d(VulcanJobHelper.DEBUG_TAG, "Synchronization lessons (amount = " + lessonList.size() + ")");
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<Lesson> getPreparedLessonsList(List<Day> dayList, DayDao dayDao, LessonDao lessonDao) {
|
private List<Lesson> getPreparedLessonsList(List<Day> dayList, DayDao dayDao, LessonDao lessonDao, long userId, long weekId) {
|
||||||
List<Lesson> allLessonsList = new ArrayList<>();
|
List<Lesson> allLessonsList = new ArrayList<>();
|
||||||
|
|
||||||
for (Day day : dayList) {
|
for (Day day : dayList) {
|
||||||
|
|
||||||
Query<io.github.wulkanowy.dao.entities.Day> dayQuery = dayDao.queryBuilder()
|
Query<io.github.wulkanowy.db.dao.entities.Day> dayQuery = dayDao.queryBuilder()
|
||||||
.where(DayDao.Properties.Date.eq(day.getDate()))
|
.where(DayDao.Properties.Date.eq(day.getDate()),
|
||||||
|
DayDao.Properties.UserId.eq(userId),
|
||||||
|
DayDao.Properties.WeekId.eq(weekId))
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
List<Lesson> lessonEntityList = ConversionVulcanObject.lessonsToLessonsEntities(day.getLessons());
|
List<Lesson> lessonEntityList = DataObjectConverter.lessonsToLessonsEntities(day.getLessons());
|
||||||
List<Lesson> updatedLessonEntityList = new ArrayList<>();
|
List<Lesson> updatedLessonEntityList = new ArrayList<>();
|
||||||
|
|
||||||
for (Lesson lesson : lessonEntityList) {
|
for (Lesson lesson : lessonEntityList) {
|
||||||
Query<Lesson> lessonQuery = lessonDao.queryBuilder().where(LessonDao.Properties.DayId.eq(dayQuery.uniqueOrThrow().getId()), LessonDao.Properties.Date.eq(lesson.getDate()),
|
Lesson lesson1 = lessonDao.queryBuilder()
|
||||||
LessonDao.Properties.StartTime.eq(lesson.getStartTime()), LessonDao.Properties.EndTime.eq(lesson.getEndTime())).build();
|
.where(LessonDao.Properties.DayId.eq(dayQuery.uniqueOrThrow().getId()),
|
||||||
Lesson lesson1 = lessonQuery.unique();
|
LessonDao.Properties.Date.eq(lesson.getDate()),
|
||||||
|
LessonDao.Properties.StartTime.eq(lesson.getStartTime()),
|
||||||
|
LessonDao.Properties.EndTime.eq(lesson.getEndTime()))
|
||||||
|
.unique();
|
||||||
|
|
||||||
if (lesson1 != null) {
|
if (lesson1 != null) {
|
||||||
lesson.setId(lesson1.getId());
|
lesson.setId(lesson1.getId());
|
||||||
@ -94,15 +98,15 @@ public class TimetableSynchronization {
|
|||||||
return allLessonsList;
|
return allLessonsList;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<io.github.wulkanowy.dao.entities.Day> getPreparedDaysList(List<Day> dayList, long userId, long weekId, DayDao dayDao) {
|
private List<io.github.wulkanowy.db.dao.entities.Day> getPreparedDaysList(List<Day> dayList, long userId, long weekId, DayDao dayDao) {
|
||||||
List<io.github.wulkanowy.dao.entities.Day> updatedDayList = new ArrayList<>();
|
List<io.github.wulkanowy.db.dao.entities.Day> updatedDayList = new ArrayList<>();
|
||||||
List<io.github.wulkanowy.dao.entities.Day> dayEntityList = ConversionVulcanObject
|
List<io.github.wulkanowy.db.dao.entities.Day> dayEntityList = DataObjectConverter
|
||||||
.daysToDaysEntities(dayList);
|
.daysToDaysEntities(dayList);
|
||||||
for (io.github.wulkanowy.dao.entities.Day day : dayEntityList) {
|
for (io.github.wulkanowy.db.dao.entities.Day day : dayEntityList) {
|
||||||
|
|
||||||
Query<io.github.wulkanowy.dao.entities.Day> dayQuery = dayDao.queryBuilder().where(DayDao.Properties.UserId.eq(userId), DayDao.Properties.WeekId.eq(weekId), DayDao.Properties.Date.eq(day.getDate())).build();
|
Query<io.github.wulkanowy.db.dao.entities.Day> dayQuery = dayDao.queryBuilder().where(DayDao.Properties.UserId.eq(userId), DayDao.Properties.WeekId.eq(weekId), DayDao.Properties.Date.eq(day.getDate())).build();
|
||||||
|
|
||||||
io.github.wulkanowy.dao.entities.Day day1 = dayQuery.unique();
|
io.github.wulkanowy.db.dao.entities.Day day1 = dayQuery.unique();
|
||||||
|
|
||||||
if (day1 != null) {
|
if (day1 != null) {
|
||||||
day.setId(day1.getId());
|
day.setId(day1.getId());
|
@ -1,4 +1,4 @@
|
|||||||
package io.github.wulkanowy.services;
|
package io.github.wulkanowy.services.sync;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
@ -12,24 +12,19 @@ import io.github.wulkanowy.api.login.BadCredentialsException;
|
|||||||
import io.github.wulkanowy.api.login.LoginErrorException;
|
import io.github.wulkanowy.api.login.LoginErrorException;
|
||||||
import io.github.wulkanowy.api.login.NotLoggedInErrorException;
|
import io.github.wulkanowy.api.login.NotLoggedInErrorException;
|
||||||
import io.github.wulkanowy.api.login.VulcanOfflineException;
|
import io.github.wulkanowy.api.login.VulcanOfflineException;
|
||||||
import io.github.wulkanowy.dao.entities.DaoSession;
|
import io.github.wulkanowy.db.dao.entities.DaoSession;
|
||||||
import io.github.wulkanowy.security.CryptoException;
|
|
||||||
import io.github.wulkanowy.services.jobs.VulcanJobHelper;
|
import io.github.wulkanowy.services.jobs.VulcanJobHelper;
|
||||||
import io.github.wulkanowy.services.synchronisation.CurrentAccountLogin;
|
import io.github.wulkanowy.utils.security.CryptoException;
|
||||||
import io.github.wulkanowy.services.synchronisation.FirstAccountLogin;
|
|
||||||
import io.github.wulkanowy.services.synchronisation.GradesSynchronisation;
|
|
||||||
import io.github.wulkanowy.services.synchronisation.SubjectsSynchronisation;
|
|
||||||
import io.github.wulkanowy.services.synchronisation.TimetableSynchronization;
|
|
||||||
|
|
||||||
public class VulcanSynchronization {
|
public class VulcanSync {
|
||||||
|
|
||||||
private LoginSession loginSession;
|
private LoginSession loginSession;
|
||||||
|
|
||||||
public VulcanSynchronization(LoginSession loginSession) {
|
public VulcanSync(LoginSession loginSession) {
|
||||||
this.loginSession = loginSession;
|
this.loginSession = loginSession;
|
||||||
}
|
}
|
||||||
|
|
||||||
public VulcanSynchronization() {
|
public VulcanSync() {
|
||||||
this.loginSession = new LoginSession();
|
this.loginSession = new LoginSession();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -39,12 +34,12 @@ public class VulcanSynchronization {
|
|||||||
loginSession = firstAccountLogin.login(email, password, symbol);
|
loginSession = firstAccountLogin.login(email, password, symbol);
|
||||||
}
|
}
|
||||||
|
|
||||||
public VulcanSynchronization loginCurrentUser(Context context, DaoSession daoSession) throws CryptoException,
|
public VulcanSync loginCurrentUser(Context context, DaoSession daoSession) throws CryptoException,
|
||||||
BadCredentialsException, AccountPermissionException, LoginErrorException, IOException, VulcanOfflineException {
|
BadCredentialsException, AccountPermissionException, LoginErrorException, IOException, VulcanOfflineException {
|
||||||
return loginCurrentUser(context, daoSession, new Vulcan());
|
return loginCurrentUser(context, daoSession, new Vulcan());
|
||||||
}
|
}
|
||||||
|
|
||||||
public VulcanSynchronization loginCurrentUser(Context context, DaoSession daoSession, Vulcan vulcan)
|
public VulcanSync loginCurrentUser(Context context, DaoSession daoSession, Vulcan vulcan)
|
||||||
throws CryptoException, BadCredentialsException, AccountPermissionException,
|
throws CryptoException, BadCredentialsException, AccountPermissionException,
|
||||||
LoginErrorException, IOException, VulcanOfflineException {
|
LoginErrorException, IOException, VulcanOfflineException {
|
||||||
|
|
||||||
@ -60,31 +55,31 @@ public class VulcanSynchronization {
|
|||||||
|
|
||||||
public void syncGrades() throws IOException {
|
public void syncGrades() throws IOException {
|
||||||
if (loginSession != null) {
|
if (loginSession != null) {
|
||||||
GradesSynchronisation gradesSynchronisation = new GradesSynchronisation();
|
GradesSync gradesSync = new GradesSync();
|
||||||
try {
|
try {
|
||||||
gradesSynchronisation.sync(loginSession);
|
gradesSync.sync(loginSession);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Log.e(VulcanJobHelper.DEBUG_TAG, "Synchronisation of grades failed", e);
|
Log.e(VulcanJobHelper.DEBUG_TAG, "Synchronisation of grades failed", e);
|
||||||
throw new IOException(e.getCause());
|
throw new IOException(e.getCause());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Log.e(VulcanJobHelper.DEBUG_TAG, "Before synchronization, should login user to log",
|
Log.e(VulcanJobHelper.DEBUG_TAG, "Before sync, should login user to log",
|
||||||
new UnsupportedOperationException());
|
new UnsupportedOperationException());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void syncSubjectsAndGrades() throws IOException {
|
public void syncSubjectsAndGrades() throws IOException {
|
||||||
if (loginSession != null) {
|
if (loginSession != null) {
|
||||||
SubjectsSynchronisation subjectsSynchronisation = new SubjectsSynchronisation();
|
SubjectsSync subjectsSync = new SubjectsSync();
|
||||||
try {
|
try {
|
||||||
subjectsSynchronisation.sync(loginSession);
|
subjectsSync.sync(loginSession);
|
||||||
syncGrades();
|
syncGrades();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Log.e(VulcanJobHelper.DEBUG_TAG, "Synchronisation of subjects failed", e);
|
Log.e(VulcanJobHelper.DEBUG_TAG, "Synchronisation of subjects failed", e);
|
||||||
throw new IOException(e.getCause());
|
throw new IOException(e.getCause());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Log.e(VulcanJobHelper.DEBUG_TAG, "Before synchronization, should login user to log",
|
Log.e(VulcanJobHelper.DEBUG_TAG, "Before sync, should login user to log",
|
||||||
new UnsupportedOperationException());
|
new UnsupportedOperationException());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -95,15 +90,15 @@ public class VulcanSynchronization {
|
|||||||
|
|
||||||
public void syncTimetable(@Nullable String date) throws IOException {
|
public void syncTimetable(@Nullable String date) throws IOException {
|
||||||
if (loginSession != null) {
|
if (loginSession != null) {
|
||||||
TimetableSynchronization timetableSynchronization = new TimetableSynchronization();
|
TimetableSync timetableSync = new TimetableSync();
|
||||||
try {
|
try {
|
||||||
timetableSynchronization.sync(loginSession, date);
|
timetableSync.sync(loginSession, date);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Log.e(VulcanJobHelper.DEBUG_TAG, "Synchronization of timetable failed", e);
|
Log.e(VulcanJobHelper.DEBUG_TAG, "Synchronization of timetable failed", e);
|
||||||
throw new IOException(e.getCause());
|
throw new IOException(e.getCause());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Log.e(VulcanJobHelper.DEBUG_TAG, "Before synchronization, should login user to log",
|
Log.e(VulcanJobHelper.DEBUG_TAG, "Before sync, should login user to log",
|
||||||
new UnsupportedOperationException());
|
new UnsupportedOperationException());
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,7 +1,6 @@
|
|||||||
package io.github.wulkanowy.ui.login;
|
package io.github.wulkanowy.ui.login;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
@ -12,7 +11,6 @@ import android.view.MotionEvent;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.View.OnClickListener;
|
import android.view.View.OnClickListener;
|
||||||
import android.view.inputmethod.EditorInfo;
|
import android.view.inputmethod.EditorInfo;
|
||||||
import android.view.inputmethod.InputMethodManager;
|
|
||||||
import android.widget.ArrayAdapter;
|
import android.widget.ArrayAdapter;
|
||||||
import android.widget.AutoCompleteTextView;
|
import android.widget.AutoCompleteTextView;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
@ -23,6 +21,7 @@ import java.util.LinkedHashMap;
|
|||||||
|
|
||||||
import io.github.wulkanowy.R;
|
import io.github.wulkanowy.R;
|
||||||
import io.github.wulkanowy.services.Updater;
|
import io.github.wulkanowy.services.Updater;
|
||||||
|
import io.github.wulkanowy.utils.KeyboardUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A login screen that offers login via email/password.
|
* A login screen that offers login via email/password.
|
||||||
@ -178,7 +177,7 @@ public class LoginActivity extends Activity {
|
|||||||
LoginTask authTask = new LoginTask(this, email, password, symbol);
|
LoginTask authTask = new LoginTask(this, email, password, symbol);
|
||||||
authTask.showProgress(true);
|
authTask.showProgress(true);
|
||||||
authTask.execute();
|
authTask.execute();
|
||||||
hideSoftKeyboard();
|
KeyboardUtils.hideSoftInput(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -190,15 +189,6 @@ public class LoginActivity extends Activity {
|
|||||||
return password.length() > 4;
|
return password.length() > 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void hideSoftKeyboard() {
|
|
||||||
InputMethodManager manager = (InputMethodManager)
|
|
||||||
getSystemService(Context.INPUT_METHOD_SERVICE);
|
|
||||||
if (manager != null) {
|
|
||||||
manager.hideSoftInputFromWindow(getWindow()
|
|
||||||
.getDecorView().getApplicationWindowToken(), 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean dispatchTouchEvent(MotionEvent ev) {
|
public boolean dispatchTouchEvent(MotionEvent ev) {
|
||||||
|
|
||||||
@ -220,7 +210,7 @@ public class LoginActivity extends Activity {
|
|||||||
float y = ev.getRawY() + view.getTop() - coordinators[1];
|
float y = ev.getRawY() + view.getTop() - coordinators[1];
|
||||||
if (x < view.getLeft() || x > view.getRight() || y < view.getTop()
|
if (x < view.getLeft() || x > view.getRight() || y < view.getTop()
|
||||||
|| y > view.getBottom()) {
|
|| y > view.getBottom()) {
|
||||||
hideSoftKeyboard();
|
KeyboardUtils.hideSoftInput(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,6 @@ package io.github.wulkanowy.ui.login;
|
|||||||
import android.animation.Animator;
|
import android.animation.Animator;
|
||||||
import android.animation.AnimatorListenerAdapter;
|
import android.animation.AnimatorListenerAdapter;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
@ -11,7 +10,6 @@ import android.support.design.widget.Snackbar;
|
|||||||
import android.support.design.widget.TextInputLayout;
|
import android.support.design.widget.TextInputLayout;
|
||||||
import android.support.v7.app.AlertDialog;
|
import android.support.v7.app.AlertDialog;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.inputmethod.InputMethodManager;
|
|
||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
@ -21,18 +19,19 @@ import java.net.SocketTimeoutException;
|
|||||||
import java.net.UnknownHostException;
|
import java.net.UnknownHostException;
|
||||||
|
|
||||||
import io.github.wulkanowy.R;
|
import io.github.wulkanowy.R;
|
||||||
|
import io.github.wulkanowy.WulkanowyApp;
|
||||||
import io.github.wulkanowy.api.login.AccountPermissionException;
|
import io.github.wulkanowy.api.login.AccountPermissionException;
|
||||||
import io.github.wulkanowy.api.login.BadCredentialsException;
|
import io.github.wulkanowy.api.login.BadCredentialsException;
|
||||||
import io.github.wulkanowy.api.login.NotLoggedInErrorException;
|
import io.github.wulkanowy.api.login.NotLoggedInErrorException;
|
||||||
import io.github.wulkanowy.api.login.VulcanOfflineException;
|
import io.github.wulkanowy.api.login.VulcanOfflineException;
|
||||||
import io.github.wulkanowy.dao.entities.DaoSession;
|
import io.github.wulkanowy.db.dao.entities.DaoSession;
|
||||||
import io.github.wulkanowy.security.CryptoException;
|
|
||||||
import io.github.wulkanowy.services.LoginSession;
|
|
||||||
import io.github.wulkanowy.services.VulcanSynchronization;
|
|
||||||
import io.github.wulkanowy.services.jobs.FullSyncJob;
|
import io.github.wulkanowy.services.jobs.FullSyncJob;
|
||||||
import io.github.wulkanowy.ui.WulkanowyApp;
|
import io.github.wulkanowy.services.sync.LoginSession;
|
||||||
|
import io.github.wulkanowy.services.sync.VulcanSync;
|
||||||
import io.github.wulkanowy.ui.main.DashboardActivity;
|
import io.github.wulkanowy.ui.main.DashboardActivity;
|
||||||
import io.github.wulkanowy.utilities.ConnectionUtilities;
|
import io.github.wulkanowy.utils.KeyboardUtils;
|
||||||
|
import io.github.wulkanowy.utils.NetworkUtils;
|
||||||
|
import io.github.wulkanowy.utils.security.CryptoException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents an asynchronous login/registration task used to authenticate
|
* Represents an asynchronous login/registration task used to authenticate
|
||||||
@ -68,16 +67,16 @@ public class LoginTask extends AsyncTask<Void, String, Integer> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Integer doInBackground(Void... params) {
|
protected Integer doInBackground(Void... params) {
|
||||||
if (ConnectionUtilities.isOnline(activity.get())) {
|
if (NetworkUtils.isOnline(activity.get())) {
|
||||||
DaoSession daoSession = ((WulkanowyApp) activity.get().getApplication()).getDaoSession();
|
DaoSession daoSession = ((WulkanowyApp) activity.get().getApplication()).getDaoSession();
|
||||||
VulcanSynchronization vulcanSynchronization = new VulcanSynchronization(new LoginSession());
|
VulcanSync vulcanSync = new VulcanSync(new LoginSession());
|
||||||
|
|
||||||
try {
|
try {
|
||||||
publishProgress("1", activity.get().getResources().getString(R.string.step_login));
|
publishProgress("1", activity.get().getResources().getString(R.string.step_login));
|
||||||
vulcanSynchronization.firstLoginSignInStep(activity.get(), daoSession, email, password, symbol);
|
vulcanSync.firstLoginSignInStep(activity.get(), daoSession, email, password, symbol);
|
||||||
|
|
||||||
publishProgress("2", activity.get().getResources().getString(R.string.step_synchronization));
|
publishProgress("2", activity.get().getResources().getString(R.string.step_synchronization));
|
||||||
vulcanSynchronization.syncAll();
|
vulcanSync.syncAll();
|
||||||
} catch (BadCredentialsException e) {
|
} catch (BadCredentialsException e) {
|
||||||
return R.string.login_bad_credentials_text;
|
return R.string.login_bad_credentials_text;
|
||||||
} catch (AccountPermissionException e) {
|
} catch (AccountPermissionException e) {
|
||||||
@ -127,7 +126,7 @@ public class LoginTask extends AsyncTask<Void, String, Integer> {
|
|||||||
EditText passwordView = activity.get().findViewById(R.id.password);
|
EditText passwordView = activity.get().findViewById(R.id.password);
|
||||||
passwordView.setError(activity.get().getString(R.string.error_incorrect_password));
|
passwordView.setError(activity.get().getString(R.string.error_incorrect_password));
|
||||||
passwordView.requestFocus();
|
passwordView.requestFocus();
|
||||||
showSoftKeyboard(passwordView);
|
KeyboardUtils.showSoftInput(passwordView, activity.get());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// if no permission
|
// if no permission
|
||||||
@ -139,7 +138,7 @@ public class LoginTask extends AsyncTask<Void, String, Integer> {
|
|||||||
EditText symbolView = activity.get().findViewById(R.id.symbol);
|
EditText symbolView = activity.get().findViewById(R.id.symbol);
|
||||||
symbolView.setError(activity.get().getString(R.string.error_bad_account_permission));
|
symbolView.setError(activity.get().getString(R.string.error_bad_account_permission));
|
||||||
symbolView.requestFocus();
|
symbolView.requestFocus();
|
||||||
showSoftKeyboard(symbolView);
|
KeyboardUtils.showSoftInput(symbolView, activity.get());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// if rooted and SDK < 18
|
// if rooted and SDK < 18
|
||||||
@ -182,15 +181,6 @@ public class LoginTask extends AsyncTask<Void, String, Integer> {
|
|||||||
changeProgressVisibility(show, animTime);
|
changeProgressVisibility(show, animTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showSoftKeyboard(EditText editText) {
|
|
||||||
InputMethodManager manager = (InputMethodManager)
|
|
||||||
activity.get().getSystemService(Context.INPUT_METHOD_SERVICE);
|
|
||||||
if (manager != null) {
|
|
||||||
manager.showSoftInput(editText,
|
|
||||||
InputMethodManager.SHOW_IMPLICIT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void changeLoginFormVisibility(final boolean show, final int animTime) {
|
private void changeLoginFormVisibility(final boolean show, final int animTime) {
|
||||||
loginFormView.get().setVisibility(show ? View.GONE : View.VISIBLE);
|
loginFormView.get().setVisibility(show ? View.GONE : View.VISIBLE);
|
||||||
loginFormView.get().animate().setDuration(animTime).alpha(
|
loginFormView.get().animate().setDuration(animTime).alpha(
|
||||||
|
@ -22,9 +22,9 @@ import eu.davidea.flexibleadapter.FlexibleAdapter;
|
|||||||
import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager;
|
import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager;
|
||||||
import eu.davidea.flexibleadapter.items.AbstractExpandableHeaderItem;
|
import eu.davidea.flexibleadapter.items.AbstractExpandableHeaderItem;
|
||||||
import io.github.wulkanowy.R;
|
import io.github.wulkanowy.R;
|
||||||
import io.github.wulkanowy.dao.entities.DaoSession;
|
import io.github.wulkanowy.WulkanowyApp;
|
||||||
import io.github.wulkanowy.ui.WulkanowyApp;
|
import io.github.wulkanowy.db.dao.entities.DaoSession;
|
||||||
import io.github.wulkanowy.utilities.ConnectionUtilities;
|
import io.github.wulkanowy.utils.NetworkUtils;
|
||||||
|
|
||||||
public abstract class AbstractFragment<T extends AbstractExpandableHeaderItem> extends Fragment
|
public abstract class AbstractFragment<T extends AbstractExpandableHeaderItem> extends Fragment
|
||||||
implements AsyncResponse<T> {
|
implements AsyncResponse<T> {
|
||||||
@ -158,7 +158,7 @@ public abstract class AbstractFragment<T extends AbstractExpandableHeaderItem> e
|
|||||||
return new SwipeRefreshLayout.OnRefreshListener() {
|
return new SwipeRefreshLayout.OnRefreshListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onRefresh() {
|
public void onRefresh() {
|
||||||
if (ConnectionUtilities.isOnline(getContext())) {
|
if (NetworkUtils.isOnline(getContext())) {
|
||||||
new RefreshTask(AbstractFragment.this).execute();
|
new RefreshTask(AbstractFragment.this).execute();
|
||||||
} else {
|
} else {
|
||||||
Toast.makeText(getContext(), R.string.noInternet_text, Toast.LENGTH_SHORT).show();
|
Toast.makeText(getContext(), R.string.noInternet_text, Toast.LENGTH_SHORT).show();
|
||||||
|
@ -42,7 +42,7 @@ public class RefreshTask extends AsyncTask<Void, Void, List<?>> {
|
|||||||
return null;
|
return null;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
stringEventId = R.string.refresh_error_text;
|
stringEventId = R.string.refresh_error_text;
|
||||||
Log.e(DEBUG_TAG, "There was a synchronization problem", e);
|
Log.e(DEBUG_TAG, "There was a sync problem", e);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,8 +18,8 @@ import java.lang.ref.WeakReference;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import io.github.wulkanowy.R;
|
import io.github.wulkanowy.R;
|
||||||
import io.github.wulkanowy.dao.entities.Grade;
|
import io.github.wulkanowy.db.dao.entities.Grade;
|
||||||
import io.github.wulkanowy.utilities.AverageCalculator;
|
import io.github.wulkanowy.utils.AverageCalculator;
|
||||||
|
|
||||||
public class GradesAdapter extends ExpandableRecyclerViewAdapter<GradesAdapter.SubjectViewHolder, GradesAdapter.GradeViewHolder> {
|
public class GradesAdapter extends ExpandableRecyclerViewAdapter<GradesAdapter.SubjectViewHolder, GradesAdapter.GradeViewHolder> {
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ import android.widget.Button;
|
|||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import io.github.wulkanowy.R;
|
import io.github.wulkanowy.R;
|
||||||
import io.github.wulkanowy.dao.entities.Grade;
|
import io.github.wulkanowy.db.dao.entities.Grade;
|
||||||
|
|
||||||
public class GradesDialogFragment extends DialogFragment {
|
public class GradesDialogFragment extends DialogFragment {
|
||||||
|
|
||||||
|
@ -21,19 +21,19 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import io.github.wulkanowy.R;
|
import io.github.wulkanowy.R;
|
||||||
|
import io.github.wulkanowy.WulkanowyApp;
|
||||||
import io.github.wulkanowy.api.Vulcan;
|
import io.github.wulkanowy.api.Vulcan;
|
||||||
import io.github.wulkanowy.api.login.VulcanOfflineException;
|
import io.github.wulkanowy.api.login.VulcanOfflineException;
|
||||||
import io.github.wulkanowy.dao.DatabaseAccess;
|
import io.github.wulkanowy.db.dao.DatabaseAccess;
|
||||||
import io.github.wulkanowy.dao.entities.Account;
|
import io.github.wulkanowy.db.dao.entities.Account;
|
||||||
import io.github.wulkanowy.dao.entities.AccountDao;
|
import io.github.wulkanowy.db.dao.entities.AccountDao;
|
||||||
import io.github.wulkanowy.dao.entities.DaoSession;
|
import io.github.wulkanowy.db.dao.entities.DaoSession;
|
||||||
import io.github.wulkanowy.dao.entities.Grade;
|
import io.github.wulkanowy.db.dao.entities.Grade;
|
||||||
import io.github.wulkanowy.dao.entities.Subject;
|
import io.github.wulkanowy.db.dao.entities.Subject;
|
||||||
import io.github.wulkanowy.services.LoginSession;
|
|
||||||
import io.github.wulkanowy.services.VulcanSynchronization;
|
|
||||||
import io.github.wulkanowy.services.jobs.VulcanJobHelper;
|
import io.github.wulkanowy.services.jobs.VulcanJobHelper;
|
||||||
import io.github.wulkanowy.ui.WulkanowyApp;
|
import io.github.wulkanowy.services.sync.LoginSession;
|
||||||
import io.github.wulkanowy.utilities.ConnectionUtilities;
|
import io.github.wulkanowy.services.sync.VulcanSync;
|
||||||
|
import io.github.wulkanowy.utils.NetworkUtils;
|
||||||
|
|
||||||
public class GradesFragment extends Fragment {
|
public class GradesFragment extends Fragment {
|
||||||
|
|
||||||
@ -106,7 +106,7 @@ public class GradesFragment extends Fragment {
|
|||||||
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
|
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onRefresh() {
|
public void onRefresh() {
|
||||||
if (ConnectionUtilities.isOnline(getContext())) {
|
if (NetworkUtils.isOnline(getContext())) {
|
||||||
new RefreshTask(getActivity(), mainView, daoSession).execute();
|
new RefreshTask(getActivity(), mainView, daoSession).execute();
|
||||||
} else {
|
} else {
|
||||||
Toast.makeText(mainView.getContext(), R.string.noInternet_text, Toast.LENGTH_SHORT).show();
|
Toast.makeText(mainView.getContext(), R.string.noInternet_text, Toast.LENGTH_SHORT).show();
|
||||||
@ -163,17 +163,17 @@ public class GradesFragment extends Fragment {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Integer doInBackground(Void... params) {
|
protected Integer doInBackground(Void... params) {
|
||||||
VulcanSynchronization vulcanSynchronization = new VulcanSynchronization(new LoginSession());
|
VulcanSync vulcanSync = new VulcanSync(new LoginSession());
|
||||||
try {
|
try {
|
||||||
vulcanSynchronization.loginCurrentUser(activity.get(), daoSession, new Vulcan());
|
vulcanSync.loginCurrentUser(activity.get(), daoSession, new Vulcan());
|
||||||
vulcanSynchronization.syncGrades();
|
vulcanSync.syncGrades();
|
||||||
downloadGradesFormDatabase(daoSession);
|
downloadGradesFormDatabase(daoSession);
|
||||||
return 1;
|
return 1;
|
||||||
} catch (VulcanOfflineException e) {
|
} catch (VulcanOfflineException e) {
|
||||||
Log.e(VulcanJobHelper.DEBUG_TAG, "There was a synchronization problem, because vulcan is offline", e);
|
Log.e(VulcanJobHelper.DEBUG_TAG, "There was a sync problem, because vulcan is offline", e);
|
||||||
return R.string.error_host_offline;
|
return R.string.error_host_offline;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Log.e(VulcanJobHelper.DEBUG_TAG, "There was a synchronization problem", e);
|
Log.e(VulcanJobHelper.DEBUG_TAG, "There was a sync problem", e);
|
||||||
return R.string.refresh_error_text;
|
return R.string.refresh_error_text;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ import com.thoughtbot.expandablerecyclerview.models.ExpandableGroup;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import io.github.wulkanowy.dao.entities.Grade;
|
import io.github.wulkanowy.db.dao.entities.Grade;
|
||||||
|
|
||||||
public class SubjectWithGrades extends ExpandableGroup<Grade> {
|
public class SubjectWithGrades extends ExpandableGroup<Grade> {
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ import android.widget.TextView;
|
|||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import io.github.wulkanowy.R;
|
import io.github.wulkanowy.R;
|
||||||
import io.github.wulkanowy.dao.entities.Lesson;
|
import io.github.wulkanowy.db.dao.entities.Lesson;
|
||||||
|
|
||||||
public class TimetableDialogFragment extends DialogFragment {
|
public class TimetableDialogFragment extends DialogFragment {
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import io.github.wulkanowy.R;
|
import io.github.wulkanowy.R;
|
||||||
import io.github.wulkanowy.utilities.TimeUtilities;
|
import io.github.wulkanowy.utils.TimeUtils;
|
||||||
|
|
||||||
public class TimetableFragment extends Fragment {
|
public class TimetableFragment extends Fragment {
|
||||||
|
|
||||||
@ -81,7 +81,7 @@ public class TimetableFragment extends Fragment {
|
|||||||
|
|
||||||
private void setDateStringList() {
|
private void setDateStringList() {
|
||||||
if (dateStringList.isEmpty()) {
|
if (dateStringList.isEmpty()) {
|
||||||
dateStringList = TimeUtilities.getMondaysFromCurrentSchoolYear(DATE_PATTERN);
|
dateStringList = TimeUtils.getMondaysFromCurrentSchoolYear(DATE_PATTERN);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,11 +17,11 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import io.github.wulkanowy.R;
|
import io.github.wulkanowy.R;
|
||||||
import io.github.wulkanowy.dao.entities.Day;
|
import io.github.wulkanowy.db.dao.entities.Day;
|
||||||
import io.github.wulkanowy.dao.entities.Lesson;
|
import io.github.wulkanowy.db.dao.entities.Lesson;
|
||||||
import io.github.wulkanowy.dao.entities.Week;
|
import io.github.wulkanowy.db.dao.entities.Week;
|
||||||
import io.github.wulkanowy.dao.entities.WeekDao;
|
import io.github.wulkanowy.db.dao.entities.WeekDao;
|
||||||
import io.github.wulkanowy.services.VulcanSynchronization;
|
import io.github.wulkanowy.services.sync.VulcanSync;
|
||||||
import io.github.wulkanowy.ui.main.AbstractFragment;
|
import io.github.wulkanowy.ui.main.AbstractFragment;
|
||||||
|
|
||||||
public class TimetableFragmentTab extends AbstractFragment<TimetableHeaderItem> {
|
public class TimetableFragmentTab extends AbstractFragment<TimetableHeaderItem> {
|
||||||
@ -119,7 +119,7 @@ public class TimetableFragmentTab extends AbstractFragment<TimetableHeaderItem>
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRefresh() throws Exception {
|
public void onRefresh() throws Exception {
|
||||||
VulcanSynchronization synchronization = new VulcanSynchronization();
|
VulcanSync synchronization = new VulcanSync();
|
||||||
synchronization.loginCurrentUser(getContext(), getDaoSession());
|
synchronization.loginCurrentUser(getContext(), getDaoSession());
|
||||||
synchronization.syncTimetable(date);
|
synchronization.syncTimetable(date);
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@ import eu.davidea.flexibleadapter.FlexibleAdapter;
|
|||||||
import eu.davidea.flexibleadapter.items.AbstractExpandableHeaderItem;
|
import eu.davidea.flexibleadapter.items.AbstractExpandableHeaderItem;
|
||||||
import eu.davidea.viewholders.ExpandableViewHolder;
|
import eu.davidea.viewholders.ExpandableViewHolder;
|
||||||
import io.github.wulkanowy.R;
|
import io.github.wulkanowy.R;
|
||||||
import io.github.wulkanowy.dao.entities.Day;
|
import io.github.wulkanowy.db.dao.entities.Day;
|
||||||
|
|
||||||
public class TimetableHeaderItem
|
public class TimetableHeaderItem
|
||||||
extends AbstractExpandableHeaderItem<TimetableHeaderItem.HeaderViewHolder, TimetableSubItem> {
|
extends AbstractExpandableHeaderItem<TimetableHeaderItem.HeaderViewHolder, TimetableSubItem> {
|
||||||
|
@ -15,7 +15,8 @@ import eu.davidea.flexibleadapter.FlexibleAdapter;
|
|||||||
import eu.davidea.flexibleadapter.items.AbstractSectionableItem;
|
import eu.davidea.flexibleadapter.items.AbstractSectionableItem;
|
||||||
import eu.davidea.viewholders.FlexibleViewHolder;
|
import eu.davidea.viewholders.FlexibleViewHolder;
|
||||||
import io.github.wulkanowy.R;
|
import io.github.wulkanowy.R;
|
||||||
import io.github.wulkanowy.dao.entities.Lesson;
|
import io.github.wulkanowy.db.dao.entities.Lesson;
|
||||||
|
|
||||||
|
|
||||||
public class TimetableSubItem extends AbstractSectionableItem<TimetableSubItem.SubItemViewHolder, TimetableHeaderItem> {
|
public class TimetableSubItem extends AbstractSectionableItem<TimetableSubItem.SubItemViewHolder, TimetableHeaderItem> {
|
||||||
|
|
||||||
|
@ -1,23 +0,0 @@
|
|||||||
package io.github.wulkanowy.utilities;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.net.ConnectivityManager;
|
|
||||||
import android.net.NetworkInfo;
|
|
||||||
|
|
||||||
public class ConnectionUtilities {
|
|
||||||
|
|
||||||
private ConnectionUtilities() {
|
|
||||||
throw new IllegalStateException("Utility class");
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean isOnline(Context context) {
|
|
||||||
ConnectivityManager connectivityManager =
|
|
||||||
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
|
|
||||||
if (connectivityManager != null) {
|
|
||||||
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
|
|
||||||
return networkInfo != null && networkInfo.isConnectedOrConnecting();
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,41 +0,0 @@
|
|||||||
package io.github.wulkanowy.utilities;
|
|
||||||
|
|
||||||
import android.os.Build;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
|
|
||||||
public class RootUtilities {
|
|
||||||
|
|
||||||
private RootUtilities() {
|
|
||||||
throw new IllegalStateException("Utility class");
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean isRooted() {
|
|
||||||
String buildTags = Build.TAGS;
|
|
||||||
if (buildTags != null && buildTags.contains("test-keys")) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
File file = new File("/system/app/Superuser.apk");
|
|
||||||
if (file.exists()) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
// ignore
|
|
||||||
}
|
|
||||||
return canExecuteCommand("/system/xbin/which su")
|
|
||||||
|| canExecuteCommand("/system/bin/which su") || canExecuteCommand("which su");
|
|
||||||
}
|
|
||||||
|
|
||||||
private static boolean canExecuteCommand(String command) {
|
|
||||||
boolean executedSuccesfully;
|
|
||||||
try {
|
|
||||||
Runtime.getRuntime().exec(command);
|
|
||||||
executedSuccesfully = true;
|
|
||||||
} catch (Exception e) {
|
|
||||||
executedSuccesfully = false;
|
|
||||||
}
|
|
||||||
return executedSuccesfully;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,10 +1,10 @@
|
|||||||
package io.github.wulkanowy.utilities;
|
package io.github.wulkanowy.utils;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import io.github.wulkanowy.dao.entities.Grade;
|
import io.github.wulkanowy.db.dao.entities.Grade;
|
||||||
|
|
||||||
public class AverageCalculator {
|
public final class AverageCalculator {
|
||||||
|
|
||||||
private AverageCalculator() {
|
private AverageCalculator() {
|
||||||
throw new IllegalStateException("Utility class");
|
throw new IllegalStateException("Utility class");
|
||||||
@ -33,14 +33,18 @@ public class AverageCalculator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static float getMathematicalValueOfGrade(String valueOfGrade) {
|
private static float getMathematicalValueOfGrade(String valueOfGrade) {
|
||||||
if (valueOfGrade.matches("[-|+|=]{0,2}[0-6]") || valueOfGrade.matches("[0-6][-|+|=]{0,2}")) {
|
if (valueOfGrade.matches("[-|+|=]{0,2}[0-6]")
|
||||||
if (valueOfGrade.matches("[-][0-6]") || valueOfGrade.matches("[0-6][-]")) {
|
|| valueOfGrade.matches("[0-6][-|+|=]{0,2}")) {
|
||||||
|
if (valueOfGrade.matches("[-][0-6]")
|
||||||
|
|| valueOfGrade.matches("[0-6][-]")) {
|
||||||
String replacedValue = valueOfGrade.replaceAll("[-]", "");
|
String replacedValue = valueOfGrade.replaceAll("[-]", "");
|
||||||
return Float.valueOf(replacedValue) - 0.25f;
|
return Float.valueOf(replacedValue) - 0.25f;
|
||||||
} else if (valueOfGrade.matches("[+][0-6]") || valueOfGrade.matches("[0-6][+]")) {
|
} else if (valueOfGrade.matches("[+][0-6]")
|
||||||
|
|| valueOfGrade.matches("[0-6][+]")) {
|
||||||
String replacedValue = valueOfGrade.replaceAll("[+]", "");
|
String replacedValue = valueOfGrade.replaceAll("[+]", "");
|
||||||
return Float.valueOf((replacedValue)) + 0.25f;
|
return Float.valueOf((replacedValue)) + 0.25f;
|
||||||
} else if (valueOfGrade.matches("[-|=]{1,2}[0-6]") || valueOfGrade.matches("[0-6][-|=]{1,2}")) {
|
} else if (valueOfGrade.matches("[-|=]{1,2}[0-6]")
|
||||||
|
|| valueOfGrade.matches("[0-6][-|=]{1,2}")) {
|
||||||
String replacedValue = valueOfGrade.replaceAll("[-|=]{1,2}", "");
|
String replacedValue = valueOfGrade.replaceAll("[-|=]{1,2}", "");
|
||||||
return Float.valueOf((replacedValue)) - 0.5f;
|
return Float.valueOf((replacedValue)) - 0.5f;
|
||||||
} else {
|
} else {
|
@ -1,18 +1,18 @@
|
|||||||
package io.github.wulkanowy.utilities;
|
package io.github.wulkanowy.utils;
|
||||||
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import io.github.wulkanowy.dao.entities.Day;
|
import io.github.wulkanowy.db.dao.entities.Day;
|
||||||
import io.github.wulkanowy.dao.entities.Grade;
|
import io.github.wulkanowy.db.dao.entities.Grade;
|
||||||
import io.github.wulkanowy.dao.entities.Lesson;
|
import io.github.wulkanowy.db.dao.entities.Lesson;
|
||||||
import io.github.wulkanowy.dao.entities.Subject;
|
import io.github.wulkanowy.db.dao.entities.Subject;
|
||||||
import io.github.wulkanowy.dao.entities.Week;
|
import io.github.wulkanowy.db.dao.entities.Week;
|
||||||
|
|
||||||
public class ConversionVulcanObject {
|
public final class DataObjectConverter {
|
||||||
|
|
||||||
private ConversionVulcanObject() {
|
private DataObjectConverter() {
|
||||||
throw new IllegalStateException("Utility class");
|
throw new IllegalStateException("Utility class");
|
||||||
}
|
}
|
||||||
|
|
@ -1,13 +1,13 @@
|
|||||||
package io.github.wulkanowy.dao;
|
package io.github.wulkanowy.utils;
|
||||||
|
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import io.github.wulkanowy.dao.entities.Grade;
|
import io.github.wulkanowy.db.dao.entities.Grade;
|
||||||
|
|
||||||
public class EntitiesCompare {
|
public final class EntitiesCompare {
|
||||||
|
|
||||||
private EntitiesCompare() {
|
private EntitiesCompare() {
|
||||||
throw new IllegalStateException("Utility class");
|
throw new IllegalStateException("Utility class");
|
||||||
@ -29,13 +29,13 @@ public class EntitiesCompare {
|
|||||||
updatedList.add(grade);
|
updatedList.add(grade);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Grade grade : updatedList) {
|
for (Grade updateGrade : updatedList) {
|
||||||
for (Grade grade1 : oldList) {
|
for (Grade oldGrade : oldList) {
|
||||||
if (grade.equals(grade1)) {
|
if (updateGrade.equals(oldGrade)) {
|
||||||
grade.setRead(grade1.getRead());
|
updateGrade.setRead(oldGrade.getRead());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lastList.add(grade);
|
lastList.add(updateGrade);
|
||||||
}
|
}
|
||||||
return lastList;
|
return lastList;
|
||||||
}
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
package io.github.wulkanowy.utils;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.view.inputmethod.InputMethodManager;
|
||||||
|
import android.widget.EditText;
|
||||||
|
|
||||||
|
public final class KeyboardUtils {
|
||||||
|
|
||||||
|
private KeyboardUtils() {
|
||||||
|
throw new IllegalStateException("Utility class");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void hideSoftInput(Activity activity) {
|
||||||
|
InputMethodManager manager = (InputMethodManager)
|
||||||
|
activity.getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||||
|
if (manager != null) {
|
||||||
|
manager.hideSoftInputFromWindow(activity.getWindow()
|
||||||
|
.getDecorView().getApplicationWindowToken(), 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void showSoftInput(EditText editText, Context context) {
|
||||||
|
editText.setFocusable(true);
|
||||||
|
editText.setFocusableInTouchMode(true);
|
||||||
|
editText.requestFocus();
|
||||||
|
InputMethodManager inputMethodManager = (InputMethodManager) context
|
||||||
|
.getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||||
|
if (inputMethodManager != null) {
|
||||||
|
inputMethodManager.showSoftInput(editText, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package io.github.wulkanowy.utils;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.net.ConnectivityManager;
|
||||||
|
|
||||||
|
public final class NetworkUtils {
|
||||||
|
|
||||||
|
private NetworkUtils() {
|
||||||
|
throw new IllegalStateException("Utility class");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isOnline(Context context) {
|
||||||
|
ConnectivityManager connectivityManager =
|
||||||
|
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||||
|
return connectivityManager != null && connectivityManager.getActiveNetworkInfo() != null
|
||||||
|
&& connectivityManager.getActiveNetworkInfo().isConnectedOrConnecting();
|
||||||
|
}
|
||||||
|
}
|
38
app/src/main/java/io/github/wulkanowy/utils/RootChecker.java
Normal file
38
app/src/main/java/io/github/wulkanowy/utils/RootChecker.java
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
package io.github.wulkanowy.utils;
|
||||||
|
|
||||||
|
import android.os.Build;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
public final class RootChecker {
|
||||||
|
|
||||||
|
private RootChecker() {
|
||||||
|
throw new IllegalStateException("Utility class");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isRooted() {
|
||||||
|
return checkOne() || checkTwo() || checkThree();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean checkOne() {
|
||||||
|
return Build.TAGS != null && Build.TAGS.contains("test-keys");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean checkTwo() {
|
||||||
|
return new File("/system/app/Superuser.apk").exists();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean checkThree() {
|
||||||
|
String[] commands = {"/system/xbin/which su", "/system/bin/which su", "which su"};
|
||||||
|
for (String command : commands) {
|
||||||
|
try {
|
||||||
|
Runtime.getRuntime().exec(command);
|
||||||
|
return true;
|
||||||
|
} catch (Exception e) {
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package io.github.wulkanowy.utilities;
|
package io.github.wulkanowy.utils;
|
||||||
|
|
||||||
import org.joda.time.DateTime;
|
import org.joda.time.DateTime;
|
||||||
import org.joda.time.DateTimeConstants;
|
import org.joda.time.DateTimeConstants;
|
||||||
@ -13,13 +13,13 @@ import java.util.List;
|
|||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.TimeZone;
|
import java.util.TimeZone;
|
||||||
|
|
||||||
public class TimeUtilities {
|
public final class TimeUtils {
|
||||||
|
|
||||||
private static final long TICKS_AT_EPOCH = 621355968000000000L;
|
private static final long TICKS_AT_EPOCH = 621355968000000000L;
|
||||||
|
|
||||||
private static final long TICKS_PER_MILLISECOND = 10000;
|
private static final long TICKS_PER_MILLISECOND = 10000;
|
||||||
|
|
||||||
private TimeUtilities() {
|
private TimeUtils() {
|
||||||
throw new IllegalStateException("Utility class");
|
throw new IllegalStateException("Utility class");
|
||||||
}
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package io.github.wulkanowy.security;
|
package io.github.wulkanowy.utils.security;
|
||||||
|
|
||||||
|
|
||||||
public class CryptoException extends Exception {
|
public class CryptoException extends Exception {
|
@ -1,10 +1,10 @@
|
|||||||
package io.github.wulkanowy.security;
|
package io.github.wulkanowy.utils.security;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.util.Base64;
|
import android.util.Base64;
|
||||||
|
|
||||||
import io.github.wulkanowy.utilities.RootUtilities;
|
import io.github.wulkanowy.utils.RootChecker;
|
||||||
|
|
||||||
public class Safety extends Scrambler {
|
public class Safety extends Scrambler {
|
||||||
|
|
||||||
@ -15,7 +15,7 @@ public class Safety extends Scrambler {
|
|||||||
generateNewKey(email, context);
|
generateNewKey(email, context);
|
||||||
return encryptString(email, plainText);
|
return encryptString(email, plainText);
|
||||||
} else {
|
} else {
|
||||||
if (RootUtilities.isRooted()) {
|
if (RootChecker.isRooted()) {
|
||||||
return new String(Base64.encode(plainText.getBytes(), Base64.DEFAULT));
|
return new String(Base64.encode(plainText.getBytes(), Base64.DEFAULT));
|
||||||
} else {
|
} else {
|
||||||
throw new UnsupportedOperationException("Stored data in this devices isn't safe because android is rooted");
|
throw new UnsupportedOperationException("Stored data in this devices isn't safe because android is rooted");
|
@ -1,4 +1,4 @@
|
|||||||
package io.github.wulkanowy.security;
|
package io.github.wulkanowy.utils.security;
|
||||||
|
|
||||||
|
|
||||||
import android.annotation.TargetApi;
|
import android.annotation.TargetApi;
|
@ -1,4 +1,4 @@
|
|||||||
package io.github.wulkanowy.dao.entities;
|
package io.github.wulkanowy.db.dao.entities;
|
||||||
|
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
@ -7,7 +7,7 @@ import org.junit.Test;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import io.github.wulkanowy.dao.entities.Grade;
|
import io.github.wulkanowy.db.dao.entities.Grade;
|
||||||
|
|
||||||
public class SubjectWithGradesTest {
|
public class SubjectWithGradesTest {
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package io.github.wulkanowy.utilities;
|
package io.github.wulkanowy.utils;
|
||||||
|
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@ -6,7 +6,7 @@ import org.junit.Test;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import io.github.wulkanowy.dao.entities.Grade;
|
import io.github.wulkanowy.db.dao.entities.Grade;
|
||||||
|
|
||||||
public class AverageCalculatorTest {
|
public class AverageCalculatorTest {
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package io.github.wulkanowy.utilities;
|
package io.github.wulkanowy.utils;
|
||||||
|
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@ -11,14 +11,14 @@ import io.github.wulkanowy.api.grades.Subject;
|
|||||||
import io.github.wulkanowy.api.timetable.Day;
|
import io.github.wulkanowy.api.timetable.Day;
|
||||||
import io.github.wulkanowy.api.timetable.Lesson;
|
import io.github.wulkanowy.api.timetable.Lesson;
|
||||||
|
|
||||||
public class ConversionVulcanObjectTest {
|
public class DataObjectConverterTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void subjectConversionTest() {
|
public void subjectConversionTest() {
|
||||||
List<Subject> subjectList = new ArrayList<>();
|
List<Subject> subjectList = new ArrayList<>();
|
||||||
subjectList.add(new Subject().setName("Matematyka"));
|
subjectList.add(new Subject().setName("Matematyka"));
|
||||||
List<io.github.wulkanowy.dao.entities.Subject> subjectEntitiesList =
|
List<io.github.wulkanowy.db.dao.entities.Subject> subjectEntitiesList =
|
||||||
ConversionVulcanObject.subjectsToSubjectEntities(subjectList);
|
DataObjectConverter.subjectsToSubjectEntities(subjectList);
|
||||||
|
|
||||||
Assert.assertEquals("Matematyka", subjectEntitiesList.get(0).getName());
|
Assert.assertEquals("Matematyka", subjectEntitiesList.get(0).getName());
|
||||||
}
|
}
|
||||||
@ -26,15 +26,15 @@ public class ConversionVulcanObjectTest {
|
|||||||
@Test
|
@Test
|
||||||
public void subjectConversionEmptyTest() {
|
public void subjectConversionEmptyTest() {
|
||||||
Assert.assertEquals(new ArrayList<>(),
|
Assert.assertEquals(new ArrayList<>(),
|
||||||
ConversionVulcanObject.subjectsToSubjectEntities(new ArrayList<Subject>()));
|
DataObjectConverter.subjectsToSubjectEntities(new ArrayList<Subject>()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void gradesConversionTest() {
|
public void gradesConversionTest() {
|
||||||
List<Grade> gradeList = new ArrayList<>();
|
List<Grade> gradeList = new ArrayList<>();
|
||||||
gradeList.add(new Grade().setDescription("Lorem ipsum"));
|
gradeList.add(new Grade().setDescription("Lorem ipsum"));
|
||||||
List<io.github.wulkanowy.dao.entities.Grade> gradeEntitiesList =
|
List<io.github.wulkanowy.db.dao.entities.Grade> gradeEntitiesList =
|
||||||
ConversionVulcanObject.gradesToGradeEntities(gradeList);
|
DataObjectConverter.gradesToGradeEntities(gradeList);
|
||||||
|
|
||||||
Assert.assertEquals("Lorem ipsum", gradeEntitiesList.get(0).getDescription());
|
Assert.assertEquals("Lorem ipsum", gradeEntitiesList.get(0).getDescription());
|
||||||
}
|
}
|
||||||
@ -42,21 +42,21 @@ public class ConversionVulcanObjectTest {
|
|||||||
@Test
|
@Test
|
||||||
public void gradeConversionEmptyTest() {
|
public void gradeConversionEmptyTest() {
|
||||||
Assert.assertEquals(new ArrayList<>(),
|
Assert.assertEquals(new ArrayList<>(),
|
||||||
ConversionVulcanObject.gradesToGradeEntities(new ArrayList<Grade>()));
|
DataObjectConverter.gradesToGradeEntities(new ArrayList<Grade>()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void dayConversionEmptyTest() {
|
public void dayConversionEmptyTest() {
|
||||||
Assert.assertEquals(new ArrayList<>(),
|
Assert.assertEquals(new ArrayList<>(),
|
||||||
ConversionVulcanObject.daysToDaysEntities(new ArrayList<Day>()));
|
DataObjectConverter.daysToDaysEntities(new ArrayList<Day>()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void dayConversionTest() {
|
public void dayConversionTest() {
|
||||||
List<Day> dayList = new ArrayList<>();
|
List<Day> dayList = new ArrayList<>();
|
||||||
dayList.add(new Day().setDate("20.12.2012"));
|
dayList.add(new Day().setDate("20.12.2012"));
|
||||||
List<io.github.wulkanowy.dao.entities.Day> dayEntityList =
|
List<io.github.wulkanowy.db.dao.entities.Day> dayEntityList =
|
||||||
ConversionVulcanObject.daysToDaysEntities(dayList);
|
DataObjectConverter.daysToDaysEntities(dayList);
|
||||||
|
|
||||||
Assert.assertEquals("20.12.2012", dayEntityList.get(0).getDate());
|
Assert.assertEquals("20.12.2012", dayEntityList.get(0).getDate());
|
||||||
}
|
}
|
||||||
@ -64,15 +64,15 @@ public class ConversionVulcanObjectTest {
|
|||||||
@Test
|
@Test
|
||||||
public void lessonConversionEmptyTest() {
|
public void lessonConversionEmptyTest() {
|
||||||
Assert.assertEquals(new ArrayList<>(),
|
Assert.assertEquals(new ArrayList<>(),
|
||||||
ConversionVulcanObject.lessonsToLessonsEntities(new ArrayList<Lesson>()));
|
DataObjectConverter.lessonsToLessonsEntities(new ArrayList<Lesson>()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void lessonConversionTest() {
|
public void lessonConversionTest() {
|
||||||
List<Lesson> lessonList = new ArrayList<>();
|
List<Lesson> lessonList = new ArrayList<>();
|
||||||
lessonList.add(new Lesson().setRoom("20"));
|
lessonList.add(new Lesson().setRoom("20"));
|
||||||
List<io.github.wulkanowy.dao.entities.Lesson> lessonEntityList =
|
List<io.github.wulkanowy.db.dao.entities.Lesson> lessonEntityList =
|
||||||
ConversionVulcanObject.lessonsToLessonsEntities(lessonList);
|
DataObjectConverter.lessonsToLessonsEntities(lessonList);
|
||||||
|
|
||||||
Assert.assertEquals("20", lessonEntityList.get(0).getRoom());
|
Assert.assertEquals("20", lessonEntityList.get(0).getRoom());
|
||||||
}
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package io.github.wulkanowy.dao;
|
package io.github.wulkanowy.utils;
|
||||||
|
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
@ -7,7 +7,7 @@ import org.junit.Test;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import io.github.wulkanowy.dao.entities.Grade;
|
import io.github.wulkanowy.db.dao.entities.Grade;
|
||||||
|
|
||||||
|
|
||||||
public class EntitiesCompareTest {
|
public class EntitiesCompareTest {
|
@ -1,4 +1,4 @@
|
|||||||
package io.github.wulkanowy.utilities;
|
package io.github.wulkanowy.utils;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
@ -10,7 +10,7 @@ import org.junit.Test;
|
|||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
public class ConnectionUtilitiesTest {
|
public class NetworkUtilsTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void isOnlineTrueTest() {
|
public void isOnlineTrueTest() {
|
||||||
@ -23,7 +23,7 @@ public class ConnectionUtilitiesTest {
|
|||||||
Context context = mock(Context.class);
|
Context context = mock(Context.class);
|
||||||
when(context.getSystemService(Context.CONNECTIVITY_SERVICE)).thenReturn(connectivityManager);
|
when(context.getSystemService(Context.CONNECTIVITY_SERVICE)).thenReturn(connectivityManager);
|
||||||
|
|
||||||
Assert.assertTrue(ConnectionUtilities.isOnline(context));
|
Assert.assertTrue(NetworkUtils.isOnline(context));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -37,6 +37,6 @@ public class ConnectionUtilitiesTest {
|
|||||||
Context context = mock(Context.class);
|
Context context = mock(Context.class);
|
||||||
when(context.getSystemService(Context.CONNECTIVITY_SERVICE)).thenReturn(connectivityManager);
|
when(context.getSystemService(Context.CONNECTIVITY_SERVICE)).thenReturn(connectivityManager);
|
||||||
|
|
||||||
Assert.assertFalse(ConnectionUtilities.isOnline(context));
|
Assert.assertFalse(NetworkUtils.isOnline(context));
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package io.github.wulkanowy.utilities;
|
package io.github.wulkanowy.utils;
|
||||||
|
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@ -11,7 +11,7 @@ import java.util.Date;
|
|||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.TimeZone;
|
import java.util.TimeZone;
|
||||||
|
|
||||||
public class TimeUtilitiesTest {
|
public class TimeUtilsTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getTicksDateObjectTest() throws Exception {
|
public void getTicksDateObjectTest() throws Exception {
|
||||||
@ -19,32 +19,32 @@ public class TimeUtilitiesTest {
|
|||||||
format.setTimeZone(TimeZone.getTimeZone("UTC"));
|
format.setTimeZone(TimeZone.getTimeZone("UTC"));
|
||||||
Date date = format.parse("31.07.2017");
|
Date date = format.parse("31.07.2017");
|
||||||
|
|
||||||
Assert.assertEquals(636370560000000000L, TimeUtilities.getNetTicks(date));
|
Assert.assertEquals(636370560000000000L, TimeUtils.getNetTicks(date));
|
||||||
|
|
||||||
Calendar calendar = Calendar.getInstance();
|
Calendar calendar = Calendar.getInstance();
|
||||||
calendar.setTime(date);
|
calendar.setTime(date);
|
||||||
calendar.add(Calendar.DAY_OF_YEAR, -14);
|
calendar.add(Calendar.DAY_OF_YEAR, -14);
|
||||||
Date dateTwoWeekBefore = calendar.getTime();
|
Date dateTwoWeekBefore = calendar.getTime();
|
||||||
|
|
||||||
Assert.assertEquals(636358464000000000L, TimeUtilities.getNetTicks(dateTwoWeekBefore));
|
Assert.assertEquals(636358464000000000L, TimeUtils.getNetTicks(dateTwoWeekBefore));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = ParseException.class)
|
@Test(expected = ParseException.class)
|
||||||
public void getTicsStringInvalidFormatTest() throws Exception {
|
public void getTicsStringInvalidFormatTest() throws Exception {
|
||||||
Assert.assertEquals(636370560000000000L, TimeUtilities.getNetTicks("31.07.2017", "dd.MMM.yyyy"));
|
Assert.assertEquals(636370560000000000L, TimeUtils.getNetTicks("31.07.2017", "dd.MMM.yyyy"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getTicsStringFormatTest() throws Exception {
|
public void getTicsStringFormatTest() throws Exception {
|
||||||
Assert.assertEquals(636370560000000000L, TimeUtilities.getNetTicks("31.07.2017", "dd.MM.yyyy"));
|
Assert.assertEquals(636370560000000000L, TimeUtils.getNetTicks("31.07.2017", "dd.MM.yyyy"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getTicsStringTest() throws Exception {
|
public void getTicsStringTest() throws Exception {
|
||||||
Assert.assertEquals(636370560000000000L, TimeUtilities.getNetTicks("31.07.2017"));
|
Assert.assertEquals(636370560000000000L, TimeUtils.getNetTicks("31.07.2017"));
|
||||||
Assert.assertEquals(636334272000000000L, TimeUtilities.getNetTicks("19.06.2017"));
|
Assert.assertEquals(636334272000000000L, TimeUtils.getNetTicks("19.06.2017"));
|
||||||
Assert.assertEquals(636189120000000000L, TimeUtilities.getNetTicks("02.01.2017"));
|
Assert.assertEquals(636189120000000000L, TimeUtils.getNetTicks("02.01.2017"));
|
||||||
Assert.assertEquals(636080256000000000L, TimeUtilities.getNetTicks("29.08.2016"));
|
Assert.assertEquals(636080256000000000L, TimeUtils.getNetTicks("29.08.2016"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -53,6 +53,6 @@ public class TimeUtilitiesTest {
|
|||||||
format.setTimeZone(TimeZone.getTimeZone("UTC"));
|
format.setTimeZone(TimeZone.getTimeZone("UTC"));
|
||||||
Date date = format.parse("31.07.2017");
|
Date date = format.parse("31.07.2017");
|
||||||
|
|
||||||
Assert.assertEquals(date, TimeUtilities.getDate(636370560000000000L));
|
Assert.assertEquals(date, TimeUtils.getDate(636370560000000000L));
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user