# Siemens IEDS ## Android Technical Design ###### tags: `projects` ### Purpose Maintenance and. diagnostic of equipment the subway of Singapore ### Screenmap - Splash - Login - Register - Sync - Dashboard - History - Search detail - Documents (Search & Filter) - Search (New Guidance OR Enter Error Code) - New Guidance - Category - Technique - System - Subsystem - Posible Guides (List of Flows) - Questions (steps) - Posible Solution of PDF document - Followed Steps - New comment to step - Enter error code - Category - Technique - System - Subsystem - Enter error code - Matching codes - Posible Solution or PDF document - Doesn't work - Check steps - Try another guide - Send comment - Solved ### System Description - Rol - Administrator - Manager - User - Components - Web App: For administrators and managers - Api Rest: Different operations with different access levels. Connects to server database - Mobile App: For Users. With internal database. - Multilanguaje - English by default - User add file to adding another language - Network - Inside Intranet, don't access internet - Offline - First Download from intranet - Upgrading information asynchronously once it has access to the intranet ### Mobile App - Login - Is first time - Yes -> Sync - No -> Upgrade - Offline - New Search - Documents - History Flows - Document as BLOB - Room - https://stackoverflow.com/a/46356934 - https://developer.android.com/reference/androidx/room/ColumnInfo - https://developer.android.com/reference/java/sql/Blob - CouchDB - https://docs.couchbase.com/couchbase-lite/current/android/replication.html - https://docs.couchbase.com/couchbase-lite/current/android/quickstart.html - https://docs.couchbase.com/couchbase-lite/current/android/blob.html Reunión JaviG 20210922 Montar aplicativo de escritorio con Couch y Pouch. App - Sync PC -> Movil - Fuera app - Transferir archivo cifrado db pouch a dispositivo móvil a ruta concreta - 1. Lectura de archivo cifrado tipo .db pouch colocado en ruta concreta de dispositivo - 2. Moverlo a ruta interna de la app - 3. Descifrar archivo - 4. Cargar db actualizada - Sync Movil -> PC - 1. Cifrar archivo actual .db - 2. Mover archivo a memoria externa en ruta concreta de dispositivo - Fuera app - Transferir archivo cifrado db pouch a pc desde ruta concreta # Siemens EIDS ## Flujo completo del sistema ![Flujo completo del sistema](https://i.imgur.com/zoLXUip.png) ## Solución de sincronización y feedback Flujo de trabajo entre aplicación de escritorio (SO Windows o Linux) con CouchDB y aplicación móvil (Android) con PouchDB a través de transferecia manual de archivos. 1. Aplicación de Escritorio genera archivo cifrado PouchDB y mediante transferencia lo ubica en una ruta concreta del directorio de carpetas público del dispositivo Android. - Desde la aplicación móvil, iniciamos el proceso de sincronización de la PouchDB que consiste en: - Mueve el archido desde la ruta del directorio público al privado de la aplicación - Descrifra el archivo - Carga el archivo como PouchDB de trabajo 2. Técnico hace uso de la aplicación, realizando flujos de trabajo o dándo feedback para mejorar, modificar o sugerir cambios. 3. Este trabajo provoca cambios en la PouchDB. En el momento en que el técnico quiera volcar la información a la aplicación de escritorio, debe conectar el dispositivo móvil al mismo y comenzar el flujo de consagración de datos. - La aplicación móvil cifra la PouchDB actualizada y la mueve desde el directorio privado de la aplicación a la ruta pública concreta. 4. Se realiza la transferencia del archivo cifrado a PC, y la aplicación de escritorio descifra este archivo y sincroniza los cambios con la CouchDB. - Una vez finalizado este proceso, puede generar un nuevo archivo PouchDB actualizado y volver a comenzar el proceso de sincronización. [![Diagrama de flujo entre móvil y aplicación de escritorio](https://mermaid.ink/img/eyJjb2RlIjoiXG5zZXF1ZW5jZURpYWdyYW1cbiAgICBhdXRvbnVtYmVyXG4gICAgTm90ZSBsZWZ0IG9mIERlc2t0b3A6IENyZWF0ZSBuZXcgUG91Y2hEQiBmaWxlIGFuZCBlbmNyeXB0IGl0XG4gICAgRGVza3RvcC0-Pk1vYmlsZTogVHJhbnNmZXIgZW5jcnlwdGVkIFBvdWNoREIgZmlsZSBvbnRvIHNwZWNpZmljIG1vYmlsZSBwdWJsaWMgcGF0aCBcbiAgICBOb3RlIHJpZ2h0IG9mIE1vYmlsZTogTW92ZSBmaWxlIGZyb20gcHVibGljIHBhdGggdG8gcHJpdmF0ZSBwYXRoXG4gICAgTm90ZSByaWdodCBvZiBNb2JpbGU6IERlY3J5cHQgUG91Y2hEQiBmaWxlIGFuZCBsb2FkIGRhdGFiYXNlIG9uIEFwcFxuICAgIGxvb3AgVGVjaG5pY2lhbiB3b3JrcyBvbiBBcHBcbiAgICAgICAgTW9iaWxlLT4-TW9iaWxlOiBGbG93cyBuYXZpZ2F0aW9uIGFuZCBmZWVkYmFja1xuICAgICAgICBNb2JpbGUtPj5Nb2JpbGU6IFVwZGF0ZWQgUG91Y2hEQlxuICAgIGVuZFxuICAgIE5vdGUgcmlnaHQgb2YgTW9iaWxlOiBFbmNyeXB0IFBvdWNoREIgZmlsZSBhbmQgbW92ZSBvbnRvIHB1YmxpYyBzcGVjaWZpYyBwYXRoXG4gICAgTW9iaWxlLT4-RGVza3RvcDogVHJhbnNmZXIgdXBkYXRlZCBlbmNyeXB0IFBvdWNoREIgZmlsZVxuICAgIE5vdGUgbGVmdCBvZiBEZXNrdG9wOiBEZWNyeXB0IFBvdWNoREIgYW5kIHN5bmMgd2l0aCBDb3VjaERCIGRhdGFiYXNlXG4gICAgTm90ZSBsZWZ0IG9mIERlc2t0b3A6IFR1cm5zIHRvIDFcblxuIiwibWVybWFpZCI6eyJ0aGVtZSI6ImRlZmF1bHQifSwidXBkYXRlRWRpdG9yIjpmYWxzZSwiYXV0b1N5bmMiOnRydWUsInVwZGF0ZURpYWdyYW0iOmZhbHNlfQ)](https://mermaid-js.github.io/mermaid-live-editor/edit#eyJjb2RlIjoiXG5zZXF1ZW5jZURpYWdyYW1cbiAgICBhdXRvbnVtYmVyXG4gICAgTm90ZSBsZWZ0IG9mIERlc2t0b3A6IENyZWF0ZSBuZXcgUG91Y2hEQiBmaWxlIGFuZCBlbmNyeXB0IGl0XG4gICAgRGVza3RvcC0-Pk1vYmlsZTogVHJhbnNmZXIgZW5jcnlwdGVkIFBvdWNoREIgZmlsZSBvbnRvIHNwZWNpZmljIG1vYmlsZSBwdWJsaWMgcGF0aCBcbiAgICBOb3RlIHJpZ2h0IG9mIE1vYmlsZTogTW92ZSBmaWxlIGZyb20gcHVibGljIHBhdGggdG8gcHJpdmF0ZSBwYXRoXG4gICAgTm90ZSByaWdodCBvZiBNb2JpbGU6IERlY3J5cHQgUG91Y2hEQiBmaWxlIGFuZCBsb2FkIGRhdGFiYXNlIG9uIEFwcFxuICAgIGxvb3AgVGVjaG5pY2lhbiB3b3JrcyBvbiBBcHBcbiAgICAgICAgTW9iaWxlLT4-TW9iaWxlOiBGbG93cyBuYXZpZ2F0aW9uIGFuZCBmZWVkYmFja1xuICAgICAgICBNb2JpbGUtPj5Nb2JpbGU6IFVwZGF0ZWQgUG91Y2hEQlxuICAgIGVuZFxuICAgIE5vdGUgcmlnaHQgb2YgTW9iaWxlOiBFbmNyeXB0IFBvdWNoREIgZmlsZSBhbmQgbW92ZSBvbnRvIHB1YmxpYyBzcGVjaWZpYyBwYXRoXG4gICAgTW9iaWxlLT4-RGVza3RvcDogVHJhbnNmZXIgdXBkYXRlZCBlbmNyeXB0IFBvdWNoREIgZmlsZVxuICAgIE5vdGUgbGVmdCBvZiBEZXNrdG9wOiBEZWNyeXB0IFBvdWNoREIgYW5kIHN5bmMgd2l0aCBDb3VjaERCIGRhdGFiYXNlXG4gICAgTm90ZSBsZWZ0IG9mIERlc2t0b3A6IFR1cm5zIHRvIDFcblxuIiwibWVybWFpZCI6IntcbiAgXCJ0aGVtZVwiOiBcImRlZmF1bHRcIlxufSIsInVwZGF0ZUVkaXRvciI6ZmFsc2UsImF1dG9TeW5jIjp0cnVlLCJ1cGRhdGVEaWFncmFtIjpmYWxzZX0)