Fix upgrade scripts
[platform/core/appfw/aul-1.git] / parser / component / script / upgrade / 1_component_db_upgrade.sh.in
1 #!/bin/sh
2
3 #------------------------------------------#
4 # component db upgrade ver.1 (4.0 -> 5.5)  #
5 #------------------------------------------#
6
7 # Macro
8 PATH=/bin:/usr/bin:/sbin:/usr/sbin
9
10 PATH_DB="$1"
11 PATH_NEW_DB="${PATH_DB}.new"
12 PATH_BACKUP_DB="${PATH_DB}.bak"
13
14 Init() {
15   echo "### Initialize"
16   cp ${PATH_DB} ${PATH_BACKUP_DB}
17   cp ${PATH_DB}-journal ${PATH_BACKUP_DB}-journal
18
19   if [ -e "${PATH_NEW_DB}" ]; then
20     rm ${PATH_NEW_DB}
21   fi
22
23   if [  -e "${PATH_NEW_DB}-journal" ]; then
24     rm ${PATH_NEW_DB}-journal
25   fi
26 }
27
28 # Create new DB
29 CreateNewDB() {
30 sqlite3 ${PATH_NEW_DB} << EOF
31 PRAGMA journal_mode = PERSIST;
32 PRAGMA user_version = @COMPONENT_DB_VERSION@;
33
34 CREATE TABLE IF NOT EXISTS component_info (
35   package TEXT NOT NULL,
36   app_id TEXT NOT NULL,
37   component_id TEXT NOT NULL,
38   component_type TEXT NOT NULL,
39   component_launch_mode TEXT NOT NULL,
40   component_main TEXT NOT NULL,
41   component_icon_display NOT NULL,
42   component_taskmanage NOT NULL,
43   PRIMARY KEY (component_id)
44 );
45
46 CREATE TABLE IF NOT EXISTS component_localized_info (
47   component_id TEXT NOT NULL,
48   component_locale TEXT NOT NULL DEFAULT 'No Locale',
49   component_label TEXT,
50   component_icon TEXT,
51   PRIMARY KEY (component_id, component_locale)
52   FOREIGN KEY (component_id)
53   REFERENCES component_info(component_id) ON DELETE CASCADE
54 );
55
56 EOF
57 }
58
59 # Insert old data into new DB
60 InsertComponentInfo() {
61   echo " - Insert component_info"
62   TABLE=`sqlite3 ${PATH_DB} 'SELECT package, app_id, component_id, component_type, component_launch_mode, component_main, component_icon_display, component_taskmanage  FROM component_info;'`
63   for ROW in ${TABLE}; do
64     IFS='|' read -ra VALUE <<< "${ROW}";
65     QUERY="INSERT INTO component_info(package, app_id, component_id, component_type, component_launch_mode, component_main, component_icon_display, component_taskmanage) VALUES('${VALUE[0]}', '${VALUE[1]}', '${VALUE[2]}', '${VALUE[3]}', '${VALUE[4]}', '${VALUE[5]}', '${VALUE[6]}', '${VALUE[7]}');"
66     echo " + Query: ${QUERY}"
67     sqlite3 ${PATH_NEW_DB} "${QUERY}"
68   done
69 }
70
71 InsertComponentLocalizedInfo() {
72   echo " - Insert component_localized_info"
73   TABLE=`sqlite3 ${PATH_DB} 'SELECT component_id, component_locale, component_label, component_icon  FROM component_localized_info;'`
74   for ROW in ${TABLE}; do
75     IFS='|' read -ra VALUE <<< "${ROW}";
76     QUERY="INSERT INTO component_localized_info(component_id, component_locale, component_label, component_icon) VALUES('${VALUE[0]}', '${VALUE[1]}', '${VALUE[2]}', '${VALUE[3]}');"
77     echo " + Query: ${QUERY}"
78     sqlite3 ${PATH_NEW_DB} "${QUERY}"
79   done
80 }
81
82 Upgrade() {
83   echo "### Upgrade"
84   CreateNewDB
85
86   InsertComponentInfo
87   InsertComponentLocalizedInfo
88
89   cp ${PATH_NEW_DB} ${PATH_DB}
90   cp ${PATH_NEW_DB}-journal ${PATH_DB}-journal
91
92   chown :system_share ${PATH_DB}
93   chown :system_share ${PATH_DB}-journal
94   chsmack -a User::Home ${PATH_DB}
95   chsmack -a User::Home ${PATH_DB}-journal
96   chmod 664 ${PATH_DB}
97   chmod 664 ${PATH_DB}-journal
98 }
99
100 Fini() {
101   echo "### Finish"
102   rm ${PATH_NEW_DB}
103   rm ${PATH_NEW_DB}-journal
104
105   rm ${PATH_BACKUP_DB}
106   rm ${PATH_BACKUP_DB}-journal
107 }
108
109 echo "#### 1. Upgrade component db ####"
110 Init
111 Upgrade
112 Fini
113 echo "#### 1. Upgrade component db [Done] ####"