aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Android_Studio/Tango.DAL/src
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Android_Studio/Tango.DAL/src')
-rw-r--r--Software/Android_Studio/Tango.DAL/src/androidTest/java/com/twine/tango/dal/ExampleInstrumentedTest.java27
-rw-r--r--Software/Android_Studio/Tango.DAL/src/main/assets/Tango.dbbin446464 -> 516096 bytes
-rw-r--r--Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/TangoDB.java72
-rw-r--r--Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/dao/UsersDAO.java27
-rw-r--r--Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/db/AppDataBase.java101
-rw-r--r--Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/entities/Address.java104
-rw-r--r--Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/entities/Contact.java91
-rw-r--r--Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/entities/DateConverter.java36
-rw-r--r--Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/entities/Entity.java75
-rw-r--r--Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/entities/Organization.java54
-rw-r--r--Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/entities/User.java55
11 files changed, 432 insertions, 210 deletions
diff --git a/Software/Android_Studio/Tango.DAL/src/androidTest/java/com/twine/tango/dal/ExampleInstrumentedTest.java b/Software/Android_Studio/Tango.DAL/src/androidTest/java/com/twine/tango/dal/ExampleInstrumentedTest.java
index 3684e9cfe..372af6ec5 100644
--- a/Software/Android_Studio/Tango.DAL/src/androidTest/java/com/twine/tango/dal/ExampleInstrumentedTest.java
+++ b/Software/Android_Studio/Tango.DAL/src/androidTest/java/com/twine/tango/dal/ExampleInstrumentedTest.java
@@ -3,17 +3,10 @@ package com.twine.tango.dal;
import android.content.Context;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;
-import android.util.Log;
-
-import com.twine.tango.dal.db.AppDataBase;
-import com.twine.tango.dal.db.AppDataBase_Impl;
-import com.twine.tango.dal.entities.User;
import org.junit.Test;
import org.junit.runner.RunWith;
-import java.util.List;
-
import static org.junit.Assert.*;
/**
@@ -32,24 +25,4 @@ public class ExampleInstrumentedTest
assertEquals("com.twine.tango.dal.test", appContext.getPackageName());
}
-
- @Test
- public void testDB() throws Exception
- {
- Context appContext = InstrumentationRegistry.getTargetContext();
- AppDataBase db = AppDataBase.getAppDatabase(appContext);
-
- User u = new User();
- u.setFirstName("Roy");
- u.setLastName("Ben Shabat 2");
- db.usersDAO().insert(u);
-
- List<User> users = db.usersDAO().getAll();
-
- for (User user : users)
- {
- Log.i("DB",user.getFirstName());
- Log.i("DB",user.getLastName());
- }
- }
}
diff --git a/Software/Android_Studio/Tango.DAL/src/main/assets/Tango.db b/Software/Android_Studio/Tango.DAL/src/main/assets/Tango.db
index a0b28abd7..68ca3633d 100644
--- a/Software/Android_Studio/Tango.DAL/src/main/assets/Tango.db
+++ b/Software/Android_Studio/Tango.DAL/src/main/assets/Tango.db
Binary files differ
diff --git a/Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/TangoDB.java b/Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/TangoDB.java
new file mode 100644
index 000000000..d878e72b2
--- /dev/null
+++ b/Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/TangoDB.java
@@ -0,0 +1,72 @@
+package com.twine.tango.dal;
+
+import android.content.Context;
+import android.os.Environment;
+
+import com.elvishew.xlog.XLog;
+import com.raizlabs.android.dbflow.annotation.Database;
+import com.raizlabs.android.dbflow.config.DatabaseConfig;
+import com.raizlabs.android.dbflow.config.DatabaseConfig.OpenHelperCreator;
+import com.raizlabs.android.dbflow.config.DatabaseDefinition;
+import com.raizlabs.android.dbflow.config.FlowConfig;
+import com.raizlabs.android.dbflow.config.FlowManager;
+import com.raizlabs.android.dbflow.sql.language.SQLite;
+import com.raizlabs.android.dbflow.structure.database.DatabaseHelperListener;
+import com.raizlabs.android.dbflow.structure.database.OpenHelper;
+import com.snatik.storage.Storage;
+import com.twine.tango.core.ContextFactory;
+import com.twine.tango.dal.entities.Organization;
+
+import java.io.File;
+import java.util.List;
+
+/**
+ * Created by Roy on 11/30/2017.
+ */
+
+@Database(name = "Tango",version = 1)
+public class TangoDB
+{
+ private static DatabaseDefinition database;
+ private static String database_path;
+
+ public static void init()
+ {
+ FlowManager.init(FlowConfig.builder(ContextFactory.getApplicationContext())
+ .addDatabaseConfig(
+ DatabaseConfig.builder(
+ TangoDB.class)
+ .databaseName("Tango")
+ .build())
+ .build());
+
+ database = FlowManager.getDatabase(TangoDB.class);
+
+ //Test
+ List<Organization> results = SQLite.select().from(Organization.class).queryList();
+
+ for (Organization org : results)
+ {
+ XLog.i(org.getName());
+ }
+
+ backup();
+ }
+
+ public static File getDataBasePath(String name)
+ {
+ database_path = Environment.getExternalStorageDirectory() + "/" + name;
+ return new File(database_path);
+ }
+
+ public static void close()
+ {
+ database.close();
+ }
+
+ public static void backup()
+ {
+ Storage storage = new Storage(ContextFactory.getApplicationContext());
+ storage.copy(database_path,storage.getExternalStorageDirectory() + "/" + "backup.db");
+ }
+}
diff --git a/Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/dao/UsersDAO.java b/Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/dao/UsersDAO.java
deleted file mode 100644
index e87286ad1..000000000
--- a/Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/dao/UsersDAO.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.twine.tango.dal.dao;
-
-import android.arch.persistence.room.Dao;
-import android.arch.persistence.room.Delete;
-import android.arch.persistence.room.Insert;
-import android.arch.persistence.room.Query;
-
-import com.twine.tango.dal.entities.User;
-
-import java.util.List;
-
-/**
- * Created by Roy on 11/23/2017.
- */
-
-@Dao
-public interface UsersDAO
-{
- @Query("SELECT * FROM USERS")
- List<User> getAll();
-
- @Insert
- void insert(User user);
-
- @Delete
- void delete(User user);
-}
diff --git a/Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/db/AppDataBase.java b/Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/db/AppDataBase.java
deleted file mode 100644
index b1124c6ab..000000000
--- a/Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/db/AppDataBase.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package com.twine.tango.dal.db;
-
-
-import android.arch.persistence.db.SupportSQLiteDatabase;
-import android.arch.persistence.room.Database;
-import android.arch.persistence.room.Room;
-import android.arch.persistence.room.RoomDatabase;
-import android.arch.persistence.room.migration.Migration;
-import android.content.Context;
-
-import com.twine.tango.dal.dao.UsersDAO;
-import com.twine.tango.dal.entities.User;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-/**
- * Created by Roy on 11/23/2017.
- */
-
-@Database(entities = { User.class }, exportSchema = false, version = 1)
-public abstract class AppDataBase extends RoomDatabase
-{
- private static String DB_PATH = "/data/data/com.twine.tango.dal.test/databases/";
- private static String DB_NAME = "Tango";
-
- private static AppDataBase INSTANCE;
-
- public abstract UsersDAO usersDAO();
-
- public static AppDataBase getAppDatabase(Context context) {
- if (INSTANCE == null) {
-
- try
- {
- DB_PATH = context.getDatabasePath(DB_NAME).getPath();
-
- File file = new File(DB_PATH);
- if(!file.exists())
- {
- copyDefaultDB(context);
- }
-
- } catch (Exception e)
- {
- e.printStackTrace();
-
- //TODO: fallback in case we fail in copying the default db.
- }
-
- INSTANCE =
- Room.databaseBuilder(context.getApplicationContext(), AppDataBase.class, DB_NAME)
- // allow queries on the main thread.
- // Don't do this on a real app! See PersistenceBasicSample for an example.
- .allowMainThreadQueries()
- .build();
- }
- return INSTANCE;
- }
-
- private static void copyDefaultDB(Context context) throws Exception
- {
- //Open your local db as the input stream
- InputStream myInput = context.getAssets().open(DB_NAME + ".db");
-
- //Open the empty db as the output stream
- OutputStream myOutput = new FileOutputStream(DB_PATH);
-
- //transfer bytes from the inputfile to the outputfile
- byte[] buffer = new byte[1024];
- int length;
- while ((length = myInput.read(buffer))>0){
- myOutput.write(buffer, 0, length);
- }
-
- //Close the streams
- myOutput.flush();
- myOutput.close();
- myInput.close();
- }
-
- public static void destroyInstance() {
- INSTANCE = null;
- }
-
- //region Migrations
-
- static final Migration MIGRATION_1_2 = new Migration(1, 2) {
- @Override
- public void migrate(SupportSQLiteDatabase database) {
- database.execSQL("CREATE TABLE `Fruit` (`id` INTEGER, "
- + "`name` TEXT, PRIMARY KEY(`id`))");
- }
- };
-
- //endregion
-
-}
-
diff --git a/Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/entities/Address.java b/Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/entities/Address.java
new file mode 100644
index 000000000..f808d933b
--- /dev/null
+++ b/Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/entities/Address.java
@@ -0,0 +1,104 @@
+package com.twine.tango.dal.entities;
+
+import com.raizlabs.android.dbflow.annotation.Column;
+import com.raizlabs.android.dbflow.annotation.Table;
+import com.twine.tango.dal.TangoDB;
+
+/**
+ * Created by Roy on 11/30/2017.
+ */
+
+@Table(name = "ADDRESSES", database = TangoDB.class)
+public class Address extends Entity
+{
+ @Column(name = "ADDRESS")
+ private String address;
+
+ @Column(name = "LOCALITY")
+ private String locality;
+
+ @Column(name = "COUNTRY")
+ private String country;
+
+ @Column(name = "CITY")
+ private String city;
+
+ @Column(name = "STATE")
+ private String state;
+
+ @Column(name = "COUNTRY_CODE")
+ private String country_code;
+
+ @Column(name = "POSTAL_CODE")
+ private String postal_code;
+
+ public String getAddress()
+ {
+ return address;
+ }
+
+ public void setAddress(String address)
+ {
+ this.address = address;
+ }
+
+ public String getLocality()
+ {
+ return locality;
+ }
+
+ public void setLocality(String locality)
+ {
+ this.locality = locality;
+ }
+
+ public String getCountry()
+ {
+ return country;
+ }
+
+ public void setCountry(String country)
+ {
+ this.country = country;
+ }
+
+ public String getCity()
+ {
+ return city;
+ }
+
+ public void setCity(String city)
+ {
+ this.city = city;
+ }
+
+ public String getState()
+ {
+ return state;
+ }
+
+ public void setState(String state)
+ {
+ this.state = state;
+ }
+
+ public String getCountry_code()
+ {
+ return country_code;
+ }
+
+ public void setCountry_code(String country_code)
+ {
+ this.country_code = country_code;
+ }
+
+ public String getPostal_code()
+ {
+ return postal_code;
+ }
+
+ public void setPostal_code(String postal_code)
+ {
+ this.postal_code = postal_code;
+ }
+}
diff --git a/Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/entities/Contact.java b/Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/entities/Contact.java
new file mode 100644
index 000000000..a4ad77572
--- /dev/null
+++ b/Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/entities/Contact.java
@@ -0,0 +1,91 @@
+package com.twine.tango.dal.entities;
+
+import com.raizlabs.android.dbflow.annotation.Column;
+import com.raizlabs.android.dbflow.annotation.Table;
+import com.twine.tango.dal.TangoDB;
+
+/**
+ * Created by Roy on 11/30/2017.
+ */
+
+@Table(name = "CONTACTS", database = TangoDB.class)
+public class Contact extends Entity
+{
+ @Column(name = "FIRST_NAME")
+ private String first_name;
+
+ @Column(name = "LAST_NAME")
+ private String last_name;
+
+ @Column(name = "FULL_NAME")
+ private String full_name;
+
+ @Column(name = "EMAIL")
+ private String email;
+
+ @Column(name = "PHONE_NUMBER")
+ private String phone_number;
+
+ @Column(name = "FAX")
+ private String fax;
+
+ public String getFirst_name()
+ {
+ return first_name;
+ }
+
+ public void setFirst_name(String first_name)
+ {
+ this.first_name = first_name;
+ }
+
+ public String getLast_name()
+ {
+ return last_name;
+ }
+
+ public void setLast_name(String last_name)
+ {
+ this.last_name = last_name;
+ }
+
+ public String getFull_name()
+ {
+ return full_name;
+ }
+
+ public void setFull_name(String full_name)
+ {
+ this.full_name = full_name;
+ }
+
+ public String getEmail()
+ {
+ return email;
+ }
+
+ public void setEmail(String email)
+ {
+ this.email = email;
+ }
+
+ public String getPhone_number()
+ {
+ return phone_number;
+ }
+
+ public void setPhone_number(String phone_number)
+ {
+ this.phone_number = phone_number;
+ }
+
+ public String getFax()
+ {
+ return fax;
+ }
+
+ public void setFax(String fax)
+ {
+ this.fax = fax;
+ }
+}
diff --git a/Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/entities/DateConverter.java b/Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/entities/DateConverter.java
new file mode 100644
index 000000000..8e74df283
--- /dev/null
+++ b/Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/entities/DateConverter.java
@@ -0,0 +1,36 @@
+package com.twine.tango.dal.entities;
+import com.raizlabs.android.dbflow.converter.TypeConverter;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * Created by Roy on 11/30/2017.
+ */
+
+@com.raizlabs.android.dbflow.annotation.TypeConverter
+public class DateConverter extends TypeConverter<String,Date>
+{
+
+ @Override
+ public String getDBValue(Date model)
+ {
+ return android.text.format.DateFormat.format("yyyy-MM-dd hh:mm:ss", model).toString();
+ }
+
+ @Override
+ public Date getModelValue(String data)
+ {
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
+ Date date = null;
+ try
+ {
+ date = format.parse(data);
+ } catch (ParseException e)
+ {
+ e.printStackTrace();
+ }
+ return date;
+ }
+}
diff --git a/Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/entities/Entity.java b/Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/entities/Entity.java
new file mode 100644
index 000000000..58a20a59d
--- /dev/null
+++ b/Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/entities/Entity.java
@@ -0,0 +1,75 @@
+package com.twine.tango.dal.entities;
+
+import com.raizlabs.android.dbflow.annotation.Column;
+import com.raizlabs.android.dbflow.annotation.PrimaryKey;
+import com.raizlabs.android.dbflow.rx2.structure.BaseRXModel;
+
+import java.util.Date;
+import java.util.UUID;
+
+
+/**
+ * Created by Roy on 11/30/2017.
+ */
+
+public class Entity extends BaseRXModel
+{
+ @Column(name = "ID")
+ private int id;
+
+ @Column(name = "GUID")
+ @PrimaryKey
+ private String guid;
+
+ @Column(name = "LAST_UPDATED",typeConverter = DateConverter.class)
+ private Date last_updated;
+
+ @Column(name = "DELETED")
+ private boolean deleted;
+
+ public int getId()
+ {
+ return id;
+ }
+
+ public void setId(int id)
+ {
+ this.id = id;
+ }
+
+ public String getGuid()
+ {
+ return guid;
+ }
+
+ public void setGuid(String guid)
+ {
+ this.guid = guid;
+ }
+
+ public Date getLast_updated()
+ {
+ return last_updated;
+ }
+
+ public void setLast_updated(Date last_updated)
+ {
+ this.last_updated = last_updated;
+ }
+
+ public boolean isDeleted()
+ {
+ return deleted;
+ }
+
+ public void setDeleted(boolean deleted)
+ {
+ this.deleted = deleted;
+ }
+
+ public Entity()
+ {
+ setGuid(UUID.randomUUID().toString());
+ setLast_updated(new Date());
+ }
+}
diff --git a/Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/entities/Organization.java b/Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/entities/Organization.java
new file mode 100644
index 000000000..d39490674
--- /dev/null
+++ b/Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/entities/Organization.java
@@ -0,0 +1,54 @@
+package com.twine.tango.dal.entities;
+
+import com.raizlabs.android.dbflow.annotation.Column;
+import com.raizlabs.android.dbflow.annotation.ForeignKey;
+import com.raizlabs.android.dbflow.annotation.ForeignKeyReference;
+import com.raizlabs.android.dbflow.annotation.Table;
+import com.twine.tango.dal.TangoDB;
+
+/**
+ * Created by Roy on 11/30/2017.
+ */
+
+@Table(name = "ORGANIZATIONS", database = TangoDB.class)
+public class Organization extends Entity
+{
+ @Column(name = "NAME")
+ private String name;
+
+ @ForeignKey(references = {@ForeignKeyReference(columnName = "CONTACT_GUID", foreignKeyColumnName = "GUID")})
+ private Contact contact;
+
+ @ForeignKey(references = {@ForeignKeyReference(columnName = "ADDRESS_GUID", foreignKeyColumnName = "GUID")})
+ private Address address;
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+
+ public Contact getContact()
+ {
+ return contact;
+ }
+
+ public void setContact(Contact contact)
+ {
+ this.contact = contact;
+ }
+
+ public Address getAddress()
+ {
+ return address;
+ }
+
+ public void setAddress(Address address)
+ {
+ this.address = address;
+ }
+}
diff --git a/Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/entities/User.java b/Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/entities/User.java
deleted file mode 100644
index 469064ead..000000000
--- a/Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/entities/User.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.twine.tango.dal.entities;
-
-import android.arch.persistence.room.ColumnInfo;
-import android.arch.persistence.room.ColumnInfo.SQLiteTypeAffinity;
-import android.arch.persistence.room.Entity;
-import android.arch.persistence.room.PrimaryKey;
-import android.support.annotation.NonNull;
-
-/**
- * Created by Roy on 11/23/2017.
- */
-
-@Entity(tableName = "USERS")
-public class User
-{
- @ColumnInfo(name = "ID")
- @PrimaryKey(autoGenerate = true)
- private int id;
-
- @ColumnInfo(name = "FIRST_NAME")
- private String firstName;
-
- @ColumnInfo(name = "LAST_NAME")
- private String lastName;
-
- public int getId()
- {
- return id;
- }
-
- public void setId(int id)
- {
- this.id = id;
- }
-
- public String getFirstName()
- {
- return firstName;
- }
-
- public void setFirstName(String firstName)
- {
- this.firstName = firstName;
- }
-
- public String getLastName()
- {
- return lastName;
- }
-
- public void setLastName(String lastName)
- {
- this.lastName = lastName;
- }
-}