1
0
mirror of https://github.com/wulkanowy/wulkanowy.git synced 2024-09-20 00:49:10 -05:00

Prepare app for MVP (#40)

This commit is contained in:
Rafał Borcz 2018-01-02 21:55:58 +01:00 committed by Mikołaj Pich
parent 844230956a
commit 7e6a73d1f3
69 changed files with 455 additions and 442 deletions

View File

@ -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

View File

@ -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'

View File

@ -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();

View File

@ -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() {

View File

@ -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;

View File

@ -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;
} }

View File

@ -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;

View File

@ -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() {

View File

@ -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() {

View File

@ -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();
}
}

View File

@ -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

View File

@ -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

View File

@ -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());

View File

@ -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);

View File

@ -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();
} }
} }

View File

@ -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();
}
}

View File

@ -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;

View File

@ -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;

View File

@ -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"

View File

@ -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();
if (BuildConfig.DEBUG) {
enableDebugLog(); enableDebugLog();
}
DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(this, "wulkanowy-database"); DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(this, "wulkanowy-db");
Database database = devOpenHelper.getWritableDb();
daoSession = new DaoMaster(database).newSession(); 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);

View File

@ -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 {

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;
}
}

View File

@ -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);

View File

@ -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);

View File

@ -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 {

View File

@ -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 {

View File

@ -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<>();

View File

@ -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 {

View File

@ -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) {

View File

@ -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());

View File

@ -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());
} }
} }

View File

@ -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);
} }
} }
} }

View File

@ -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(

View File

@ -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();

View File

@ -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;
} }
} }

View File

@ -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> {

View File

@ -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 {

View File

@ -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;
} }
} }

View File

@ -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> {

View File

@ -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 {

View File

@ -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);
} }
} }

View File

@ -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);
} }

View File

@ -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> {

View File

@ -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> {

View File

@ -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;
}
}
}

View File

@ -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;
}
}

View File

@ -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 {

View File

@ -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");
} }

View File

@ -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;
} }

View File

@ -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);
}
}
}

View File

@ -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();
}
}

View 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;
}
}

View File

@ -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");
} }

View File

@ -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 {

View File

@ -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");

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.security; package io.github.wulkanowy.utils.security;
import android.annotation.TargetApi; import android.annotation.TargetApi;

View File

@ -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;

View File

@ -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 {

View File

@ -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 {

View File

@ -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());
} }

View File

@ -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 {

View File

@ -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));
} }
} }

View File

@ -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));
} }
} }