· 10 years ago · Jul 08, 2016, 10:06 AM
1public class DBHelper extends SQLiteOpenHelper {
2 private static final String DB_FILENAME = "MyDataBase.db";
3 private static final int DB_VERSION = 1;
4 private static final SQLiteDatabase.CursorFactory factory = null;
5
6 private static final int IDX_UTILIZADORES = 0;
7 private static final int IDX_REGISTOS_GEOLOGICOS = 1;
8 private static final int IDX_TIPO_TECNICAS = 2;
9 private static final int IDX_TIPO_METODOS = 3;
10
11 //Array com todos os nomes das tabelas
12 private static final String [] TableNames = {
13 "utilizadores", "registos_geologicos", "tipo_tecnicas", "tipo_metodos"
14 };
15
16 //Colunas da tabela utilizadores
17 private static final String T_UTILIZADORES_ID = "_id_utilizador";
18 private static final String T_UTILIZADORES_NOME = "nome";
19 private static final String T_UTILIZADORES_PASSWORD = "password";
20 private static final String T_UTILIZADORES_EMAIL = "email";
21
22 //String sql para criar tabela utilizadores
23 private static final String T_CREATE_UTILIZADORES = "CREATE TABLE " +TableNames[IDX_UTILIZADORES] +
24 "(" + T_UTILIZADORES_ID + " INTEGER PRIMARY KEY AUTOINCREMENT" +
25 ", " + T_UTILIZADORES_NOME + " TEXT" +
26 ", " + T_UTILIZADORES_PASSWORD + " TEXT" +
27 ", " + T_UTILIZADORES_EMAIL + " TEXT)" ;
28
29 //Colunas da tabela Tipo_Metodos
30 private static final String T_TIPO_METODOS_ID = "_id_metodos";
31 private static final String T_TIPO_METODOS_NOME = "nome_tipo_dados";
32
33 //String sql para criar tabela Tipo_Metodos
34 private static final String T_CREATE_TIPO_METODOS = "CREATE TABLE " +TableNames[IDX_TIPO_METODOS] +
35 "(" + T_TIPO_METODOS_ID + " INTEGER PRIMARY KEY AUTOINCREMENT" +
36 ", " + T_TIPO_METODOS_NOME + " TEXT)" ;
37
38 //Colunas da tabela Tipo_Tecnicas
39 private static final String T_TIPO_TECNICAS_ID = "_id_tecnicas";
40 private static final String T_TIPO_TECNICAS_NOME = "nome_tipo_tecnicas";
41 private static final String T_TIPO_TECNICAS_ID_TIPO_METODOS = "id_tipo_metodos";
42
43 //String sql para criar tabela Tipo_Metodos
44 private static final String T_CREATE_TIPO_TECNICAS = "CREATE TABLE " +TableNames[IDX_TIPO_TECNICAS] +
45 "(" + T_TIPO_TECNICAS_ID + " INTEGER PRIMARY KEY AUTOINCREMENT" +
46 ", " + T_TIPO_TECNICAS_NOME + " TEXT" +
47 ", " + T_TIPO_TECNICAS_ID_TIPO_METODOS + " INTEGER" +
48 ", FOREIGN KEY(" + T_TIPO_TECNICAS_ID_TIPO_METODOS +
49 ") REFERENCES " + TableNames[IDX_TIPO_METODOS] + "(" + T_TIPO_METODOS_ID +
50 ") ON DELETE CASCADE ON UPDATE CASCADE)";
51
52 //Colunas da tabela Registos
53 private static final String T_REGISTOS_ID = "_id_registos";
54 private static final String T_REGISTOS_DESIGNACAO = "designacao";
55 private static final String T_REGISTOS_REFERENCIA = "referencia";
56 private static final String T_REGISTOS_REFERENCIA_AMOSTRA = "referencia_amostra";
57 private static final String T_REGISTOS_DATA_COLHEITA = "data_colheita";
58 private static final String T_REGISTOS_MATRIZ = "matriz";
59 private static final String T_REGISTOS_TIPO_AMOSTRA = "tipo_amostra";
60 private static final String T_REGISTOS_DUPLICADO = "duplicado";
61 private static final String T_REGISTOS_HORA_INICIO = "hora_inicio";
62 private static final String T_REGISTOS_HORA_FINAL = "hora_final";
63 private static final String T_REGISTOS_INCREMENTOS = "incrementos";
64 private static final String T_REGISTOS_PESO = "peso";
65 private static final String T_REGISTOS_EQUIPAMENTO_RECOLHA = "equipamento_recolha";
66 private static final String T_REGISTOS_PROFUNDIDDE = "profundidade";
67 private static final String T_REGISTOS_CONDICOES_ATMOSFERICAS = "condicoes_atmosfericas";
68 private static final String T_REGISTOS_MODO_ACONDICIONAMENTO = "modo_acondicionamento";
69 private static final String T_REGISTOS_PARAMETROS = "parametros_analise";
70 private static final String T_REGISTOS_FRASCOS = "frascos";
71 private static final String T_REGISTOS_GRANULOMETRIA_PRIMARIA = "granulometria_primaria";
72 private static final String T_REGISTOS_GRANULOMETRIA_SECUNDARIA = "granulometria_secundaria";
73 private static final String T_REGISTOS_COR = "cor";
74 private static final String T_REGISTOS_ODOR = "odor";
75 private static final String T_REGISTOS_HUMIDADE = "humidade";
76 private static final String T_REGISTOS_OBSERVACOES = "observacoes";
77 private static final String T_REGISTOS_ID_USER = "id_user";
78 private static final String T_REGISTOS_ID_TIPO_TECNICA = "id_tipo_tecnica";
79
80 private static final String T_CREATE_REGISTOS = "CREATE TABLE " + TableNames[IDX_REGISTOS_GEOLOGICOS] +" (" +
81 T_REGISTOS_ID + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, " +
82 T_REGISTOS_DESIGNACAO + " TEXT, " +
83 T_REGISTOS_REFERENCIA + " TEXT, " +
84 T_REGISTOS_REFERENCIA_AMOSTRA + " TEXT, " +
85 T_REGISTOS_DATA_COLHEITA + " TEXT, " +
86 T_REGISTOS_MATRIZ + " TEXT, " +
87 T_REGISTOS_TIPO_AMOSTRA + " TEXT, " +
88 T_REGISTOS_DUPLICADO + " TEXT, " +
89 T_REGISTOS_HORA_INICIO + " TEXT, " +
90 T_REGISTOS_HORA_FINAL + " TEXT, " +
91 T_REGISTOS_INCREMENTOS + " TEXT, " +
92 T_REGISTOS_PESO + " TEXT, " +
93 T_REGISTOS_EQUIPAMENTO_RECOLHA + " TEXT, " +
94 T_REGISTOS_PROFUNDIDDE + " TEXT, " +
95 T_REGISTOS_CONDICOES_ATMOSFERICAS + " TEXT, " +
96 T_REGISTOS_MODO_ACONDICIONAMENTO + " TEXT, " +
97 T_REGISTOS_PARAMETROS + " TEXT, " +
98 T_REGISTOS_FRASCOS + " TEXT, " +
99 T_REGISTOS_GRANULOMETRIA_PRIMARIA + " TEXT, " +
100 T_REGISTOS_GRANULOMETRIA_SECUNDARIA + " TEXT, " +
101 T_REGISTOS_COR + " TEXT, " +
102 T_REGISTOS_ODOR + " TEXT, " +
103 T_REGISTOS_HUMIDADE + " TEXT, " +
104 T_REGISTOS_OBSERVACOES + " TEXT, " +
105 T_REGISTOS_ID_USER + " INTEGER NOT NULL, " +
106 T_REGISTOS_ID_TIPO_TECNICA + " INTEGER NOT NULL, " +
107 "FOREIGN KEY " + "(" + T_REGISTOS_ID_USER + ") " +
108 "REFERENCES " + TableNames[IDX_UTILIZADORES] + "(" + T_UTILIZADORES_ID + ") " +
109 "ON DELETE CASCADE ON UPDATE CASCADE, " +
110 "FOREIGN KEY " + "(" + T_REGISTOS_ID_TIPO_TECNICA + ") " +
111 "REFERENCES " + TableNames[IDX_TIPO_TECNICAS] + "(" + T_TIPO_TECNICAS_ID + ") " +
112 "ON DELETE CASCADE ON UPDATE CASCADE" + ")";
113
114 //todos os comandos sql de criação de tabelas
115 private static final String [] T_CREATE = {
116 T_CREATE_UTILIZADORES, T_CREATE_TIPO_METODOS, T_CREATE_TIPO_TECNICAS, T_CREATE_REGISTOS
117 };
118
119 public DBHelper(Context context) {
120 super(context, DB_FILENAME, factory, DB_VERSION);
121 }
122
123 @Override
124 public void onCreate(SQLiteDatabase db) {
125 // criar todas as tabelas
126 for (int i = 0; i < T_CREATE.length; i++) {
127 db.execSQL(T_CREATE[i]);
128 }
129 }
130
131 @Override
132 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
133 for (int i = 0; i < TableNames.length; i++) {
134 db.execSQL("DROP TABLE IF EXISTS " + TableNames[i]);
135 }
136 onCreate(db);
137 }
138
139
140 public long insertMetodos(Metodos metodos)
141 {
142 SQLiteDatabase db = this.getWritableDatabase();
143 ContentValues contentValues = new ContentValues();
144
145 contentValues.put(T_TIPO_METODOS_NOME, metodos.getNome_tipo_metodos());
146 long metodosID = db.insert(TableNames[IDX_TIPO_METODOS], null, contentValues);
147 return metodosID;
148 }
149
150 public long insertTecnicas(Tecnicas tecnicas)
151 {
152 SQLiteDatabase db = this.getWritableDatabase();
153 ContentValues contentValues = new ContentValues();
154
155 contentValues.put(T_TIPO_TECNICAS_NOME, tecnicas.getNome_tipo_tecnicas());
156 contentValues.put(T_TIPO_TECNICAS_ID_TIPO_METODOS, tecnicas.getId_tipo_metodos());
157 long tecnincasID = db.insert(TableNames[IDX_TIPO_TECNICAS], null, contentValues);
158 return tecnincasID;
159 }
160
161 public void insertUtilizador(Utilizadors utilizadors)
162 {
163 SQLiteDatabase db = this.getWritableDatabase();
164 ContentValues contentValues = new ContentValues();
165
166 contentValues.put(T_UTILIZADORES_NOME, utilizadors.getNome());
167 contentValues.put(T_UTILIZADORES_EMAIL, utilizadors.getEmail());
168 contentValues.put(T_UTILIZADORES_PASSWORD, utilizadors.getPassword());
169
170 db.insert(TableNames[IDX_UTILIZADORES], null, contentValues);
171
172
173// long utilizadorID = db.insert(TableNames[IDX_UTILIZADORES], null, contentValues);
174// return utilizadorID;
175 }
176
177 public boolean getUserAndPass(String login, String pass)
178 {
179 SQLiteDatabase db = this.getReadableDatabase();
180 Utilizadors utilizadors = new Utilizadors();
181 long res = -1;
182
183 String selectQuery = "SELECT " + T_UTILIZADORES_NOME + "," +T_UTILIZADORES_PASSWORD +
184 " FROM " + TableNames[IDX_UTILIZADORES] + " WHERE " + T_UTILIZADORES_NOME + " = " +
185 "'" + login + "' " + "AND " + T_UTILIZADORES_PASSWORD + " = " +
186 "'" + pass + "'";
187
188 Cursor cursor = db.rawQuery(selectQuery, null);
189 return cursor != null && cursor.getCount() == 1;
190 }
191
192 public List<String> getAllUserNames() {
193 List<String> res = new ArrayList<>();
194 SQLiteDatabase db = this.getReadableDatabase();
195 String sql = "SELECT " + T_UTILIZADORES_NOME + " FROM " + TableNames[IDX_UTILIZADORES];
196
197 Cursor cursor = db.rawQuery(sql, null);
198 if (cursor.moveToFirst()) {
199 do {
200 String name = cursor.getString(cursor.getColumnIndex(T_UTILIZADORES_NOME));
201 res.add(name);
202 } while (cursor.moveToNext());
203 }
204 cursor.close();
205
206 return res;
207 }
208}