Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
yotta
/
pictogram
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
60
Merge Requests
0
Pipelines
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
84dbe6ed
authored
Mar 07, 2016
by
Fernando Martínez Santiago
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
working on sockets on/off bug
parent
900acc08
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
97 additions
and
89 deletions
android/Pictogram/app/build.gradle
android/Pictogram/app/src/main/java/com/yottacode/net/RestapiWrapper.java
android/Pictogram/app/src/main/java/com/yottacode/pictogram/action/Room.java
android/Pictogram/app/src/main/java/com/yottacode/pictogram/dao/Device.java
android/Pictogram/app/src/main/java/com/yottacode/pictogram/dao/PCBDBHelper.java
android/Pictogram/app/src/main/java/com/yottacode/pictogram/dao/Picto.java
android/Pictogram/app/src/main/java/com/yottacode/pictogram/grammar/Vocabulary.java
android/Pictogram/app/src/main/java/com/yottacode/pictogram/grammar/VocabularyIterator.java
android/Pictogram/app/src/main/java/com/yottacode/pictogram/net/NetService.java
android/Pictogram/app/src/main/java/com/yottacode/pictogram/net/PictoUploader.java
android/Pictogram/app/src/main/res/layout/activity_splash_screen.xml
android/Pictogram/app/src/main/res/raw/pcbdb_create.sql
android/Pictogram/app/build.gradle
View file @
84dbe6ed
...
@@ -3,12 +3,6 @@ apply plugin: 'com.android.application'
...
@@ -3,12 +3,6 @@ apply plugin: 'com.android.application'
android
{
android
{
signingConfigs
{
signingConfigs
{
release_config
{
release_config
{
/*
storeFile file('F:/Users/Fernando/GoogleDrive/tmp/keystore.jks')
keyAlias 'default_key'
keyPassword 'danoia'
storePassword 'danoia'
*/
}
}
}
}
compileSdkVersion
21
compileSdkVersion
21
...
...
android/Pictogram/app/src/main/java/com/yottacode/net/RestapiWrapper.java
View file @
84dbe6ed
...
@@ -249,6 +249,7 @@ public class RestapiWrapper {
...
@@ -249,6 +249,7 @@ public class RestapiWrapper {
// onPostExecute displays the results of the AsyncTask.
// onPostExecute displays the results of the AsyncTask.
@Override
@Override
protected
void
onPostExecute
(
HttpAsyncTaskParams
params
)
{
protected
void
onPostExecute
(
HttpAsyncTaskParams
params
)
{
Log
.
i
(
this
.
getClass
().
getCanonicalName
(),
"PICTO END RESTAPI POSTEXE "
+
params
.
url
+
":"
+
params
.
url_params
.
toString
());
try
{
try
{
//if (params.e)
//if (params.e)
if
(
params
.
result
!=
null
)
{
if
(
params
.
result
!=
null
)
{
...
@@ -269,7 +270,7 @@ public class RestapiWrapper {
...
@@ -269,7 +270,7 @@ public class RestapiWrapper {
}
catch
(
JSONException
e
)
{
}
catch
(
JSONException
e
)
{
params
.
listener
.
error
(
e
);
params
.
listener
.
error
(
e
);
}
}
params
.
url_params
.
clear
();
if
(
params
.
url_params
!=
null
)
params
.
url_params
.
clear
();
}
}
}
}
}
}
\ No newline at end of file
android/Pictogram/app/src/main/java/com/yottacode/pictogram/action/Room.java
View file @
84dbe6ed
...
@@ -19,7 +19,9 @@ import com.yottacode.pictogram.tools.PCBcontext;
...
@@ -19,7 +19,9 @@ import com.yottacode.pictogram.tools.PCBcontext;
import
java.sql.SQLDataException
;
import
java.sql.SQLDataException
;
import
java.text.SimpleDateFormat
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.Enumeration
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.Hashtable
;
import
java.util.LinkedList
;
import
java.util.LinkedList
;
...
@@ -36,8 +38,9 @@ public class Room {
...
@@ -36,8 +38,9 @@ public class Room {
protected
SailsSocketsIO
socket
=
null
;
protected
SailsSocketsIO
socket
=
null
;
protected
boolean
inRoom
=
false
;
protected
boolean
inRoom
=
false
;
protected
Hashtable
<
String
,
Emitter
.
Listener
>
listeners
;
public
Room
(
)
{
public
Room
(
)
{
listeners
=
new
Hashtable
<>();
reconnect
();
reconnect
();
}
}
...
@@ -87,6 +90,7 @@ public class Room {
...
@@ -87,6 +90,7 @@ public class Room {
public
void
call
(
Object
...
args
)
{
public
void
call
(
Object
...
args
)
{
Log
.
i
(
this
.
getClass
().
getName
(),
"Reconnect successful"
);
Log
.
i
(
this
.
getClass
().
getName
(),
"Reconnect successful"
);
subscribe
();
subscribe
();
listen_again
();
inRoom
=
true
;
inRoom
=
true
;
}
}
},
new
Emitter
.
Listener
()
{
},
new
Emitter
.
Listener
()
{
...
@@ -101,8 +105,13 @@ public class Room {
...
@@ -101,8 +105,13 @@ public class Room {
}
}
public
boolean
inRoom
()
{
return
this
.
inRoom
;}
public
boolean
inRoom
()
{
return
this
.
inRoom
;}
public
void
listen
(
String
msg
,
Emitter
.
Listener
listener
)
{
public
void
listen
(
String
msg
,
Emitter
.
Listener
listener
)
{
this
.
socket
.
registerMessage
(
msg
,
listener
);
this
.
listeners
.
put
(
msg
,
listener
);
}
private
void
listen_again
()
{
for
(
String
msg:
this
.
listeners
.
keySet
())
this
.
socket
.
registerMessage
(
msg
,
this
.
listeners
.
get
(
msg
));
}
}
void
subscribe
()
{
void
subscribe
()
{
try
{
try
{
SubscribeAction
action
=
new
SubscribeAction
();
SubscribeAction
action
=
new
SubscribeAction
();
...
...
android/Pictogram/app/src/main/java/com/yottacode/pictogram/dao/Device.java
View file @
84dbe6ed
...
@@ -38,7 +38,6 @@ public class Device extends SQLiteOpenHelper {
...
@@ -38,7 +38,6 @@ public class Device extends SQLiteOpenHelper {
Context
context
;
Context
context
;
final
static
class
PARAMS
{
final
static
class
PARAMS
{
static
String
keyword
=
"key"
;
static
String
keyword
=
"key"
;
static
String
token
=
"token"
;
static
String
deviceID
=
"deviceID"
;
static
String
deviceID
=
"deviceID"
;
static
String
serial
=
"serial"
;
static
String
serial
=
"serial"
;
static
String
stu_id
=
"last__stu_id"
;
static
String
stu_id
=
"last__stu_id"
;
...
@@ -56,7 +55,7 @@ public class Device extends SQLiteOpenHelper {
...
@@ -56,7 +55,7 @@ public class Device extends SQLiteOpenHelper {
super
(
context
,
DeviceHelper
.
getDBName
(
context
),
factory
,
version
);
super
(
context
,
DeviceHelper
.
getDBName
(
context
),
factory
,
version
);
if
(
DeviceHelper
.
force_create
(
context
))
{
if
(
DeviceHelper
.
force_create
(
context
))
{
Log
.
i
(
this
.
getClass
().
getCanonicalName
(),
"Forcing create new
database"
);
Log
.
i
(
this
.
getClass
().
getCanonicalName
(),
"Forcing create new
Database "
+
DeviceHelper
.
getDBName
(
context
)
);
context
.
deleteDatabase
(
DeviceHelper
.
getDBName
(
context
));
context
.
deleteDatabase
(
DeviceHelper
.
getDBName
(
context
));
Log
.
i
(
this
.
getClass
().
getCanonicalName
(),
"Database dropped"
);
Log
.
i
(
this
.
getClass
().
getCanonicalName
(),
"Database dropped"
);
}
}
...
...
android/Pictogram/app/src/main/java/com/yottacode/pictogram/dao/PCBDBHelper.java
View file @
84dbe6ed
...
@@ -202,17 +202,17 @@ public class PCBDBHelper extends SQLiteOpenHelper {
...
@@ -202,17 +202,17 @@ public class PCBDBHelper extends SQLiteOpenHelper {
SQLiteDatabase
db
=
this
.
getWritableDatabase
();
SQLiteDatabase
db
=
this
.
getWritableDatabase
();
int
id_stu
=
this
.
getCurrentUser
().
get_id_stu
();
int
id_stu
=
this
.
getCurrentUser
().
get_id_stu
();
int
seconds1
=
Calendar
.
getInstance
().
get
(
Calendar
.
SECOND
),
inserts
=
0
;
int
seconds1
=
Calendar
.
getInstance
().
get
(
Calendar
.
SECOND
),
inserts
=
0
;
int
deleted
=
db
.
delete
(
"collection"
,
"id_stu=?"
,
new
String
[]
{
String
.
valueOf
(
id_stu
)});
db
.
delete
(
"collection"
,
"id_stu=?"
,
new
String
[]
{
String
.
valueOf
(
id_stu
)});
ContentValues
values
=
new
ContentValues
(
5
);
ContentValues
values
=
new
ContentValues
(
5
);
values
.
put
(
"id_stu"
,
id_stu
);
values
.
put
(
"id_stu"
,
id_stu
);
for
(
Picto
picto
:
vocabulary
)
{
for
(
Picto
picto
:
vocabulary
)
{
values
.
put
(
"id_picto"
,
picto
.
get_id
());
values
.
put
(
"id_picto"
,
picto
.
get_id
());
values
.
put
(
"url"
,
picto
.
get_url
());
values
.
put
(
"url"
,
picto
.
get_url
());
values
.
put
(
"translation"
,
picto
.
get_translation
());
values
.
put
(
"translation"
,
picto
.
get_translation
());
values
.
put
(
"attributes"
,
picto
.
get_json_attrs
());
values
.
put
(
"attributes"
,
picto
.
get_json_attrs
());
db
.
insert
(
"collection_detail"
,
null
,
values
);
db
.
insert
(
"collection_detail"
,
null
,
values
);
}
}
int
seconds2
=
Calendar
.
getInstance
().
get
(
Calendar
.
SECOND
);
int
seconds2
=
Calendar
.
getInstance
().
get
(
Calendar
.
SECOND
);
Log
.
i
(
this
.
getClass
().
getName
(),
" Local student vocabulary updated, id:"
+
id_stu
+
", cats: "
+
vocabulary
.
size
()
+
" time:"
+(
seconds2
-
seconds1
));
Log
.
i
(
this
.
getClass
().
getName
(),
" Local student vocabulary updated, id:"
+
id_stu
+
", cats: "
+
vocabulary
.
size
()
+
" time:"
+(
seconds2
-
seconds1
));
db
.
close
();
db
.
close
();
...
@@ -263,7 +263,10 @@ public class PCBDBHelper extends SQLiteOpenHelper {
...
@@ -263,7 +263,10 @@ public class PCBDBHelper extends SQLiteOpenHelper {
public
void
modifyPicto
(
int
picto_id
,
String
attrs
)
{
public
void
modifyPicto
(
int
picto_id
,
String
attrs
)
{
int
id_stu
=
this
.
getCurrentUser
().
get_id_stu
();
int
id_stu
=
this
.
getCurrentUser
().
get_id_stu
();
SQLiteDatabase
db
=
this
.
getWritableDatabase
();
SQLiteDatabase
db
=
this
.
getWritableDatabase
();
db
.
execSQL
(
"UPDATE collection SET attributes='"
+
attrs
+
"' WHERE id_stu="
+
id_stu
+
" AND id_picto="
+
picto_id
);
ContentValues
values
=
new
ContentValues
(
1
);
values
.
put
(
"attributes"
,
attrs
);
int
updates
=
db
.
update
(
"collection"
,
values
,
"id_stu=? AND id_picto=?"
,
new
String
[]
{
Integer
.
toString
(
id_stu
),
Integer
.
toString
(
picto_id
)});
Log
.
i
(
this
.
getClass
().
getCanonicalName
(),
"Modify "
+
updates
+
" read only db? "
+
db
.
isReadOnly
()+
" Picto attributes: "
+
picto_id
+
" attributes="
+
attrs
);
db
.
close
();
db
.
close
();
}
}
...
...
android/Pictogram/app/src/main/java/com/yottacode/pictogram/dao/Picto.java
View file @
84dbe6ed
...
@@ -326,6 +326,7 @@ public class Picto extends Img {
...
@@ -326,6 +326,7 @@ public class Picto extends Img {
e
.
printStackTrace
();
e
.
printStackTrace
();
Log
.
e
(
this
.
getClass
().
getCanonicalName
(),
e
.
getMessage
());
Log
.
e
(
this
.
getClass
().
getCanonicalName
(),
e
.
getMessage
());
}
}
PCBcontext
.
getActionLog
().
log
(
new
VocabularyAction
(
VocabularyAction
.
ALTERATTRS
,
this
));
return
is_enabled
();
return
is_enabled
();
}
}
...
@@ -344,13 +345,16 @@ public class Picto extends Img {
...
@@ -344,13 +345,16 @@ public class Picto extends Img {
if
(
modified
)
if
(
modified
)
try
{
try
{
this
.
attributes
.
put
(
JSON_ATTTRS
.
PCB_STATUS_MODIFICATION
,
true
);
this
.
attributes
.
put
(
JSON_ATTTRS
.
PCB_STATUS_MODIFICATION
,
true
);
PCBcontext
.
getPcbdb
().
modifyPicto
(
this
.
get_id
(),
this
.
get_json_attrs
());
PCBcontext
.
getActionLog
().
log
(
new
VocabularyAction
(
VocabularyAction
.
ALTERATTRS
,
this
));
PCBcontext
.
getActionLog
().
log
(
new
VocabularyAction
(
VocabularyAction
.
ALTERATTRS
,
this
));
}
catch
(
JSONException
e
)
{
}
catch
(
JSONException
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
Log
.
e
(
this
.
getClass
().
getCanonicalName
(),
e
.
getMessage
());
Log
.
e
(
this
.
getClass
().
getCanonicalName
(),
e
.
getMessage
());
}
}
else
else
{
this
.
attributes
.
remove
(
JSON_ATTTRS
.
PCB_STATUS_MODIFICATION
);
this
.
attributes
.
remove
(
JSON_ATTTRS
.
PCB_STATUS_MODIFICATION
);
PCBcontext
.
getPcbdb
().
modifyPicto
(
this
.
get_id
(),
this
.
get_json_attrs
());
}
}
}
}
}
\ No newline at end of file
android/Pictogram/app/src/main/java/com/yottacode/pictogram/grammar/Vocabulary.java
View file @
84dbe6ed
...
@@ -333,6 +333,7 @@ public class Vocabulary implements Iterable<Picto> {
...
@@ -333,6 +333,7 @@ public class Vocabulary implements Iterable<Picto> {
e
.
printStackTrace
();
e
.
printStackTrace
();
Log
.
e
(
Vocabulary
.
class
.
getCanonicalName
(),
e
.
getMessage
());
Log
.
e
(
Vocabulary
.
class
.
getCanonicalName
(),
e
.
getMessage
());
}
}
PCBcontext
.
getActionLog
().
log
(
new
VocabularyAction
(
VocabularyAction
.
ADD
,
picto
));
return
picto
;
return
picto
;
}
}
...
...
android/Pictogram/app/src/main/java/com/yottacode/pictogram/grammar/VocabularyIterator.java
View file @
84dbe6ed
...
@@ -23,7 +23,7 @@ public class VocabularyIterator implements Iterator<Picto> {
...
@@ -23,7 +23,7 @@ public class VocabularyIterator implements Iterator<Picto> {
this
.
keys
=
pictos
.
keys
();
this
.
keys
=
pictos
.
keys
();
if
(
pictos
.
size
()>
1
)
{
if
(
pictos
.
size
()>
1
)
{
this
.
pictos
=
pictos
;
this
.
pictos
=
pictos
;
this
.
category
=
pictos
.
keys
()
.
nextElement
();
this
.
category
=
this
.
keys
.
nextElement
();
}
}
else
{
else
{
...
...
android/Pictogram/app/src/main/java/com/yottacode/pictogram/net/NetService.java
View file @
84dbe6ed
...
@@ -55,7 +55,7 @@ public class NetService implements Runnable {
...
@@ -55,7 +55,7 @@ public class NetService implements Runnable {
}
}
});
});
Log
.
i
(
this
.
getClass
().
getName
(),
"Checking Pictogram server access..."
);
Log
.
i
(
this
.
getClass
().
getName
(),
"Checking Pictogram server access..."
);
Log
.
d
(
this
.
getClass
().
getName
(),
this
.
updated
?
"Pictogram server access ok"
:
"Pictogram server access failed, Internet connection available?"
);
Log
.
i
(
this
.
getClass
().
getName
(),
this
.
updated
?
"Pictogram server access ok"
:
"Pictogram server access failed, Internet connection available?"
);
ScheduledThreadPoolExecutor
exec
=
new
ScheduledThreadPoolExecutor
(
1
);
ScheduledThreadPoolExecutor
exec
=
new
ScheduledThreadPoolExecutor
(
1
);
exec
.
scheduleWithFixedDelay
(
this
,
0
,
delay
,
TimeUnit
.
SECONDS
);
exec
.
scheduleWithFixedDelay
(
this
,
0
,
delay
,
TimeUnit
.
SECONDS
);
}
}
...
@@ -87,12 +87,13 @@ public class NetService implements Runnable {
...
@@ -87,12 +87,13 @@ public class NetService implements Runnable {
if
(
result
==
null
)
{
if
(
result
==
null
)
{
updated
=
false
;
updated
=
false
;
}
else
if
(!
updated
)
{
}
else
if
(!
updated
)
{
Log
.
i
(
this
.
getClass
().
getName
(),
"PCB reconnect"
);
PCBcontext
.
getRoom
().
reconnect
();
PCBcontext
.
getRoom
().
reconnect
();
PCBcontext
.
getVocabulary
().
synchronize
();
PCBcontext
.
getVocabulary
().
synchronize
();
PCBcontext
.
getActionLog
().
batch
();
PCBcontext
.
getActionLog
().
batch
();
updated
=
true
;
updated
=
true
;
}
}
Log
.
i
(
this
.
getClass
().
getName
(),
"PCB status checked. Updated? "
+
updated
);
Log
.
i
(
this
.
getClass
().
getName
(),
"PCB status checked. Updated? "
+
updated
+
" in room?"
+
PCBcontext
.
getRoom
().
inRoom
()
);
}
}
@Override
@Override
...
...
android/Pictogram/app/src/main/java/com/yottacode/pictogram/net/PictoUploader.java
View file @
84dbe6ed
...
@@ -34,44 +34,6 @@ public class PictoUploader {
...
@@ -34,44 +34,6 @@ public class PictoUploader {
this
.
picto
=
picto
;
this
.
picto
=
picto
;
}
}
/**
* if the status of a given picto was modifed from the PCB it is uploaded to the server
*
*/
public
void
uploadState
(
){
Hashtable
<
String
,
String
>
params
=
new
Hashtable
<
String
,
String
>(
1
);
params
.
put
(
"attributes"
,
picto
.
get_json_attrs
());
params
.
put
(
"id_stu"
,
Integer
.
toString
(
PCBcontext
.
getPcbdb
().
getCurrentUser
().
get_id_stu
()));
params
.
put
(
"id_pic"
,
Integer
.
toString
(
this
.
picto
.
get_id
()));
picto
.
status_modified
(
false
);
Log
.
i
(
this
.
getClass
().
getCanonicalName
(),
"Uploading "
+
params
.
toString
());
PCBcontext
.
getRestapiWrapper
().
ask
(
PCBcontext
.
getPcbdb
().
getCurrentUser
().
get_restapi_operation_stu
()
+
"/picto"
,
params
,
"put"
,
new
iRestapiListener
()
{
@Override
public
void
preExecute
()
{
}
@Override
public
void
result
(
JSONArray
result
)
{
}
@Override
public
void
result
(
JSONObject
result
)
{
Log
.
i
(
this
.
getClass
().
getCanonicalName
(),
"Uploaded state result: "
+
result
.
toString
());
}
@Override
public
void
error
(
Exception
e
)
{
Log
.
e
(
this
.
getClass
().
getCanonicalName
(),
"Error: "
+
e
.
getLocalizedMessage
());
picto
.
status_modified
(
true
);
}
}
);
PCBcontext
.
getActionLog
().
log
(
new
VocabularyAction
(
VocabularyAction
.
ALTERATTRS
,
this
.
picto
));
}
private
int
uploadImg
(
Img
img
)
throws
UnsupportedEncodingException
{
private
int
uploadImg
(
Img
img
)
throws
UnsupportedEncodingException
{
int
img_id
;
int
img_id
;
if
(!
img
.
get_filetype
().
equalsIgnoreCase
(
"png"
))
if
(!
img
.
get_filetype
().
equalsIgnoreCase
(
"png"
))
...
@@ -201,13 +163,59 @@ public class PictoUploader {
...
@@ -201,13 +163,59 @@ public class PictoUploader {
*Upload local picto. It requires: i) to upload the image, ii) to upload the attributes and iii) to upload the expression
*Upload local picto. It requires: i) to upload the image, ii) to upload the attributes and iii) to upload the expression
**/
**/
public
void
upload
()
throws
IOException
{
public
void
upload
()
throws
IOException
{
int
img_id
=
uploadImg
(
this
.
picto
);
if
(
PCBcontext
.
getNetService
().
online
())
{
if
(
img_id
>
0
)
{
int
img_id
=
uploadImg
(
this
.
picto
);
uploadAttributes
(
img_id
);
uploadTranslation
(
img_id
);
if
(
img_id
>
0
)
{
PCBcontext
.
getActionLog
().
log
(
new
VocabularyAction
(
VocabularyAction
.
ADD
,
this
.
picto
));
uploadAttributes
(
img_id
);
uploadTranslation
(
img_id
);
}
}
}
}
}
/**
* if the status of a given picto was modifed from the PCB it is uploaded to the server
*
*/
public
void
uploadState
(
){
Hashtable
<
String
,
String
>
params
=
new
Hashtable
<
String
,
String
>(
1
);
params
.
put
(
"attributes"
,
picto
.
get_json_attrs
());
params
.
put
(
"id_stu"
,
Integer
.
toString
(
PCBcontext
.
getPcbdb
().
getCurrentUser
().
get_id_stu
()));
params
.
put
(
"id_pic"
,
Integer
.
toString
(
this
.
picto
.
get_id
()));
if
(
PCBcontext
.
getNetService
().
online
())
{
Log
.
i
(
this
.
getClass
().
getCanonicalName
(),
"Uploading "
+
params
.
toString
());
PCBcontext
.
getRestapiWrapper
().
ask
(
PCBcontext
.
getPcbdb
().
getCurrentUser
().
get_restapi_operation_stu
()
+
"/picto"
,
params
,
"put"
,
new
iRestapiListener
()
{
@Override
public
void
preExecute
()
{
}
@Override
public
void
result
(
JSONArray
result
)
{
Log
.
i
(
this
.
getClass
().
getCanonicalName
(),
"Upload Picto ok"
+
PictoUploader
.
this
.
picto
.
get_id
());
picto
.
status_modified
(
false
);
}
@Override
public
void
result
(
JSONObject
result
)
{
Log
.
i
(
this
.
getClass
().
getCanonicalName
(),
"Upload ok Picto "
+
PictoUploader
.
this
.
picto
.
get_id
());
picto
.
status_modified
(
false
);
}
@Override
public
void
error
(
Exception
e
)
{
Log
.
e
(
this
.
getClass
().
getCanonicalName
(),
"Picto Error: "
+
e
.
getLocalizedMessage
());
picto
.
status_modified
(
true
);
}
}
);
}
}
}
}
android/Pictogram/app/src/main/res/layout/activity_splash_screen.xml
View file @
84dbe6ed
...
@@ -13,18 +13,12 @@
...
@@ -13,18 +13,12 @@
android:contentDescription=
"@string/app_name"
android:contentDescription=
"@string/app_name"
android:orientation=
"vertical"
android:orientation=
"vertical"
android:src=
"@drawable/yottalogo72p"
android:src=
"@drawable/yottalogo72p"
android:layout_alignParentTop=
"true"
android:scaleX=
"0.5"
android:layout_centerHorizontal=
"true"
android:scaleY=
"0.5"
android:layout_marginTop=
"120dp"
/>
android:id=
"@+id/imageView2"
android:layout_alignParentBottom=
"true"
<TextView
android:layout_alignParentEnd=
"true"
android:layout_width=
"wrap_content"
android:layout_marginBottom=
"44dp"
/>
android:layout_height=
"wrap_content"
android:textAppearance=
"?android:attr/textAppearanceMedium"
android:text=
"presenta..."
android:id=
"@+id/textView2"
android:layout_centerVertical=
"true"
android:layout_centerHorizontal=
"true"
/>
<ImageView
<ImageView
android:layout_width=
"200px"
android:layout_width=
"200px"
...
@@ -32,19 +26,10 @@
...
@@ -32,19 +26,10 @@
android:contentDescription=
"@string/app_name"
android:contentDescription=
"@string/app_name"
android:orientation=
"vertical"
android:orientation=
"vertical"
android:src=
"@drawable/logo_pictogram"
android:src=
"@drawable/logo_pictogram"
android:layout_alignParentBottom=
"true"
android:id=
"@+id/imageView"
android:layout_centerHorizontal=
"true"
android:scaleX=
"1.5"
android:layout_marginBottom=
"120dp"
android:scaleY=
"1.5"
android:id=
"@+id/imageView"
/>
android:layout_centerVertical=
"true"
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:textAppearance=
"?android:attr/textAppearanceMedium"
android:text=
"Pictogram"
android:id=
"@+id/textView3"
android:paddingTop=
"70dp"
android:layout_alignBottom=
"@+id/imageView"
android:layout_centerHorizontal=
"true"
/>
android:layout_centerHorizontal=
"true"
/>
</RelativeLayout>
</RelativeLayout>
android/Pictogram/app/src/main/res/raw/pcbdb_create.sql
View file @
84dbe6ed
...
@@ -53,7 +53,8 @@ constraint ck_users UNIQUE(id_stu,id_sup)
...
@@ -53,7 +53,8 @@ constraint ck_users UNIQUE(id_stu,id_sup)
CREATE
TABLE
collection
(
CREATE
TABLE
collection
(
id_stu
INTEGER
NOT
NULL
REFERENCES
student
ON
DELETE
CASCADE
,
id_stu
INTEGER
NOT
NULL
REFERENCES
student
ON
DELETE
CASCADE
,
id_picto
INTEGER
NOT
NULL
REFERENCES
picto
ON
DELETE
CASCADE
,
id_picto
INTEGER
NOT
NULL
REFERENCES
picto
ON
DELETE
CASCADE
,
attributes
VARCHAR
(
1024
)
attributes
VARCHAR
(
1024
),
constraint
ck_collection
UNIQUE
(
id_stu
,
id_picto
)
)
)
;
--
;
--
...
@@ -202,7 +203,7 @@ CREATE TRIGGER trg_delete_collection_detail
...
@@ -202,7 +203,7 @@ CREATE TRIGGER trg_delete_collection_detail
INSTEAD
OF
DELETE
ON
collection_detail
INSTEAD
OF
DELETE
ON
collection_detail
FOR
EACH
ROW
FOR
EACH
ROW
BEGIN
BEGIN
DELETE
FROM
collection
WHERE
id_picto
=
OLD
.
id_picto
;
DELETE
FROM
collection
WHERE
id_picto
=
OLD
.
id_picto
AND
id_stu
=
OLD
.
id_stu
;
END
END
;
--
;
--
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment