renaming PersonalApp -> VehicleOwner (package personalapp -> vehown);
Subscribe DTCs
This commit is contained in:
parent
63230ce3c8
commit
a346f753d1
|
|
@ -10,7 +10,7 @@ android {
|
|||
exclude 'META-INF/NOTICE.txt'
|
||||
}
|
||||
defaultConfig {
|
||||
applicationId "eu.csc.personalapp"
|
||||
applicationId "eu.csc.vehown"
|
||||
minSdkVersion 26
|
||||
targetSdkVersion 30
|
||||
versionCode 1
|
||||
|
|
@ -79,15 +79,15 @@ dependencies {
|
|||
implementation 'com.google.android.material:material:1.3.0'
|
||||
implementation 'androidx.annotation:annotation:1.2.0'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
|
||||
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.2.0'
|
||||
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0'
|
||||
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.3.1'
|
||||
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1'
|
||||
implementation 'androidx.navigation:navigation-fragment:2.3.5'
|
||||
implementation 'androidx.navigation:navigation-ui:2.3.5'
|
||||
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
|
||||
implementation 'androidx.recyclerview:recyclerview:1.2.0'
|
||||
|
||||
|
||||
testImplementation 'junit:junit:4.+'
|
||||
testImplementation 'junit:junit:4.13.2'
|
||||
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
|
||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
|
||||
//Lombok
|
||||
|
|
@ -95,7 +95,7 @@ dependencies {
|
|||
annotationProcessor 'org.projectlombok:lombok:1.18.20'
|
||||
|
||||
androidTestImplementation 'org.projectlombok:lombok:1.18.20'
|
||||
compileOnly 'com.google.android.wearable:wearable:2.6.0'
|
||||
//compileOnly 'com.google.android.wearable:wearable:2.6.0'
|
||||
testAnnotationProcessor 'org.projectlombok:lombok:1.18.20'
|
||||
|
||||
//room
|
||||
|
|
@ -105,10 +105,10 @@ dependencies {
|
|||
// compile fileTree(dir: 'libs', include: '*.jar')
|
||||
//implementation project(":module:EventReportModule")
|
||||
//Retrofit
|
||||
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
|
||||
implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
|
||||
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
|
||||
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
|
||||
implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
|
||||
implementation 'io.reactivex.rxjava2:rxjava:2.1.13'
|
||||
implementation 'io.reactivex.rxjava2:rxjava:2.2.9'
|
||||
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.4.0'
|
||||
|
||||
//MQTT
|
||||
|
|
@ -123,3 +123,47 @@ dependencies {
|
|||
implementation files('libs/log4j-1.2.17.jar')
|
||||
}
|
||||
|
||||
task uploadPersonalConfigsBundle {
|
||||
doLast {
|
||||
println('uploadPersonalConfigBundle:')
|
||||
def id = '12345679'
|
||||
def personalization = 'none'
|
||||
def customization = 'none'
|
||||
def locales = 'en_GB,de_DE'
|
||||
def device = 'R58MC0YPL0B' // Smartphone-PCTL
|
||||
def andDest = '/sdcard/Android/data/eu.csc.vehown/files/1';
|
||||
def adb = 'D:/Dev/Android/sdk/platform-tools/adb.exe'
|
||||
def localMavenRepo = new File(System.getProperty('user.home'), '.m2/repository').absolutePath
|
||||
|
||||
//copy configuration files
|
||||
def openxavaConfigDir = "D:/Dev/Tools/openxava/data/config/"
|
||||
def dest = 'D:/Dev/project/VehicleOwner/app/config'
|
||||
delete fileTree(dir: dest, include: '*')
|
||||
println(' from ' + openxavaConfigDir)
|
||||
println(' to ' + dest)
|
||||
copy { from openxavaConfigDir into dest include 'obd-ii*.*gtdfsys' }
|
||||
copy { from openxavaConfigDir into dest include 'itsstation*.*gtdfsys' }
|
||||
|
||||
//create configBundle file
|
||||
dest = projectDir.getAbsolutePath() + '/config/configBundle'
|
||||
def jarfile = localMavenRepo + '/eu/csc/core/coregtdm/1.0/coregtdm-1.0.jar'
|
||||
println(' create ConfigBundle(' + id + ', ' + personalization + ', ' + customization + ', ' + locales + ')')
|
||||
println(' in ' + dest)
|
||||
exec {
|
||||
commandLine 'java', '-cp', jarfile, 'eu.csc.gtdm.ConfigBundle', id, personalization, customization, locales, dest
|
||||
}
|
||||
|
||||
//upload
|
||||
def source = projectDir.getAbsolutePath() + '/config'
|
||||
println(' to ' + andDest)
|
||||
exec {
|
||||
executable adb
|
||||
args('-s', device, 'shell', 'rm', '-f', andDest + '/config/*')
|
||||
}
|
||||
exec {
|
||||
executable adb
|
||||
args('-s', device, 'push', source, andDest)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,19 @@
|
|||
### config ####
|
||||
eu.csc=INFO
|
||||
eu.csc.comm.TcpClient=DEBUG
|
||||
eu.csc.ugp.UGPClient=DEBUG
|
||||
|
||||
#show UGP primitives (DEBUG=show content, INFO=show only primitive)
|
||||
UGP=DEBUG
|
||||
#show no UGP (WARN), UGP service name with length (INFO), UGP with ASN.1 byte code (DEBUG)
|
||||
UGP_asn1=WARN
|
||||
#set type of sockets (INFO=SSL, WARN=normal)
|
||||
UGP.sockets=WARN
|
||||
#show Messages of specific MessageType and higher (DEBUG=unknown, INFO=info, WARN=warning, ERROR=alarm)
|
||||
UGP.message=DEBUG
|
||||
#show Message cache (DEBUG) if Message.level fits
|
||||
UGP.message.cache=INFO
|
||||
#show Message trace (DEBUG) if Message.level fits
|
||||
UGP.message.trace=INFO
|
||||
#show no values (WARN), values (INFO), ASN.1 byte code (DEBUG) if Message (level) fits
|
||||
UGP.message.values=WARN
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
package eu.csc.personalapp.services.persistence;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
public class PersonalAppDatabaseTest {
|
||||
|
||||
@org.junit.Before
|
||||
public void setUp() throws Exception {
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp;
|
||||
package eu.csc.vehown;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
|
|
@ -21,6 +21,6 @@ public class ExampleInstrumentedTest {
|
|||
public void useAppContext() {
|
||||
// Context of the app under test.
|
||||
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
|
||||
assertEquals("eu.csc.personalapp", appContext.getPackageName());
|
||||
assertEquals("eu.csc.vehown", appContext.getPackageName());
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.ssv.personalapp.persistence;
|
||||
package eu.csc.vehown.services.persistence;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.services.persistence;
|
||||
package eu.csc.vehown.services.persistence;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
|
|
@ -6,13 +6,13 @@ import androidx.room.Room;
|
|||
import androidx.test.core.app.ApplicationProvider;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
|
||||
import eu.csc.personalapp.services.persistence.dao.LeaseEntityDao;
|
||||
import eu.csc.personalapp.services.persistence.dao.VehicleDao;
|
||||
import eu.csc.personalapp.services.persistence.dao.VehicleInfoDao;
|
||||
import eu.csc.personalapp.services.persistence.entity.lease.LeaseEntity;
|
||||
import eu.csc.personalapp.services.persistence.entity.vehicle.VehicleEntity;
|
||||
import eu.csc.personalapp.services.persistence.entity.vehicle.VehicleWithEvents;
|
||||
import eu.csc.personalapp.services.persistence.entity.vehicle.VehicleWithInfos;
|
||||
import eu.csc.vehown.services.persistence.dao.LeaseEntityDao;
|
||||
import eu.csc.vehown.services.persistence.dao.VehicleDao;
|
||||
import eu.csc.vehown.services.persistence.dao.VehicleInfoDao;
|
||||
import eu.csc.vehown.services.persistence.entity.lease.LeaseEntity;
|
||||
import eu.csc.vehown.services.persistence.entity.vehicle.VehicleEntity;
|
||||
import eu.csc.vehown.services.persistence.entity.vehicle.VehicleWithEvents;
|
||||
import eu.csc.vehown.services.persistence.entity.vehicle.VehicleWithInfos;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
|
@ -31,7 +31,7 @@ import static org.junit.Assert.assertThat;
|
|||
public class SimpleEntityReadWriteTest {
|
||||
private LeaseEntityDao leaseDao;
|
||||
private VehicleDao vehicleDao;
|
||||
private PersonalAppDatabase db;
|
||||
private VehicleOwnerDatabase db;
|
||||
|
||||
private static Logger logger = Logger.getLogger(SimpleEntityReadWriteTest.class.getSimpleName());
|
||||
private VehicleInfoDao vehicleInfoDao;
|
||||
|
|
@ -39,7 +39,7 @@ public class SimpleEntityReadWriteTest {
|
|||
@Before
|
||||
public void createDb() {
|
||||
Context context = ApplicationProvider.getApplicationContext();
|
||||
db = Room.inMemoryDatabaseBuilder(context, PersonalAppDatabase.class).build();
|
||||
db = Room.inMemoryDatabaseBuilder(context, VehicleOwnerDatabase.class).build();
|
||||
leaseDao = db.leaseDao();
|
||||
vehicleDao = db.vehicleDao();
|
||||
vehicleInfoDao = db.vehicleInfoDao();
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
package eu.csc.vehown.services.persistence;
|
||||
|
||||
public class VehicleOwnerDatabaseTest {
|
||||
|
||||
@org.junit.Before
|
||||
public void setUp() throws Exception {
|
||||
}
|
||||
}
|
||||
|
|
@ -1,12 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
package="eu.csc.personalapp">
|
||||
package="eu.csc.vehown">
|
||||
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK"/>
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18"
|
||||
tools:ignore="ScopedStorage"/>
|
||||
<!--uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18"
|
||||
tools:ignore="ScopedStorage"/-->
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
|
||||
|
||||
|
|
@ -19,7 +19,7 @@
|
|||
android:networkSecurityConfig="@xml/network_security_config"
|
||||
android:roundIcon="@mipmap/ic_launcher_round"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/Theme.PersonalApp"
|
||||
android:theme="@style/Theme.VehicleOwner"
|
||||
android:usesCleartextTraffic="true"
|
||||
tools:targetApi="n">
|
||||
|
||||
|
|
@ -36,14 +36,14 @@
|
|||
|
||||
|
||||
<receiver
|
||||
android:name=".broadcast.VehicleEventReceivedReceiver">
|
||||
android:name="eu.csc.vehown.broadcast.VehicleEventReceivedReceiver">
|
||||
<intent-filter>
|
||||
<action android:name="eu.csc.personalapp.EVENTINTENT"/>
|
||||
<action android:name="eu.csc.vehown.EVENTINTENT"/>
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
<receiver
|
||||
android:name=".broadcast.StartupReceiver"
|
||||
android:name="eu.csc.vehown.broadcast.StartupReceiver"
|
||||
android:enabled="true"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
|
|
@ -52,62 +52,62 @@
|
|||
</receiver>
|
||||
|
||||
<service
|
||||
android:name=".ugp.UGPService"
|
||||
android:name="eu.csc.vehown.ugp.UGPService"
|
||||
android:enabled="true"
|
||||
android:exported="true" />
|
||||
|
||||
<service
|
||||
android:name=".services.rest.UploadFileService"
|
||||
android:name="eu.csc.vehown.services.rest.UploadFileService"
|
||||
android:enabled="true"
|
||||
android:exported="true" />
|
||||
|
||||
<activity
|
||||
android:name=".ui.main.MainActivity"
|
||||
android:name="eu.csc.vehown.ui.main.MainActivity"
|
||||
android:label="@string/app_name"
|
||||
android:theme="@style/Theme.PersonalApp.NoActionBar">
|
||||
android:theme="@style/Theme.VehicleOwner.NoActionBar">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".ui.svi.RegisterSVIActivity"
|
||||
android:name="eu.csc.vehown.ui.svi.RegisterSVIActivity"
|
||||
android:label="@string/register_svi"
|
||||
android:theme="@style/Theme.PersonalApp.NoActionBar">
|
||||
android:theme="@style/Theme.VehicleOwner.NoActionBar">
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".ui.reportEvent.ReportEventActivity"
|
||||
android:theme="@style/Theme.PersonalApp.NoActionBar">
|
||||
android:name="eu.csc.vehown.ui.reportEvent.ReportEventActivity"
|
||||
android:theme="@style/Theme.VehicleOwner.NoActionBar">
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".ui.reportEvent.SelectEventsActivity"
|
||||
android:theme="@style/Theme.PersonalApp.NoActionBar">
|
||||
android:name="eu.csc.vehown.ui.reportEvent.SelectEventsActivity"
|
||||
android:theme="@style/Theme.VehicleOwner.NoActionBar">
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".ui.reportEvent.SelectRepairShopActivity"
|
||||
android:theme="@style/Theme.PersonalApp.NoActionBar">
|
||||
android:name="eu.csc.vehown.ui.reportEvent.SelectRepairShopActivity"
|
||||
android:theme="@style/Theme.VehicleOwner.NoActionBar">
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".ui.tp.TreatmentPlanActivity"
|
||||
android:theme="@style/Theme.PersonalApp.NoActionBar">
|
||||
android:name="eu.csc.vehown.ui.tp.TreatmentPlanActivity"
|
||||
android:theme="@style/Theme.VehicleOwner.NoActionBar">
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
android:name=".ui.FailureEvent.FailureEventActivity"
|
||||
android:name="eu.csc.vehown.ui.FailureEvent.FailureEventActivity"
|
||||
android:label="@string/title_activity_failure_event"
|
||||
android:theme="@style/Theme.PersonalApp.NoActionBar"/>
|
||||
android:theme="@style/Theme.VehicleOwner.NoActionBar"/>
|
||||
<activity
|
||||
android:name=".ui.registerCustomer.RegisterCustomerActivity"
|
||||
android:name="eu.csc.vehown.ui.registerCustomer.RegisterCustomerActivity"
|
||||
android:label="@string/title_activity_register_customer"
|
||||
android:theme="@style/Theme.PersonalApp.NoActionBar"/>
|
||||
android:theme="@style/Theme.VehicleOwner.NoActionBar"/>
|
||||
<activity
|
||||
android:name=".ui.login.LoginActivity"
|
||||
android:name="eu.csc.vehown.ui.login.LoginActivity"
|
||||
android:label="@string/app_name">
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".ui.test.Test3Activity"
|
||||
android:name="eu.csc.vehown.ui.test.Test3Activity"
|
||||
android:label="@string/title_activity_test3"
|
||||
android:theme="@style/Theme.PersonalApp.NoActionBar">
|
||||
android:theme="@style/Theme.VehicleOwner.NoActionBar">
|
||||
</activity>
|
||||
</application>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,15 +0,0 @@
|
|||
package eu.csc.personalapp.services.persistence;
|
||||
|
||||
import eu.csc.personalapp.data.model.Event;
|
||||
import eu.csc.personalapp.data.model.RepairShop;
|
||||
import eu.csc.personalapp.data.model.TreatmentPlan;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface IPersistenceClient {
|
||||
|
||||
Event[] getEvents();
|
||||
|
||||
TreatmentPlan getTreatmentPlan();
|
||||
|
||||
}
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
package eu.csc.personalapp.services.persistence;
|
||||
|
||||
import androidx.room.Database;
|
||||
import androidx.room.RoomDatabase;
|
||||
import eu.csc.personalapp.services.persistence.dao.*;
|
||||
import eu.csc.personalapp.services.persistence.entity.events.EventEntity;
|
||||
import eu.csc.personalapp.services.persistence.entity.lease.LeaseEntity;
|
||||
import eu.csc.personalapp.services.persistence.entity.lease.LeaseInfoEntity;
|
||||
import eu.csc.personalapp.services.persistence.entity.lease.LeaseSystemEntity;
|
||||
import eu.csc.personalapp.services.persistence.entity.vehicle.VehicleEntity;
|
||||
import eu.csc.personalapp.services.persistence.entity.vehicle.VehicleInfoEntity;
|
||||
import eu.csc.personalapp.services.persistence.entity.vehicle.VehicleSystemEntity;
|
||||
|
||||
@Database(entities = {
|
||||
EventEntity.class,
|
||||
VehicleEntity.class,
|
||||
VehicleInfoEntity.class,
|
||||
VehicleSystemEntity.class,
|
||||
|
||||
|
||||
LeaseEntity.class,
|
||||
LeaseSystemEntity.class,
|
||||
|
||||
LeaseInfoEntity.class,
|
||||
|
||||
},
|
||||
|
||||
exportSchema = true,
|
||||
version = 1)
|
||||
public abstract class PersonalAppDatabase extends RoomDatabase {
|
||||
|
||||
public static final String dbName = "personalAppDB";
|
||||
|
||||
public abstract EventDao eventDao();
|
||||
public abstract VehicleDao vehicleDao();
|
||||
public abstract LeaseEntityDao leaseDao();
|
||||
public abstract VehicleInfoDao vehicleInfoDao();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
package eu.csc.personalapp.services.persistence.dao;
|
||||
|
||||
import androidx.room.Dao;
|
||||
import eu.csc.personalapp.services.persistence.entity.events.EventEntity;
|
||||
|
||||
@Dao
|
||||
public interface EventDao extends BaseDao<EventEntity> {
|
||||
}
|
||||
|
|
@ -1,121 +0,0 @@
|
|||
package eu.csc.personalapp.ugp;
|
||||
|
||||
import android.app.*;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Color;
|
||||
import android.os.Build;
|
||||
import android.os.Handler;
|
||||
import android.os.IBinder;
|
||||
import android.os.Looper;
|
||||
import androidx.core.app.NotificationCompat;
|
||||
import asn.GTP.ActionType;
|
||||
import asn.GTP.SessionType;
|
||||
import eu.csc.comm.ThTcpServer;
|
||||
import eu.csc.data.IDataConsts;
|
||||
import eu.csc.gtdm.ConfigException;
|
||||
import eu.csc.gtdm.ConfigProvider;
|
||||
import eu.csc.gtdm.GTException;
|
||||
import eu.csc.gtp.IGTPCnfNegative;
|
||||
import eu.csc.log.CSCLog;
|
||||
import eu.csc.log.CSCLogFactory;
|
||||
import eu.csc.personalapp.ui.main.MainActivity;
|
||||
import eu.csc.personalapp.ui.main.dboard.DashboardFragment;
|
||||
import eu.csc.personalapp.ui.modal.Helper;
|
||||
import eu.csc.ugp.UGPClient;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public class UGPService extends Service implements IDataConsts, Runnable {
|
||||
|
||||
public static final String HOST = "host";
|
||||
private static final String GT_SERVICE_CHANNEL = "GTServiceChannel";
|
||||
private static final CSCLog LOG = CSCLogFactory.getLog(UGPService.class);
|
||||
|
||||
private static NotificationChannel serviceChannel;
|
||||
|
||||
private String host;
|
||||
private final String certName;
|
||||
private final String leaseToken;
|
||||
private Handler handler;
|
||||
|
||||
public UGPService() {
|
||||
certName = "Diagnostic-OwnerInfo";
|
||||
leaseToken = "super-11112222";
|
||||
}
|
||||
|
||||
@Override
|
||||
public IBinder onBind(Intent intent) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int onStartCommand(Intent intent, int flags, int startId) {
|
||||
/*int ret = */super.onStartCommand(intent, flags, startId);
|
||||
host = intent.getStringExtra(HOST);
|
||||
|
||||
createNotificationChannel();
|
||||
Intent notificationIntent = new Intent(this, MainActivity.class);
|
||||
PendingIntent pendingIntent = PendingIntent.getActivity(this,0, notificationIntent, 0);
|
||||
Notification notification = new NotificationCompat.Builder(this, GT_SERVICE_CHANNEL)
|
||||
.setContentTitle("UGP Service")
|
||||
.setContentText("started")
|
||||
//.setSmallIcon(R.drawable.ic_running)
|
||||
.setContentIntent(pendingIntent)
|
||||
.build();
|
||||
startForeground(1, notification);
|
||||
new Thread(this, getClass().getSimpleName()).start();
|
||||
//do heavy work on a background thread
|
||||
//stopSelf();
|
||||
return START_NOT_STICKY; //TODO -> START_REDELIVER_INTENT
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
System.setProperty("gtdm.odp", this.getExternalFilesDir(null).getAbsolutePath());
|
||||
ConfigProvider cp = ConfigProvider.get();
|
||||
cp.readGeneralConfigs(false);
|
||||
File dirCerts = new File(cp.getDirCurrent(), "certs");
|
||||
UGPClient ugpClient = new UGPClient(dirCerts, certName, host, PORT_UGP, 0);
|
||||
ugpClient.startIt(null);
|
||||
handler = new Handler(Looper.getMainLooper());
|
||||
// try {
|
||||
// ugpClient.setNegativeCnf(negativeCnf);
|
||||
// //ugpClient.sendGetSupportedInfoReq("", DataFilter.stationunit_info_only, null, null, null, null, supportedInfoCnf);
|
||||
// //TODO ugpClient.sendManageSessionReq(SessionType.vehOwnAuth, ActionType.enable, leaseToken, null, manageSessionCnf);
|
||||
// } catch (GTException e) {
|
||||
// LOG.error(e.getMessage(), e);
|
||||
// }
|
||||
} catch (ConfigException e) { //| InterruptedException
|
||||
LOG.error(e.getMessage(), e.getCause());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
NsdHelper.unregisterListener(getApplicationContext());
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
private void createNotificationChannel() {
|
||||
if (serviceChannel == null) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
serviceChannel = new NotificationChannel(GT_SERVICE_CHANNEL,"GT Service Channel", NotificationManager.IMPORTANCE_DEFAULT);
|
||||
serviceChannel.setLightColor(Color.GREEN);
|
||||
NotificationManager manager = getSystemService(NotificationManager.class);
|
||||
manager.createNotificationChannel(serviceChannel);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private final IGTPCnfNegative negativeCnf = new IGTPCnfNegative() {
|
||||
@Override
|
||||
public void negativeCnf(Integer csn, String messageName, GTException e) {
|
||||
LOG.error(e.getMessage(), e);
|
||||
Helper.errorDialog(handler, null, e, leaveActivity);
|
||||
}
|
||||
};
|
||||
private final Helper.IDialogOkHandler leaveActivity = () -> {
|
||||
//TODO
|
||||
};
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.broadcast;
|
||||
package eu.csc.vehown.broadcast;
|
||||
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
|
|
@ -1,17 +1,16 @@
|
|||
package eu.csc.personalapp.broadcast;
|
||||
package eu.csc.vehown.broadcast;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.Toast;
|
||||
|
||||
public class VehicleEventReceivedReceiver extends BroadcastReceiver {
|
||||
|
||||
|
||||
public static final String EVENT_INTENT_NAME = "eu.csc.personalapp.EVENTINTENT";
|
||||
public static final String EVENT_INTENT_NAME = "eu.csc.vehown.EVENTINTENT";
|
||||
|
||||
|
||||
@Override
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
package eu.csc.personalapp.data;
|
||||
package eu.csc.vehown.data;
|
||||
|
||||
import eu.csc.personalapp.data.model.LoggedInUser;
|
||||
import eu.csc.vehown.data.model.LoggedInUser;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
package eu.csc.personalapp.data;
|
||||
package eu.csc.vehown.data;
|
||||
|
||||
import eu.csc.personalapp.data.model.LoggedInUser;
|
||||
import eu.csc.vehown.data.model.LoggedInUser;
|
||||
|
||||
/**
|
||||
* Class that requests authentication and user information from the remote data source and
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.data;
|
||||
package eu.csc.vehown.data;
|
||||
|
||||
/**
|
||||
* A generic class that holds a result success w/ data or an error exception.
|
||||
|
|
@ -1,6 +1,5 @@
|
|||
package eu.csc.personalapp.data.model;
|
||||
package eu.csc.vehown.data.model;
|
||||
|
||||
import eu.csc.personalapp.services.rest.data.ApiEventUploadRequest;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.data.model;
|
||||
package eu.csc.vehown.data.model;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.data.model;
|
||||
package eu.csc.vehown.data.model;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
|
@ -12,12 +12,17 @@ import java.text.DateFormat;
|
|||
@NoArgsConstructor
|
||||
public class Event implements Serializable {
|
||||
|
||||
private String id;
|
||||
private String name;
|
||||
private String description;
|
||||
private String ecu;
|
||||
private String vehicle;
|
||||
private long timestamp;
|
||||
public enum EventStatus { UNDEFINED, PERMANENT, PENDING, CONFIRMED }
|
||||
public enum EventSeverity { LOW, MEDIUM, HIGH }
|
||||
|
||||
private String id;
|
||||
private String name;
|
||||
private String description;
|
||||
private String ecu;
|
||||
private String vehicle;
|
||||
private long timestamp;
|
||||
private EventStatus status;
|
||||
private EventSeverity severity;
|
||||
|
||||
public Event(String name) {
|
||||
this.name = name;
|
||||
|
|
@ -30,13 +35,15 @@ public class Event implements Serializable {
|
|||
this.timestamp = timestamp;
|
||||
}
|
||||
|
||||
public Event(String id, String name, String description, String ecu, String vehicle, long timestamp) {
|
||||
public Event(String id, String name, String description, String ecu, String vehicle, long timestamp, EventStatus status, EventSeverity severity) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.description = description;
|
||||
this.ecu = ecu;
|
||||
this.vehicle = vehicle;
|
||||
this.timestamp = timestamp;
|
||||
this.status = status;
|
||||
this.severity = severity;
|
||||
}
|
||||
|
||||
public String toShortString(DateFormat dateFormat) {
|
||||
|
|
@ -45,13 +52,15 @@ public class Event implements Serializable {
|
|||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Event {" +
|
||||
return "Event{" +
|
||||
"id='" + id + '\'' +
|
||||
", name='" + name + '\'' +
|
||||
", description='" + description + '\'' +
|
||||
", ecu='" + ecu + '\'' +
|
||||
", vehicle='" + vehicle + '\'' +
|
||||
", timestamp=" + timestamp +
|
||||
", status=" + status +
|
||||
", severity=" + severity +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.data.model;
|
||||
package eu.csc.vehown.data.model;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.data.model;
|
||||
package eu.csc.vehown.data.model;
|
||||
|
||||
public interface ICustomer {
|
||||
|
||||
|
|
@ -1,6 +1,4 @@
|
|||
package eu.csc.personalapp.data.model;
|
||||
|
||||
import java.util.Set;
|
||||
package eu.csc.vehown.data.model;
|
||||
|
||||
public interface ICustomerVehicle {
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.data.model;
|
||||
package eu.csc.vehown.data.model;
|
||||
|
||||
public interface IEcu {
|
||||
String getId();
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.data.model;
|
||||
package eu.csc.vehown.data.model;
|
||||
|
||||
public interface IRepairShop {
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.data.model;
|
||||
package eu.csc.vehown.data.model;
|
||||
|
||||
public interface IVehicleSystem {
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.data.model;
|
||||
package eu.csc.vehown.data.model;
|
||||
|
||||
|
||||
import lombok.Getter;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.data.model;
|
||||
package eu.csc.vehown.data.model;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.data.model;
|
||||
package eu.csc.vehown.data.model;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.data.model;
|
||||
package eu.csc.vehown.data.model;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.services;
|
||||
package eu.csc.vehown.services;
|
||||
|
||||
import android.app.IntentService;
|
||||
import android.content.Intent;
|
||||
|
|
@ -18,13 +18,13 @@ public class LocalDataServiceIntent extends IntentService {
|
|||
|
||||
// TODO: Rename actions, choose action names that describe tasks that this
|
||||
// IntentService can perform, e.g. ACTION_FETCH_NEW_ITEMS
|
||||
private static final String ACTION_FOO = "eu.csc.personalapp.services.rest.action.FOO";
|
||||
private static final String ACTION_BAZ = "eu.csc.personalapp.services.rest.action.BAZ";
|
||||
private static final String ACTION_FOO = "eu.csc.vehown.services.rest.action.FOO";
|
||||
private static final String ACTION_BAZ = "eu.csc.vehown.services.rest.action.BAZ";
|
||||
|
||||
|
||||
// TODO: Rename parameters
|
||||
private static final String EXTRA_PARAM1 = "eu.csc.personalapp.services.rest.extra.PARAM1";
|
||||
private static final String EXTRA_PARAM2 = "eu.csc.personalapp.services.rest.extra.PARAM2";
|
||||
private static final String EXTRA_PARAM1 = "eu.csc.vehown.services.rest.extra.PARAM1";
|
||||
private static final String EXTRA_PARAM2 = "eu.csc.vehown.services.rest.extra.PARAM2";
|
||||
private static String TAG = LocalDataServiceIntent.class.getSimpleName();
|
||||
|
||||
private static final Random random = new Random();
|
||||
|
|
@ -1,14 +1,13 @@
|
|||
package eu.csc.personalapp.services;
|
||||
package eu.csc.vehown.services;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.Log;
|
||||
import eu.csc.personalapp.data.model.Event;
|
||||
import eu.csc.personalapp.data.model.IRepairShop;
|
||||
import eu.csc.personalapp.data.model.RepairShop;
|
||||
import eu.csc.personalapp.services.persistence.ExampleDataClient;
|
||||
import eu.csc.personalapp.services.persistence.PersistenceFactory;
|
||||
import eu.csc.personalapp.services.persistence.entity.lease.LeaseEntity;
|
||||
import eu.csc.personalapp.services.rest.data.GrantedLeaseResponse;
|
||||
import eu.csc.vehown.data.model.IRepairShop;
|
||||
import eu.csc.vehown.data.model.RepairShop;
|
||||
import eu.csc.vehown.services.persistence.ExampleDataClient;
|
||||
import eu.csc.vehown.services.persistence.PersistenceFactory;
|
||||
import eu.csc.vehown.services.persistence.entity.lease.LeaseEntity;
|
||||
import eu.csc.vehown.services.rest.data.GrantedLeaseResponse;
|
||||
import lombok.var;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
|
@ -1,13 +1,4 @@
|
|||
package eu.csc.personalapp.services.mqtt;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
|
||||
import java.net.URISyntaxException;
|
||||
import java.security.KeyManagementException;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.util.concurrent.BlockingDeque;
|
||||
import java.util.concurrent.LinkedBlockingDeque;
|
||||
package eu.csc.vehown.services.mqtt;
|
||||
|
||||
public abstract class Constants {
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.services.mqtt;
|
||||
package eu.csc.vehown.services.mqtt;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
|
|
@ -6,8 +6,8 @@ import android.util.Log;
|
|||
|
||||
import com.rabbitmq.client.*;
|
||||
|
||||
import eu.csc.personalapp.services.notifications.NotificationService;
|
||||
import eu.csc.personalapp.services.persistence.ExampleDataClient;
|
||||
import eu.csc.vehown.services.notifications.NotificationService;
|
||||
import eu.csc.vehown.services.persistence.ExampleDataClient;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.services.mqtt;
|
||||
package eu.csc.vehown.services.mqtt;
|
||||
|
||||
import com.rabbitmq.client.Channel;
|
||||
import com.rabbitmq.client.Connection;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.services.notifications;
|
||||
package eu.csc.vehown.services.notifications;
|
||||
|
||||
import android.app.*;
|
||||
import android.content.Context;
|
||||
|
|
@ -7,12 +7,15 @@ import android.os.Build;
|
|||
import android.util.Log;
|
||||
import androidx.core.app.NotificationCompat;
|
||||
import androidx.core.app.NotificationManagerCompat;
|
||||
import eu.csc.personalapp.R;
|
||||
import eu.csc.personalapp.data.model.Event;
|
||||
import eu.csc.personalapp.data.model.TreatmentPlan;
|
||||
import eu.csc.personalapp.services.persistence.ExampleDataClient;
|
||||
import eu.csc.personalapp.ui.reportEvent.ReportEventActivity;
|
||||
import eu.csc.personalapp.ui.tp.TreatmentPlanActivity;
|
||||
import eu.csc.log.CSCLog;
|
||||
import eu.csc.log.CSCLogFactory;
|
||||
import eu.csc.vehown.R;
|
||||
import eu.csc.vehown.data.model.Event;
|
||||
import eu.csc.vehown.data.model.TreatmentPlan;
|
||||
import eu.csc.vehown.services.persistence.ExampleDataClient;
|
||||
import eu.csc.vehown.ui.main.MainActivity;
|
||||
import eu.csc.vehown.ui.reportEvent.ReportEventActivity;
|
||||
import eu.csc.vehown.ui.tp.TreatmentPlanActivity;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Arrays;
|
||||
|
|
@ -24,12 +27,14 @@ public class NotificationService {
|
|||
|
||||
public static final String INTENT_EVENT_KEY = "event";
|
||||
public static final String TREATMENTPLAN_KEY = "THE_PLAN";
|
||||
private static final String EVENT_CHANNEL = "EventCannel";
|
||||
private static final String INFO_CHANNEL = "InfoCannel";
|
||||
private static final String EVENT_CHANNEL = "EventChannel";
|
||||
private static final String INFO_CHANNEL = "InfoChannel";
|
||||
private static final String UGP_SERVICE_CHANNEL = "UGPServiceChannel";
|
||||
private static final int EVENT_NOTIFICATION_ID = 142;
|
||||
private static final int TREATMENTPLAN_NOTIFICATION_ID = 421;
|
||||
|
||||
private static final String TAG = NotificationService.class.getSimpleName();
|
||||
//private static final String TAG = NotificationService.class.getSimpleName();
|
||||
private static final CSCLog LOG = CSCLogFactory.getLog(NotificationService.class);
|
||||
|
||||
private static final SimpleDateFormat dateFormat;
|
||||
|
||||
|
|
@ -45,13 +50,19 @@ public class NotificationService {
|
|||
// Create the NotificationChannel, but only on API 26+ because the NotificationChannel class is new and not in the support library
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
NotificationManager notificationManager = context.getSystemService(NotificationManager.class);
|
||||
|
||||
NotificationChannel eventChannel = new NotificationChannel(EVENT_CHANNEL, context.getString(R.string.event_channel_name), NotificationManager.IMPORTANCE_HIGH);
|
||||
eventChannel.setDescription(context.getString(R.string.event_channel_description));
|
||||
// Register the channel with the system; you can't change the importance or other notification behaviors after this
|
||||
notificationManager.createNotificationChannel(eventChannel);
|
||||
|
||||
NotificationChannel infoChannel = new NotificationChannel(INFO_CHANNEL, context.getString(R.string.info_channel_name), NotificationManager.IMPORTANCE_HIGH);
|
||||
infoChannel.setDescription(context.getString(R.string.info_channel_description));
|
||||
notificationManager.createNotificationChannels(Arrays.asList(eventChannel, infoChannel));
|
||||
|
||||
NotificationChannel ugpServiceChannel = new NotificationChannel(UGP_SERVICE_CHANNEL,context.getString(R.string.ugp_service_channel_name), NotificationManager.IMPORTANCE_DEFAULT);
|
||||
ugpServiceChannel.setDescription(context.getString(R.string.ugp_service_channel_description));
|
||||
//ugpServiceChannel.setLightColor(Color.GREEN);
|
||||
|
||||
notificationManager.createNotificationChannels(Arrays.asList(eventChannel, infoChannel, ugpServiceChannel));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -60,7 +71,8 @@ public class NotificationService {
|
|||
}
|
||||
|
||||
public void createEventsNotification(Context context, Event[] events) {
|
||||
Log.d(TAG, "ENTERED createEventsNotification");
|
||||
LOG.debug("createEventsNotification " + events.length);
|
||||
//Log.d(TAG, "ENTERED createEventsNotification");
|
||||
|
||||
StringBuilder sbNames = new StringBuilder();
|
||||
StringBuilder sbEvents = new StringBuilder();
|
||||
|
|
@ -73,8 +85,7 @@ public class NotificationService {
|
|||
Intent showFullQuoteIntent = new Intent(context, ReportEventActivity.class);
|
||||
showFullQuoteIntent.putExtra(INTENT_EVENT_KEY, events); //ToDo refresh Date ?
|
||||
|
||||
int uniqueInt = (int) (System.currentTimeMillis() & 0xfffffff);
|
||||
PendingIntent pendingIntent = PendingIntent.getActivity(context, uniqueInt, showFullQuoteIntent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
PendingIntent pendingIntent = PendingIntent.getActivity(context, getUniqueInt(), showFullQuoteIntent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
|
||||
Notification notification = new NotificationCompat.Builder(context, EVENT_CHANNEL)
|
||||
.setSmallIcon(R.drawable.ic_dlg_warning)
|
||||
|
|
@ -91,7 +102,8 @@ public class NotificationService {
|
|||
}
|
||||
|
||||
public void createTreatmentPlanNotification(Context context, TreatmentPlan treatmentPlan) {
|
||||
Log.d(TAG, "ENTERED sendNotification");
|
||||
LOG.debug("createTreatmentPlanNotification " + treatmentPlan);
|
||||
//Log.d(TAG, "ENTERED createTreatmentPlanNotification");
|
||||
|
||||
Intent showFullQuoteIntent = new Intent(context, TreatmentPlanActivity.class);
|
||||
showFullQuoteIntent.putExtra(TREATMENTPLAN_KEY, ExampleDataClient.getExampleTreatmentPlan());
|
||||
|
|
@ -104,8 +116,7 @@ public class NotificationService {
|
|||
|
||||
// both of these approaches now work: FLAG_CANCEL, FLAG_UPDATE; the uniqueInt may be the real solution.
|
||||
//PendingIntent pendingIntent = PendingIntent.getActivity(this, uniqueInt, showFullQuoteIntent, PendingIntent.FLAG_CANCEL_CURRENT);
|
||||
int uniqueInt = (int) (System.currentTimeMillis() & 0xfffffff);
|
||||
PendingIntent pendingIntent = PendingIntent.getActivity(context, uniqueInt, showFullQuoteIntent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
PendingIntent pendingIntent = PendingIntent.getActivity(context, getUniqueInt(), showFullQuoteIntent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
|
||||
Notification notification = new NotificationCompat.Builder(context, INFO_CHANNEL)
|
||||
.setSmallIcon(R.drawable.ic_dlg_info)
|
||||
|
|
@ -121,4 +132,25 @@ public class NotificationService {
|
|||
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
|
||||
notificationManager.notify(TREATMENTPLAN_NOTIFICATION_ID, notification);
|
||||
}
|
||||
|
||||
public void createUGPServiceNotification(Context context, Service service) {
|
||||
LOG.debug("createUGPServiceNotification");
|
||||
//Log.d(TAG, "ENTERED createUGPServiceNotification");
|
||||
|
||||
Intent notificationIntent = new Intent(context, MainActivity.class);
|
||||
PendingIntent pendingIntent = PendingIntent.getActivity(context, getUniqueInt(), notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
|
||||
Notification notification = new NotificationCompat.Builder(context, UGP_SERVICE_CHANNEL)
|
||||
.setSmallIcon(R.drawable.ic_dlg_info)
|
||||
.setContentTitle("UGP Service")
|
||||
.setContentText("started")
|
||||
.setContentIntent(pendingIntent)
|
||||
.build();
|
||||
service.startForeground(1, notification);
|
||||
|
||||
}
|
||||
|
||||
private int getUniqueInt() {
|
||||
return (int) (System.currentTimeMillis() & 0xfffffff);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package eu.csc.personalapp.services.persistence;
|
||||
package eu.csc.vehown.services.persistence;
|
||||
|
||||
import asn.GTLease.Lease;
|
||||
import eu.csc.personalapp.data.model.*;
|
||||
import eu.csc.vehown.data.model.*;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
|
|
@ -20,8 +20,8 @@ public class ExampleDataClient implements IPersistenceClient {
|
|||
public static final VehicleSystem System_WiFi = new VehicleSystem("wifi", "WiFi");
|
||||
public static final LoggedInUser exampleLoggedInUser = new LoggedInUser();
|
||||
|
||||
public static final Event exampleEvent1 = new Event("1", "P0100", "Mass or Volume Air Flow 'A' Circuit", "OBDII1", "Dodge Charger '265G21'", 1620649836986L);
|
||||
public static final Event exampleEvent2 = new Event("2", "P0200", "Injector Circuit/Open", "OBDII1", "Dodge Charger '265G21'", 1620649836987L);
|
||||
public static final Event exampleEvent1 = new Event("1", "P0100", "Mass or Volume Air Flow 'A' Circuit", "OBDII1", "Dodge Charger '265G21'", 1620649836986L, Event.EventStatus.CONFIRMED, Event.EventSeverity.HIGH);
|
||||
public static final Event exampleEvent2 = new Event("2", "P0200", "Injector Circuit/Open", "OBDII1", "Dodge Charger '265G21'", 1620649836987L, Event.EventStatus.CONFIRMED, Event.EventSeverity.HIGH);
|
||||
|
||||
public static final IRepairShop RepairShop_DIAutoService = new RepairShop("D.I. Auto Service", "4263 Boulder Hwy. Las Vegas, NV", "https://www.diautorepair.com/", "dias@x.com", "1234567");
|
||||
|
||||
|
|
@ -43,13 +43,13 @@ public class ExampleDataClient implements IPersistenceClient {
|
|||
customerVehicle.systems.add(System_ABS);
|
||||
customerVehicle.systems.add(System_WiFi);
|
||||
|
||||
Event e3 = new Event("3", "P0300", "Random/Multiple Cylinder Misfire Detected", "OBDII1", "Dodge Charger '265G21'", 1620649836988L);
|
||||
Event e4 = new Event("4", "U0100", "Lost Communication With ECM/PCM 'A'", "OBDII1", "Dodge Charger '265G21'", 1620649836991L);
|
||||
Event e5 = new Event("5", "P0101", "Mass or Volume Air Flow 'A' Circuit Range/Performance", "OBDII2", "Dodge Charger '265G21'", 1620649836992L);
|
||||
Event e6 = new Event("6", "P0107", "Manifold Absolute Pressure/Barometric Pressure Circuit Low", "OBDII1", "Dodge Charger '265G21'", 1620649837049L);
|
||||
Event e7 = new Event("7", "P0207", "Injector Circuit/Open - Cylinder 7", "OBDII1", "Dodge Charger '265G21'", 1620649837050L);
|
||||
Event e8 = new Event("8", "P0307", "Cylinder 7 Misfire Detected", "OBDII1", "Dodge Charger '265G21'", 1620649837051L);
|
||||
Event e9 = new Event("9", "P0102", "Mass or Volume Air Flow 'A' Circuit Low", "OBDII2", "Dodge Charger '265G21'", 1620649837053L);
|
||||
Event e3 = new Event("3", "P0300", "Random/Multiple Cylinder Misfire Detected", "OBDII1", "Dodge Charger '265G21'", 1620649836988L, Event.EventStatus.PENDING, Event.EventSeverity.MEDIUM);
|
||||
Event e4 = new Event("4", "U0100", "Lost Communication With ECM/PCM 'A'", "OBDII1", "Dodge Charger '265G21'", 1620649836991L, Event.EventStatus.PERMANENT, Event.EventSeverity.LOW);
|
||||
Event e5 = new Event("5", "P0101", "Mass or Volume Air Flow 'A' Circuit Range/Performance", "OBDII2", "Dodge Charger '265G21'", 1620649836992L, Event.EventStatus.PERMANENT, Event.EventSeverity.LOW);
|
||||
Event e6 = new Event("6", "P0107", "Manifold Absolute Pressure/Barometric Pressure Circuit Low", "OBDII1", "Dodge Charger '265G21'", 1620649837049L, Event.EventStatus.PERMANENT, Event.EventSeverity.LOW);
|
||||
Event e7 = new Event("7", "P0207", "Injector Circuit/Open - Cylinder 7", "OBDII1", "Dodge Charger '265G21'", 1620649837050L, Event.EventStatus.PERMANENT, Event.EventSeverity.LOW);
|
||||
Event e8 = new Event("8", "P0307", "Cylinder 7 Misfire Detected", "OBDII1", "Dodge Charger '265G21'", 1620649837051L, Event.EventStatus.PERMANENT, Event.EventSeverity.LOW);
|
||||
Event e9 = new Event("9", "P0102", "Mass or Volume Air Flow 'A' Circuit Low", "OBDII2", "Dodge Charger '265G21'", 1620649837053L, Event.EventStatus.PERMANENT, Event.EventSeverity.LOW);
|
||||
exampleEvents1 = new Event[] {exampleEvent1, exampleEvent2, e3, e4 };
|
||||
exampleEvents2 = new Event[] {exampleEvent1, exampleEvent2, e3, e4, e5, e6, e7, e8, e9 };
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
package eu.csc.vehown.services.persistence;
|
||||
|
||||
import eu.csc.vehown.data.model.Event;
|
||||
import eu.csc.vehown.data.model.TreatmentPlan;
|
||||
|
||||
public interface IPersistenceClient {
|
||||
|
||||
Event[] getEvents();
|
||||
|
||||
TreatmentPlan getTreatmentPlan();
|
||||
|
||||
}
|
||||
|
|
@ -1,12 +1,10 @@
|
|||
package eu.csc.personalapp.services.persistence;
|
||||
package eu.csc.vehown.services.persistence;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.util.Log;
|
||||
import androidx.room.Room;
|
||||
import eu.csc.personalapp.services.persistence.entity.lease.LeaseEntity;
|
||||
|
||||
import static eu.csc.personalapp.services.persistence.PersonalAppDatabase.dbName;
|
||||
import static eu.csc.vehown.services.persistence.VehicleOwnerDatabase.dbName;
|
||||
|
||||
public class PersistenceFactory {
|
||||
|
||||
|
|
@ -16,9 +14,9 @@ public class PersistenceFactory {
|
|||
return new ExampleDataClient();
|
||||
}
|
||||
|
||||
public static PersonalAppDatabase generateDatabase(Context context){
|
||||
PersonalAppDatabase db = Room.databaseBuilder(context,
|
||||
PersonalAppDatabase.class, dbName).build();
|
||||
public static VehicleOwnerDatabase generateDatabase(Context context){
|
||||
VehicleOwnerDatabase db = Room.databaseBuilder(context,
|
||||
VehicleOwnerDatabase.class, dbName).build();
|
||||
|
||||
|
||||
return db;
|
||||
|
|
@ -31,7 +29,7 @@ public class PersistenceFactory {
|
|||
|
||||
Log.d(TAG, "START LOADING EXAMPLE DATA");
|
||||
try{
|
||||
PersonalAppDatabase database = generateDatabase(context);
|
||||
VehicleOwnerDatabase database = generateDatabase(context);
|
||||
database.vehicleDao().deleteAll();
|
||||
|
||||
}
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
package eu.csc.personalapp.services.persistence;
|
||||
package eu.csc.vehown.services.persistence;
|
||||
|
||||
import eu.csc.personalapp.services.persistence.entity.lease.LeaseEntity;
|
||||
import eu.csc.personalapp.services.persistence.entity.vehicle.VehicleEntity;
|
||||
import eu.csc.personalapp.services.persistence.entity.vehicle.VehicleInfoEntity;
|
||||
import eu.csc.vehown.services.persistence.entity.lease.LeaseEntity;
|
||||
import eu.csc.vehown.services.persistence.entity.vehicle.VehicleEntity;
|
||||
import eu.csc.vehown.services.persistence.entity.vehicle.VehicleInfoEntity;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
package eu.csc.vehown.services.persistence;
|
||||
|
||||
import androidx.room.Database;
|
||||
import androidx.room.RoomDatabase;
|
||||
import eu.csc.vehown.services.persistence.dao.*;
|
||||
import eu.csc.vehown.services.persistence.entity.events.EventEntity;
|
||||
import eu.csc.vehown.services.persistence.entity.lease.LeaseEntity;
|
||||
import eu.csc.vehown.services.persistence.entity.lease.LeaseInfoEntity;
|
||||
import eu.csc.vehown.services.persistence.entity.lease.LeaseSystemEntity;
|
||||
import eu.csc.vehown.services.persistence.entity.vehicle.VehicleEntity;
|
||||
import eu.csc.vehown.services.persistence.entity.vehicle.VehicleInfoEntity;
|
||||
import eu.csc.vehown.services.persistence.entity.vehicle.VehicleSystemEntity;
|
||||
|
||||
@Database(entities = {
|
||||
EventEntity.class,
|
||||
VehicleEntity.class,
|
||||
VehicleInfoEntity.class,
|
||||
VehicleSystemEntity.class,
|
||||
|
||||
|
||||
LeaseEntity.class,
|
||||
LeaseSystemEntity.class,
|
||||
|
||||
LeaseInfoEntity.class,
|
||||
|
||||
},
|
||||
|
||||
exportSchema = true,
|
||||
version = 1)
|
||||
|
||||
public abstract class VehicleOwnerDatabase extends RoomDatabase {
|
||||
|
||||
public static final String dbName = "vehicleOwnerDB";
|
||||
|
||||
public abstract EventDao eventDao();
|
||||
public abstract VehicleDao vehicleDao();
|
||||
public abstract LeaseEntityDao leaseDao();
|
||||
public abstract VehicleInfoDao vehicleInfoDao();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.services.persistence.converter;
|
||||
package eu.csc.vehown.services.persistence.converter;
|
||||
|
||||
import androidx.room.TypeConverter;
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.services.persistence.converter;
|
||||
package eu.csc.vehown.services.persistence.converter;
|
||||
|
||||
import androidx.room.TypeConverter;
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.services.persistence.dao;
|
||||
package eu.csc.vehown.services.persistence.dao;
|
||||
|
||||
import androidx.room.Dao;
|
||||
import androidx.room.Delete;
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
package eu.csc.vehown.services.persistence.dao;
|
||||
|
||||
import androidx.room.Dao;
|
||||
import eu.csc.vehown.services.persistence.entity.events.EventEntity;
|
||||
|
||||
@Dao
|
||||
public interface EventDao extends BaseDao<EventEntity> {
|
||||
}
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
package eu.csc.personalapp.services.persistence.dao;
|
||||
package eu.csc.vehown.services.persistence.dao;
|
||||
|
||||
import androidx.room.Dao;
|
||||
import androidx.room.Query;
|
||||
import eu.csc.personalapp.services.persistence.entity.lease.LeaseEntity;
|
||||
import eu.csc.personalapp.services.persistence.entity.lease.LeaseWithSystems;
|
||||
import eu.csc.vehown.services.persistence.entity.lease.LeaseEntity;
|
||||
import eu.csc.vehown.services.persistence.entity.lease.LeaseWithSystems;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.services.persistence.dao;
|
||||
package eu.csc.vehown.services.persistence.dao;
|
||||
|
||||
|
||||
import androidx.room.Dao;
|
||||
|
|
@ -6,10 +6,10 @@ import androidx.room.Delete;
|
|||
import androidx.room.Insert;
|
||||
import androidx.room.Query;
|
||||
import androidx.room.Transaction;
|
||||
import eu.csc.personalapp.services.persistence.entity.vehicle.VehicleEntity;
|
||||
import eu.csc.personalapp.services.persistence.entity.vehicle.VehicleWithEvents;
|
||||
import eu.csc.personalapp.services.persistence.entity.vehicle.VehicleWithInfos;
|
||||
import eu.csc.personalapp.services.persistence.entity.vehicle.VehicleWithSystems;
|
||||
import eu.csc.vehown.services.persistence.entity.vehicle.VehicleEntity;
|
||||
import eu.csc.vehown.services.persistence.entity.vehicle.VehicleWithEvents;
|
||||
import eu.csc.vehown.services.persistence.entity.vehicle.VehicleWithInfos;
|
||||
import eu.csc.vehown.services.persistence.entity.vehicle.VehicleWithSystems;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.services.persistence.dao;
|
||||
package eu.csc.vehown.services.persistence.dao;
|
||||
|
||||
import androidx.room.Dao;
|
||||
import androidx.room.Insert;
|
||||
|
|
@ -6,7 +6,7 @@ import androidx.room.Query;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
import eu.csc.personalapp.services.persistence.entity.vehicle.VehicleInfoEntity;
|
||||
import eu.csc.vehown.services.persistence.entity.vehicle.VehicleInfoEntity;
|
||||
|
||||
@Dao
|
||||
public interface VehicleInfoDao {
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.services.persistence.entity;
|
||||
package eu.csc.vehown.services.persistence.entity;
|
||||
|
||||
import androidx.room.PrimaryKey;
|
||||
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
package eu.csc.personalapp.services.persistence.entity.events;
|
||||
package eu.csc.vehown.services.persistence.entity.events;
|
||||
|
||||
import androidx.room.*;
|
||||
import eu.csc.personalapp.services.persistence.converter.TimestampConverter;
|
||||
import eu.csc.personalapp.services.persistence.entity.vehicle.VehicleEntity;
|
||||
import eu.csc.vehown.services.persistence.converter.TimestampConverter;
|
||||
import eu.csc.vehown.services.persistence.entity.vehicle.VehicleEntity;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
package eu.csc.personalapp.services.persistence.entity.lease;
|
||||
package eu.csc.vehown.services.persistence.entity.lease;
|
||||
|
||||
import androidx.room.ColumnInfo;
|
||||
import androidx.room.Entity;
|
||||
import androidx.room.PrimaryKey;
|
||||
import androidx.room.TypeConverters;
|
||||
import eu.csc.personalapp.services.persistence.converter.TimestampConverter;
|
||||
import eu.csc.vehown.services.persistence.converter.TimestampConverter;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
package eu.csc.personalapp.services.persistence.entity.lease;
|
||||
package eu.csc.vehown.services.persistence.entity.lease;
|
||||
|
||||
import androidx.room.Entity;
|
||||
import androidx.room.ForeignKey;
|
||||
import eu.csc.personalapp.services.persistence.entity.BaseIdentifiable;
|
||||
import eu.csc.vehown.services.persistence.entity.BaseIdentifiable;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
package eu.csc.personalapp.services.persistence.entity.lease;
|
||||
package eu.csc.vehown.services.persistence.entity.lease;
|
||||
|
||||
import androidx.room.Entity;
|
||||
import androidx.room.ForeignKey;
|
||||
|
||||
import eu.csc.personalapp.services.persistence.entity.BaseIdentifiable;
|
||||
import eu.csc.vehown.services.persistence.entity.BaseIdentifiable;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.services.persistence.entity.lease;
|
||||
package eu.csc.vehown.services.persistence.entity.lease;
|
||||
|
||||
public enum LeaseTransferStatus {
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.services.persistence.entity.lease;
|
||||
package eu.csc.vehown.services.persistence.entity.lease;
|
||||
|
||||
import androidx.room.Embedded;
|
||||
import androidx.room.Relation;
|
||||
|
|
@ -1,8 +1,7 @@
|
|||
package eu.csc.personalapp.services.persistence.entity.lease;
|
||||
package eu.csc.vehown.services.persistence.entity.lease;
|
||||
|
||||
import androidx.room.Embedded;
|
||||
import androidx.room.Relation;
|
||||
import eu.csc.personalapp.services.persistence.entity.events.EventEntity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
package eu.csc.personalapp.services.persistence.entity.treatmentplan;
|
||||
package eu.csc.vehown.services.persistence.entity.treatmentplan;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.room.Entity;
|
||||
|
||||
import eu.csc.personalapp.services.persistence.entity.BaseIdentifiable;
|
||||
import eu.csc.vehown.services.persistence.entity.BaseIdentifiable;
|
||||
|
||||
|
||||
import lombok.Getter;
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
package eu.csc.personalapp.services.persistence.entity.treatmentplan;
|
||||
package eu.csc.vehown.services.persistence.entity.treatmentplan;
|
||||
|
||||
|
||||
import androidx.room.Entity;
|
||||
import eu.csc.personalapp.services.persistence.entity.BaseIdentifiable;
|
||||
import eu.csc.vehown.services.persistence.entity.BaseIdentifiable;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
package eu.csc.personalapp.services.persistence.entity.vehicle;
|
||||
package eu.csc.vehown.services.persistence.entity.vehicle;
|
||||
|
||||
import androidx.room.ColumnInfo;
|
||||
import androidx.room.Entity;
|
||||
import androidx.room.PrimaryKey;
|
||||
import androidx.room.TypeConverters;
|
||||
import eu.csc.personalapp.services.persistence.converter.TimestampConverter;
|
||||
import eu.csc.vehown.services.persistence.converter.TimestampConverter;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
package eu.csc.personalapp.services.persistence.entity.vehicle;
|
||||
package eu.csc.vehown.services.persistence.entity.vehicle;
|
||||
|
||||
import androidx.room.ColumnInfo;
|
||||
import androidx.room.Entity;
|
||||
import androidx.room.ForeignKey;
|
||||
|
||||
import eu.csc.personalapp.services.persistence.entity.BaseIdentifiable;
|
||||
import eu.csc.vehown.services.persistence.entity.BaseIdentifiable;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
package eu.csc.personalapp.services.persistence.entity.vehicle;
|
||||
package eu.csc.vehown.services.persistence.entity.vehicle;
|
||||
|
||||
import androidx.room.ColumnInfo;
|
||||
import androidx.room.Entity;
|
||||
import androidx.room.ForeignKey;
|
||||
import eu.csc.personalapp.services.persistence.entity.BaseIdentifiable;
|
||||
import eu.csc.vehown.services.persistence.entity.BaseIdentifiable;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
package eu.csc.personalapp.services.persistence.entity.vehicle;
|
||||
package eu.csc.vehown.services.persistence.entity.vehicle;
|
||||
|
||||
import androidx.room.Embedded;
|
||||
import androidx.room.Relation;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import eu.csc.personalapp.services.persistence.entity.events.EventEntity;
|
||||
import eu.csc.vehown.services.persistence.entity.events.EventEntity;
|
||||
|
||||
|
||||
public class VehicleWithEvents {
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.services.persistence.entity.vehicle;
|
||||
package eu.csc.vehown.services.persistence.entity.vehicle;
|
||||
|
||||
import androidx.room.Embedded;
|
||||
import androidx.room.Relation;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.services.persistence.entity.vehicle;
|
||||
package eu.csc.vehown.services.persistence.entity.vehicle;
|
||||
|
||||
import androidx.room.Embedded;
|
||||
import androidx.room.Relation;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
package eu.csc.personalapp.services.rest;
|
||||
package eu.csc.vehown.services.rest;
|
||||
|
||||
import eu.csc.personalapp.services.rest.data.*;
|
||||
import eu.csc.vehown.services.rest.data.*;
|
||||
import io.reactivex.Single;
|
||||
import okhttp3.ResponseBody;
|
||||
import retrofit2.Call;
|
||||
|
|
@ -22,7 +22,7 @@ public interface RetrofitApiClient {
|
|||
|
||||
|
||||
@POST("api/generateLease")
|
||||
Call<GrantedLeaseResponse> genereateLease(@Body GrantedLeaseRequest body);
|
||||
Call<GrantedLeaseResponse> generateLease(@Body GrantedLeaseRequest body);
|
||||
|
||||
@GET("api/treatmentproposal/{order}")
|
||||
Single<RepairShopTreatmentProposalResponse> getTreatmentProposal(String order);
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
package eu.csc.personalapp.services.rest;
|
||||
package eu.csc.vehown.services.rest;
|
||||
|
||||
import eu.csc.personalapp.services.serialization.JSONHelper;
|
||||
import eu.csc.vehown.services.serialization.JSONHelper;
|
||||
import retrofit2.Retrofit;
|
||||
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
|
||||
import retrofit2.converter.gson.GsonConverterFactory;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.services.rest;
|
||||
package eu.csc.vehown.services.rest;
|
||||
|
||||
import android.app.Service;
|
||||
import android.content.Intent;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.services.rest.data;
|
||||
package eu.csc.vehown.services.rest.data;
|
||||
|
||||
|
||||
import lombok.Getter;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.services.rest.data;
|
||||
package eu.csc.vehown.services.rest.data;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
|
@ -1,8 +1,7 @@
|
|||
package eu.csc.personalapp.services.rest.data;
|
||||
package eu.csc.vehown.services.rest.data;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.NonNull;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
|
@ -1,14 +1,13 @@
|
|||
package eu.csc.personalapp.services.rest.data;
|
||||
package eu.csc.vehown.services.rest.data;
|
||||
|
||||
import eu.csc.personalapp.data.model.ICustomer;
|
||||
import eu.csc.personalapp.data.model.ICustomerVehicle;
|
||||
import eu.csc.personalapp.data.model.IRepairShop;
|
||||
import eu.csc.personalapp.data.model.IVehicleSystem;
|
||||
import eu.csc.vehown.data.model.ICustomer;
|
||||
import eu.csc.vehown.data.model.ICustomerVehicle;
|
||||
import eu.csc.vehown.data.model.IRepairShop;
|
||||
import eu.csc.vehown.data.model.IVehicleSystem;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.services.rest.data;
|
||||
package eu.csc.vehown.services.rest.data;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.services.rest.data;
|
||||
package eu.csc.vehown.services.rest.data;
|
||||
|
||||
|
||||
import lombok.Getter;
|
||||
|
|
@ -1,9 +1,8 @@
|
|||
package eu.csc.personalapp.services.rest.data;
|
||||
package eu.csc.vehown.services.rest.data;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import retrofit2.http.GET;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
|
|
@ -1,9 +1,8 @@
|
|||
package eu.csc.personalapp.services.rest.data;
|
||||
package eu.csc.vehown.services.rest.data;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import eu.csc.personalapp.data.model.IAppointment;
|
||||
import eu.csc.personalapp.data.model.IVehicleSystem;
|
||||
import eu.csc.personalapp.data.model.TreatmentPlan;
|
||||
import eu.csc.vehown.data.model.IAppointment;
|
||||
import eu.csc.vehown.data.model.IVehicleSystem;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
|
@ -1,6 +1,5 @@
|
|||
package eu.csc.personalapp.services.rest.data;
|
||||
package eu.csc.vehown.services.rest.data;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.services.rest.data;
|
||||
package eu.csc.vehown.services.rest.data;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.services.serialization;
|
||||
package eu.csc.vehown.services.serialization;
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.Date;
|
||||
|
||||
|
|
@ -11,12 +11,6 @@ import com.google.gson.JsonParseException;
|
|||
import com.google.gson.JsonPrimitive;
|
||||
import com.google.gson.JsonSerializationContext;
|
||||
import com.google.gson.JsonSerializer;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
public class JSONHelper {
|
||||
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
package eu.csc.personalapp.services.storage;
|
||||
package eu.csc.vehown.services.storage;
|
||||
|
||||
import eu.csc.personalapp.data.model.LoggedInUser;
|
||||
import eu.csc.vehown.data.model.LoggedInUser;
|
||||
|
||||
public interface LocalStorageClient {
|
||||
|
||||
|
|
@ -1,13 +1,12 @@
|
|||
package eu.csc.personalapp.services.storage;
|
||||
package eu.csc.vehown.services.storage;
|
||||
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
|
||||
import eu.csc.personalapp.R;
|
||||
import eu.csc.personalapp.data.model.LoggedInUser;
|
||||
import eu.csc.personalapp.services.serialization.JSONHelper;
|
||||
import eu.csc.vehown.R;
|
||||
import eu.csc.vehown.data.model.LoggedInUser;
|
||||
import eu.csc.vehown.services.serialization.JSONHelper;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.services.storage;
|
||||
package eu.csc.vehown.services.storage;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.ugp;
|
||||
package eu.csc.vehown.ugp;
|
||||
|
||||
import android.content.Context;
|
||||
import android.net.nsd.NsdManager;
|
||||
|
|
@ -0,0 +1,164 @@
|
|||
package eu.csc.vehown.ugp;
|
||||
|
||||
import android.app.Service;
|
||||
import android.content.Intent;
|
||||
import android.os.Binder;
|
||||
import android.os.Handler;
|
||||
import android.os.IBinder;
|
||||
import android.os.Looper;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import asn.GTDF.DtcInfo;
|
||||
import asn.GTDF.IdentifierType;
|
||||
import asn.GTP.ActionType;
|
||||
import asn.GTP.SessionType;
|
||||
import eu.csc.data.IDataConsts;
|
||||
import eu.csc.gtdm.ConfigException;
|
||||
import eu.csc.gtdm.ConfigProvider;
|
||||
import eu.csc.gtdm.GTException;
|
||||
import eu.csc.gtp.IGTPCnfNegative;
|
||||
import eu.csc.gtp.IGTPCnfPositive;
|
||||
import eu.csc.gtp.IGTPCnfPublishDtc;
|
||||
import eu.csc.log.CSCLog;
|
||||
import eu.csc.log.CSCLogFactory;
|
||||
import eu.csc.vehown.data.model.Event;
|
||||
import eu.csc.vehown.services.notifications.NotificationService;
|
||||
import eu.csc.vehown.ui.modal.Helper;
|
||||
import eu.csc.ugp.UGPClient;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import static eu.csc.vehown.ui.modal.Helper.errorDialog;
|
||||
|
||||
public class UGPService extends Service implements IDataConsts, Runnable {
|
||||
|
||||
public static final String HOST = "host";
|
||||
private static final CSCLog LOG = CSCLogFactory.getLog(UGPService.class);
|
||||
|
||||
private final String vehicle;
|
||||
private final String certName;
|
||||
private final String leaseToken;
|
||||
private final Locale locale;
|
||||
private final IBinder binder = new LocalBinder(); // Binder given to clients
|
||||
private AppCompatActivity activity;
|
||||
|
||||
private String host;
|
||||
private Handler handler;
|
||||
private ConfigProvider cp;
|
||||
private UGPClient ugpClient;
|
||||
|
||||
public UGPService() {
|
||||
certName = "Diagnostic-OwnerInfo";
|
||||
leaseToken = "super-11112222";
|
||||
locale = Locale.ENGLISH;
|
||||
vehicle = "Dodge Charger";
|
||||
}
|
||||
|
||||
// Class used for the client Binder.
|
||||
public class LocalBinder extends Binder {
|
||||
UGPService getService() {
|
||||
// Return this instance of MyService so clients can call public methods
|
||||
return UGPService.this;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public IBinder onBind(Intent intent) {
|
||||
return binder;
|
||||
}
|
||||
|
||||
public void setActivity(AppCompatActivity activity) {
|
||||
this.activity = activity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int onStartCommand(Intent intent, int flags, int startId) {
|
||||
/*int ret = */super.onStartCommand(intent, flags, startId);
|
||||
host = intent.getStringExtra(HOST);
|
||||
NotificationService.getInstance().createUGPServiceNotification(this, this);
|
||||
handler = new Handler(Looper.getMainLooper());
|
||||
new Thread(this, getClass().getSimpleName()).start();
|
||||
//do heavy work on a background thread
|
||||
//stopSelf();
|
||||
return START_NOT_STICKY; //TODO -> START_REDELIVER_INTENT
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
System.setProperty("gtdm.odp", this.getExternalFilesDir(null).getAbsolutePath());
|
||||
cp = ConfigProvider.get();
|
||||
try {
|
||||
cp.readGeneralConfigs(false);
|
||||
File dirCerts = new File(cp.getDirCurrent(), "certs");
|
||||
ugpClient = new UGPClient(dirCerts, certName, host, PORT_UGP, 0);
|
||||
ugpClient.startIt(null);
|
||||
ugpClient.setNegativeCnf(negativeCnf);
|
||||
ugpClient.sendManageSessionReq(SessionType.vehOwnAuth, ActionType.enable, leaseToken, null, manageSessionCnf);
|
||||
} catch (GTException | ConfigException e) {
|
||||
LOG.error(e.getMessage(), e);
|
||||
errorDialog(handler, activity, e, leaveActivity);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
NsdHelper.unregisterListener(getApplicationContext());
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
private final IGTPCnfNegative negativeCnf = new IGTPCnfNegative() {
|
||||
@Override
|
||||
public void negativeCnf(Integer csn, String messageName, GTException e) {
|
||||
LOG.error(e.getMessage(), e);
|
||||
errorDialog(handler, activity, e, leaveActivity);
|
||||
}
|
||||
};
|
||||
private final IGTPCnfPositive manageSessionCnf = new IGTPCnfPositive() {
|
||||
@Override
|
||||
public void positiveCnf(Integer csn, String messageName) throws GTException {
|
||||
ugpClient.sendSubscribeDtcInfoReq(3000, "", null, null, (Integer) null, false, null, allDtcsCnf);
|
||||
}
|
||||
};
|
||||
private final IGTPCnfPublishDtc allDtcsCnf = new IGTPCnfPublishDtc() {
|
||||
@Override
|
||||
public void publishDtcInfoCnf(Integer csn, int count, List<DtcInfo> dtcInfo) throws GTException {
|
||||
Event[] events = new Event[dtcInfo.size()];
|
||||
int i = 0;
|
||||
for (DtcInfo d : dtcInfo) {
|
||||
events[i++] = createEvent(d);
|
||||
}
|
||||
//TODO persist events
|
||||
NotificationService.getInstance().createEventsNotification(activity, events);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
private final Helper.IDialogOkHandler leaveActivity = () -> {
|
||||
//TODO
|
||||
};
|
||||
|
||||
private Event createEvent(DtcInfo d) {
|
||||
String id = cp.getDtcBaseName(locale, d.getDtcBaseId(), NameType.shortname);
|
||||
Event e = new Event(id);
|
||||
e.setId(id);
|
||||
e.setDescription(cp.getDtcBaseName(Locale.ENGLISH, d.getDtcBaseId(), NameType.longname));
|
||||
e.setEcu(cp.getName(locale, IdentifierType.ecu, d.getEcuId(), NameType.shortname));
|
||||
e.setVehicle(vehicle);
|
||||
e.setTimestamp(d.getTimestamp());
|
||||
if (d.getStatus().getConfirmedDTC()) {
|
||||
e.setStatus(Event.EventStatus.CONFIRMED);
|
||||
e.setSeverity(Event.EventSeverity.HIGH);
|
||||
} else if (d.getStatus().getPendingDTC()) {
|
||||
e.setStatus(Event.EventStatus.PENDING);
|
||||
e.setSeverity(Event.EventSeverity.MEDIUM);
|
||||
} else if (d.getStatus().getPermanentDTC()) {
|
||||
e.setStatus(Event.EventStatus.PERMANENT);
|
||||
e.setSeverity(Event.EventSeverity.LOW);
|
||||
} else {
|
||||
e.setStatus(Event.EventStatus.UNDEFINED);
|
||||
e.setSeverity(Event.EventSeverity.LOW);
|
||||
}
|
||||
return e;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,17 +1,22 @@
|
|||
package eu.csc.personalapp.ugp;
|
||||
package eu.csc.vehown.ugp;
|
||||
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.app.Activity;
|
||||
import android.content.*;
|
||||
import android.net.nsd.NsdManager;
|
||||
import android.net.nsd.NsdServiceInfo;
|
||||
import android.net.wifi.WifiManager;
|
||||
import android.os.IBinder;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import eu.csc.log.CSCLog;
|
||||
import eu.csc.log.CSCLogFactory;
|
||||
|
||||
public class WifiConnectedReceiver extends BroadcastReceiver {
|
||||
|
||||
public WifiConnectedReceiver(AppCompatActivity activity) {
|
||||
this.activity = activity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
this.context = context;
|
||||
|
|
@ -29,10 +34,14 @@ public class WifiConnectedReceiver extends BroadcastReceiver {
|
|||
|
||||
private static final CSCLog LOG = CSCLogFactory.getLog(WifiConnectedReceiver.class);
|
||||
|
||||
private final AppCompatActivity activity;
|
||||
private Context context;
|
||||
private NsdManager nsdManager;
|
||||
private NsdManager.DiscoveryListener discoveryListener;
|
||||
private NsdManager.ResolveListener resolveListener;
|
||||
private UGPService ugpService;
|
||||
private boolean bound = false;
|
||||
|
||||
|
||||
private NsdManager.DiscoveryListener initDiscoveryListener() {
|
||||
if (discoveryListener != null) {
|
||||
|
|
@ -111,11 +120,28 @@ public class WifiConnectedReceiver extends BroadcastReceiver {
|
|||
LOG.debug("Resolve Succeeded, connect to " + serviceInfo);
|
||||
}
|
||||
Intent intent = new Intent(context, UGPService.class);
|
||||
context.bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);
|
||||
intent.putExtra(UGPService.HOST, serviceInfo.getHost().getHostAddress());
|
||||
ContextCompat.startForegroundService(WifiConnectedReceiver.this.context, intent);
|
||||
context.startActivity(intent);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
/** Callbacks for service binding, passed to bindService() */
|
||||
private ServiceConnection serviceConnection = new ServiceConnection() {
|
||||
|
||||
@Override
|
||||
public void onServiceConnected(ComponentName className, IBinder service) {
|
||||
// cast the IBinder and get MyService instance
|
||||
UGPService.LocalBinder binder = (UGPService.LocalBinder) service;
|
||||
ugpService = binder.getService();
|
||||
bound = true;
|
||||
ugpService.setActivity(activity); // register
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onServiceDisconnected(ComponentName arg0) {
|
||||
bound = false;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.ui.FailureEvent;
|
||||
package eu.csc.vehown.ui.FailureEvent;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.widget.ListView;
|
||||
|
|
@ -8,8 +8,8 @@ import androidx.appcompat.app.AppCompatActivity;
|
|||
import androidx.appcompat.widget.Toolbar;
|
||||
import android.view.View;
|
||||
|
||||
import eu.csc.personalapp.R;
|
||||
import eu.csc.personalapp.data.model.RepairShop;
|
||||
import eu.csc.vehown.R;
|
||||
import eu.csc.vehown.data.model.RepairShop;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.ui.FailureEvent;
|
||||
package eu.csc.vehown.ui.FailureEvent;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.LayoutInflater;
|
||||
|
|
@ -6,8 +6,8 @@ import android.view.View;
|
|||
import android.view.ViewGroup;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.TextView;
|
||||
import eu.csc.personalapp.R;
|
||||
import eu.csc.personalapp.data.model.RepairShop;
|
||||
import eu.csc.vehown.R;
|
||||
import eu.csc.vehown.data.model.RepairShop;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.ui.login;
|
||||
package eu.csc.vehown.ui.login;
|
||||
|
||||
/**
|
||||
* Class exposing authenticated user details to the UI.
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.ui.login;
|
||||
package eu.csc.vehown.ui.login;
|
||||
|
||||
import android.app.Activity;
|
||||
import androidx.lifecycle.Observer;
|
||||
|
|
@ -18,9 +18,7 @@ import android.widget.ProgressBar;
|
|||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import eu.csc.personalapp.R;
|
||||
import eu.csc.personalapp.ui.login.LoginViewModel;
|
||||
import eu.csc.personalapp.ui.login.LoginViewModelFactory;
|
||||
import eu.csc.vehown.R;
|
||||
|
||||
public class LoginActivity extends AppCompatActivity {
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.ui.login;
|
||||
package eu.csc.vehown.ui.login;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.ui.login;
|
||||
package eu.csc.vehown.ui.login;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
|
|
@ -1,14 +1,14 @@
|
|||
package eu.csc.personalapp.ui.login;
|
||||
package eu.csc.vehown.ui.login;
|
||||
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
import androidx.lifecycle.ViewModel;
|
||||
import android.util.Patterns;
|
||||
|
||||
import eu.csc.personalapp.data.LoginRepository;
|
||||
import eu.csc.personalapp.data.Result;
|
||||
import eu.csc.personalapp.data.model.LoggedInUser;
|
||||
import eu.csc.personalapp.R;
|
||||
import eu.csc.vehown.data.LoginRepository;
|
||||
import eu.csc.vehown.data.Result;
|
||||
import eu.csc.vehown.data.model.LoggedInUser;
|
||||
import eu.csc.vehown.R;
|
||||
|
||||
public class LoginViewModel extends ViewModel {
|
||||
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
package eu.csc.personalapp.ui.login;
|
||||
package eu.csc.vehown.ui.login;
|
||||
|
||||
import androidx.lifecycle.ViewModel;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import eu.csc.personalapp.data.LoginDataSource;
|
||||
import eu.csc.personalapp.data.LoginRepository;
|
||||
import eu.csc.vehown.data.LoginDataSource;
|
||||
import eu.csc.vehown.data.LoginRepository;
|
||||
|
||||
/**
|
||||
* ViewModel provider factory to instantiate LoginViewModel.
|
||||
|
|
@ -1,38 +1,35 @@
|
|||
package eu.csc.personalapp.ui.main;
|
||||
package eu.csc.vehown.ui.main;
|
||||
|
||||
import android.Manifest;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.os.StrictMode;
|
||||
import android.view.Menu;
|
||||
|
||||
import androidx.core.app.ActivityCompat;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import com.google.android.material.navigation.NavigationView;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.drawerlayout.widget.DrawerLayout;
|
||||
import androidx.navigation.NavController;
|
||||
import androidx.navigation.Navigation;
|
||||
import androidx.navigation.ui.AppBarConfiguration;
|
||||
import androidx.navigation.ui.NavigationUI;
|
||||
import androidx.drawerlayout.widget.DrawerLayout;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
|
||||
import eu.csc.personalapp.R;
|
||||
import eu.csc.personalapp.broadcast.VehicleEventReceivedReceiver;
|
||||
import eu.csc.personalapp.services.mqtt.MqttClient;
|
||||
import eu.csc.personalapp.services.notifications.NotificationService;
|
||||
import eu.csc.personalapp.ugp.WifiConnectedReceiver;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import com.google.android.material.navigation.NavigationView;
|
||||
import eu.csc.log.CSCLog;
|
||||
import eu.csc.log.CSCLog4jFactory;
|
||||
import eu.csc.vehown.R;
|
||||
import eu.csc.vehown.broadcast.VehicleEventReceivedReceiver;
|
||||
import eu.csc.vehown.services.mqtt.MqttClient;
|
||||
import eu.csc.vehown.services.notifications.NotificationService;
|
||||
import eu.csc.vehown.ugp.WifiConnectedReceiver;
|
||||
|
||||
public class MainActivity extends AppCompatActivity {
|
||||
|
||||
private static final int PERMISSIONS_REQUESTED = 1;
|
||||
// private static final int PERMISSIONS_REQUESTED = 1;
|
||||
private static final String CONNECTIVITY_CHANGE = "android.net.conn.CONNECTIVITY_CHANGE";
|
||||
|
||||
private CSCLog log;
|
||||
private Handler handler;
|
||||
private AppBarConfiguration mAppBarConfiguration;
|
||||
|
||||
@Override
|
||||
|
|
@ -40,13 +37,10 @@ public class MainActivity extends AppCompatActivity {
|
|||
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
|
||||
StrictMode.setThreadPolicy(policy);
|
||||
super.onCreate(savedInstanceState);
|
||||
log = CSCLog4jFactory.initiate(this, getString(R.string.app_name).toLowerCase());
|
||||
handler = new Handler(Looper.getMainLooper());
|
||||
new NotificationService(this);
|
||||
// checkPermissions(new String[]{
|
||||
// Manifest.permission.WRITE_EXTERNAL_STORAGE,
|
||||
// Manifest.permission.ACCESS_FINE_LOCATION,
|
||||
// Manifest.permission.ACCESS_COARSE_LOCATION,
|
||||
// Manifest.permission.CHANGE_WIFI_STATE}
|
||||
// );
|
||||
//checkPermissions(new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE } );
|
||||
|
||||
setContentView(R.layout.activity_main);
|
||||
Toolbar toolbar = findViewById(R.id.toolbar);
|
||||
|
|
@ -72,7 +66,8 @@ public class MainActivity extends AppCompatActivity {
|
|||
private void setup() {
|
||||
IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
|
||||
filter.addAction(VehicleEventReceivedReceiver.EVENT_INTENT_NAME);
|
||||
this.registerReceiver(new VehicleEventReceivedReceiver(), filter);
|
||||
registerReceiver(new VehicleEventReceivedReceiver(), filter);
|
||||
registerReceiver(new WifiConnectedReceiver(this), new IntentFilter(CONNECTIVITY_CHANGE));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -89,38 +84,36 @@ public class MainActivity extends AppCompatActivity {
|
|||
|| super.onSupportNavigateUp();
|
||||
}
|
||||
|
||||
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
|
||||
switch (requestCode) {
|
||||
case PERMISSIONS_REQUESTED:
|
||||
// If request is cancelled, the result arrays are empty.
|
||||
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||
checkPermissions(permissions); //again
|
||||
}
|
||||
return;
|
||||
// other 'case' lines to check for other
|
||||
// permissions this app might request
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void checkPermissions(String[] permissions) {
|
||||
ArrayList<String> requestPermissions = new ArrayList<>();
|
||||
for (String permission : permissions) {
|
||||
if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) {
|
||||
requestPermissions.add(permission);
|
||||
}
|
||||
}
|
||||
if (!requestPermissions.isEmpty()) {
|
||||
ActivityCompat.requestPermissions(this, requestPermissions.toArray(new String[requestPermissions.size()]), PERMISSIONS_REQUESTED);
|
||||
return;
|
||||
}
|
||||
onPermissionRequested();
|
||||
}
|
||||
|
||||
public void onPermissionRequested() {
|
||||
registerReceiver(new WifiConnectedReceiver(), new IntentFilter(CONNECTIVITY_CHANGE));
|
||||
//TODO startup
|
||||
}
|
||||
// public void onRequestPermissionsResult(int requestCode, @NotNull String[] permissions, @NotNull int[] grantResults) {
|
||||
// if (requestCode == PERMISSIONS_REQUESTED) {// If request is cancelled, the result arrays are empty.
|
||||
// if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||
// checkPermissions(permissions); //again
|
||||
// }
|
||||
// // other 'case' lines to check for other
|
||||
// // permissions this app might request
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// private void checkPermissions(String[] permissions) {
|
||||
// ArrayList<String> requestPermissions = new ArrayList<>();
|
||||
// for (String permission : permissions) {
|
||||
// if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) {
|
||||
// if (ActivityCompat.shouldShowRequestPermissionRationale(this, permission)) {
|
||||
// Log.e("MainActivity", "Permission " + permission + " denied");
|
||||
// }
|
||||
// requestPermissions.add(permission);
|
||||
// }
|
||||
// }
|
||||
// if (!requestPermissions.isEmpty()) {
|
||||
// ActivityCompat.requestPermissions(this, requestPermissions.toArray(new String[0]), PERMISSIONS_REQUESTED);
|
||||
// return;
|
||||
// }
|
||||
// onPermissionRequested();
|
||||
// }
|
||||
//
|
||||
// public void onPermissionRequested() {
|
||||
// registerReceiver(new WifiConnectedReceiver(), new IntentFilter(CONNECTIVITY_CHANGE));
|
||||
// //TODO startup
|
||||
// }
|
||||
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.ui.main.dboard;
|
||||
package eu.csc.vehown.ui.main.dboard;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
|
|
@ -10,15 +10,15 @@ import android.view.ViewGroup;
|
|||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.RequiresApi;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import eu.csc.personalapp.R;
|
||||
import eu.csc.personalapp.services.mqtt.MqttClient;
|
||||
import eu.csc.personalapp.services.notifications.NotificationService;
|
||||
import eu.csc.personalapp.services.persistence.ExampleDataClient;
|
||||
import eu.csc.personalapp.services.persistence.PersistenceFactory;
|
||||
import eu.csc.personalapp.ui.reportEvent.ReportEventActivity;
|
||||
import eu.csc.personalapp.ui.svi.RegisterSVIActivity;
|
||||
import eu.csc.personalapp.ui.svi.UploadLeaseActivity;
|
||||
import eu.csc.personalapp.ui.tp.TreatmentPlanActivity;
|
||||
import eu.csc.vehown.R;
|
||||
import eu.csc.vehown.services.mqtt.MqttClient;
|
||||
import eu.csc.vehown.services.notifications.NotificationService;
|
||||
import eu.csc.vehown.services.persistence.ExampleDataClient;
|
||||
import eu.csc.vehown.services.persistence.PersistenceFactory;
|
||||
import eu.csc.vehown.ui.reportEvent.ReportEventActivity;
|
||||
import eu.csc.vehown.ui.svi.RegisterSVIActivity;
|
||||
import eu.csc.vehown.ui.svi.UploadLeaseActivity;
|
||||
import eu.csc.vehown.ui.tp.TreatmentPlanActivity;
|
||||
|
||||
import java.time.Instant;
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.ui.main.dboard;
|
||||
package eu.csc.vehown.ui.main.dboard;
|
||||
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.ui.main.dwev;
|
||||
package eu.csc.vehown.ui.main.dwev;
|
||||
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.ui.main.dwev;
|
||||
package eu.csc.vehown.ui.main.dwev;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
|
|
@ -12,7 +12,7 @@ import androidx.fragment.app.Fragment;
|
|||
import androidx.lifecycle.Observer;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
|
||||
import eu.csc.personalapp.R;
|
||||
import eu.csc.vehown.R;
|
||||
|
||||
|
||||
public class DownloadedEventsFragment extends Fragment {
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.ui.main.repev;
|
||||
package eu.csc.vehown.ui.main.repev;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
|
|
@ -12,7 +12,7 @@ import androidx.fragment.app.Fragment;
|
|||
import androidx.lifecycle.Observer;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
|
||||
import eu.csc.personalapp.R;
|
||||
import eu.csc.vehown.R;
|
||||
|
||||
|
||||
public class ReportedEventsFragment extends Fragment {
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.ui.main.repev;
|
||||
package eu.csc.vehown.ui.main.repev;
|
||||
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package eu.csc.personalapp.ui.modal;
|
||||
package eu.csc.vehown.ui.modal;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
|
|
@ -13,32 +13,35 @@ import android.provider.DocumentsContract;
|
|||
import android.provider.MediaStore;
|
||||
import androidx.annotation.DrawableRes;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import eu.csc.personalapp.R;
|
||||
import eu.csc.vehown.R;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.Locale;
|
||||
|
||||
public abstract class Helper {
|
||||
|
||||
public static void errorDialog(Handler handler, Activity activity, Exception e, IDialogOkHandler okHandler) {
|
||||
dialog(handler, activity, R.drawable.ic_dlg_warning, "Error", e.getMessage(), okHandler);
|
||||
public static void errorDialog(@NotNull Handler handler, @NotNull Context context, @NotNull Exception e, IDialogOkHandler okHandler) {
|
||||
dialog(handler, context, R.drawable.ic_dlg_warning, "Error", e.getMessage(), okHandler);
|
||||
}
|
||||
|
||||
public static void pause(long millis) {
|
||||
try { Thread.sleep(millis); } catch (InterruptedException e) {}
|
||||
}
|
||||
|
||||
public static void dialog(Handler handler, Activity activity, @DrawableRes int iconId, String title, String message, IDialogOkHandler okHandler) {
|
||||
public static void dialog(@NotNull Handler handler, @NotNull Context context, @DrawableRes int iconId, @NotNull String title, @NotNull String message, IDialogOkHandler okHandler) {
|
||||
handler.post(() -> {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(context);
|
||||
AlertDialog alertDialog = builder.create();
|
||||
alertDialog.setIcon(iconId);
|
||||
alertDialog.setTitle(title);
|
||||
alertDialog.setMessage(message);
|
||||
alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "OK", (dialog, which) -> { dialog.dismiss(); okHandler.onOk(); });
|
||||
alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "OK", (dialog, which) -> {
|
||||
dialog.dismiss();
|
||||
if (okHandler != null) okHandler.onOk();
|
||||
});
|
||||
alertDialog.show();
|
||||
});
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue