rhodes 2.2.4.beta.1 → 2.2.5.beta.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +10 -0
- data/Rakefile +119 -3
- data/lib/build/jake.rb +15 -1
- data/lib/framework/dateME.rb +6 -1
- data/lib/framework/rho/render.rb +18 -15
- data/lib/framework/rho/rho.rb +105 -43
- data/lib/framework/rho/rhoapplication.rb +1 -1
- data/lib/framework/rho/rhocontact.rb +41 -13
- data/lib/framework/rho/rhocontroller.rb +10 -1
- data/lib/framework/rho/rhoevent_c.rb +6 -1
- data/lib/framework/rho/rhosupport.rb +1 -1
- data/lib/framework/rhodes.rb +1 -1
- data/lib/framework/rholang/rhomsg_de.rb +1 -1
- data/lib/framework/rholang/rhomsg_es.rb +1 -1
- data/lib/framework/rholang/rhomsg_it.rb +28 -0
- data/lib/framework/rhom/rhom.rb +6 -0
- data/lib/framework/rhom/rhom_model.rb +14 -7
- data/lib/framework/rhom/rhom_object_factory.rb +121 -56
- data/lib/framework/version.rb +1 -1
- data/lib/rhodes.rb +1 -1
- data/platform/android/Rhodes/AndroidManifest.full.xml +62 -0
- data/platform/android/Rhodes/AndroidManifest.xml +3 -34
- data/platform/android/Rhodes/jni/include/rhodes/JNIRhodes.h +17 -2
- data/platform/android/Rhodes/jni/src/alert.cpp +16 -0
- data/platform/android/Rhodes/jni/src/callbacks.cpp +27 -3
- data/platform/android/Rhodes/jni/src/nativebar.cpp +3 -0
- data/platform/android/Rhodes/jni/src/nativeview.cpp +131 -1
- data/platform/android/Rhodes/jni/src/phonebook.cpp +102 -41
- data/platform/android/Rhodes/jni/src/rhodes.cpp +113 -32
- data/platform/android/Rhodes/jni/src/ringtones.cpp +1 -1
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/Capabilities.java +1 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/Rhodes.java +9 -8
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesService.java +184 -49
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/SplashScreen.java +49 -25
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/alert/Alert.java +104 -57
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/event/EventStore.java +36 -2
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/geolocation/GeoLocation.java +24 -14
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/geolocation/GeoLocationImpl.java +7 -8
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/SimpleMainView.java +185 -3
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/nativeview/RhoNativeViewManager.java +54 -1
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/phonebook/Contact.java +107 -14
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/phonebook/ContactAccessorNew.java +72 -24
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/phonebook/ContactAccessorOld.java +22 -21
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/phonebook/Phonebook.java +91 -11
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/util/PerformOnUiThread.java +10 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/webview/ChromeClientNew.java +11 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/webview/RhoWebSettingsNew.java +10 -0
- data/platform/android/build/android.rake +50 -9
- data/platform/android/build/librhocommon_build.files +1 -0
- data/platform/bb/Hsqldb/src/org/hsqldb/Parser.java +3 -2
- data/platform/bb/Hsqldb/src/org/hsqldb/SchemaManager.java +3 -1
- data/platform/bb/Hsqldb/src/org/hsqldb/Session.java +7 -0
- data/platform/bb/Hsqldb/src/org/hsqldb/Tokenizer.java +2 -2
- data/platform/bb/RubyVM/RubyVM.jdp +1 -0
- data/platform/bb/RubyVM/src/com/rho/AppBuildConfig.java +22 -0
- data/platform/bb/RubyVM/src/com/rho/RhoRuby.java +5 -0
- data/platform/bb/RubyVM/src/com/rho/net/RhoConnection.java +1 -1
- data/platform/bb/RubyVM/src/com/rho/sync/SyncEngine.java +51 -4
- data/platform/bb/RubyVM/src/com/rho/sync/SyncNotify.java +21 -10
- data/platform/bb/RubyVM/src/com/rho/sync/SyncSource.java +82 -33
- data/platform/bb/RubyVM/src/com/rho/sync/SyncThread.java +59 -6
- data/platform/bb/RubyVM/src/com/xruby/GeneratedMethods/RubyFloat_Methods.java +5 -0
- data/platform/bb/RubyVM/src/com/xruby/GeneratedMethods/RubyString_Methods.java +19 -7
- data/platform/bb/RubyVM/src/com/xruby/runtime/builtin/ArrayPacker.java +1 -1
- data/platform/bb/RubyVM/src/com/xruby/runtime/builtin/RubyFloat.java +5 -0
- data/platform/bb/RubyVM/src/com/xruby/runtime/builtin/RubyString.java +55 -11
- data/platform/bb/RubyVM/src/com/xruby/runtime/builtin/RubyTime.java +18 -2
- data/platform/bb/RubyVM/src/com/xruby/runtime/lang/RubyKernelModule.java +8 -5
- data/platform/bb/RubyVM/src/j2me/lang/CharacterMe.java +1 -1
- data/platform/bb/RubyVM/src/j2me/util/StringParser.java +2 -0
- data/platform/bb/build/RubyVM_build.files +1 -0
- data/platform/bb/build/bb.rake +21 -2
- data/platform/bb/rhodes/platform/4.7/com/rho/RhoMainScreen.java +3 -3
- data/platform/bb/rhodes/platform/common/com/rho/RhoMainScreen.java +1 -1
- data/platform/bb/rhodes/src/com/rho/RhoRubyHelper.java +1 -2
- data/platform/bb/rhodes/src/com/rho/net/NetworkAccess.java +15 -16
- data/platform/bb/rhodes/src/com/rho/rubyext/RhoCalendar.java +4 -0
- data/platform/bb/rhodes/src/com/rho/rubyext/System.java +58 -0
- data/platform/bb/rhodes/src/rhomobile/RhodesApplication.java +90 -4
- data/platform/iphone/Classes/AppManager/AppManager.m +43 -5
- data/platform/iphone/Classes/Event/Event.h +2 -0
- data/platform/iphone/Classes/Event/Event.m +12 -1
- data/platform/iphone/Classes/GeoLocation/LocationController.m +9 -3
- data/platform/iphone/Classes/MapView/MapViewController.m +20 -9
- data/platform/iphone/Classes/NativeBar.m +27 -0
- data/platform/iphone/Classes/Phonebook/phonebook.m +17 -0
- data/platform/iphone/Classes/RhoAlert.m +61 -1
- data/platform/iphone/Classes/RhoMainView.h +1 -0
- data/platform/iphone/Classes/Rhodes.h +2 -0
- data/platform/iphone/Classes/Rhodes.m +108 -1
- data/platform/iphone/Classes/SimpleMainView.h +4 -0
- data/platform/iphone/Classes/SimpleMainView.m +30 -3
- data/platform/iphone/Classes/SplashViewController.m +3 -1
- data/platform/iphone/Classes/TabbedMainView.h +2 -0
- data/platform/iphone/Classes/TabbedMainView.m +63 -11
- data/platform/iphone/Classes/rho/net/NetRequestImpl.m +26 -0
- data/platform/iphone/Info.plist +12 -1
- data/platform/iphone/RhoLib/RhoLib.xcodeproj/project.pbxproj +8 -0
- data/platform/iphone/rbuild/iphone.rake +181 -25
- data/platform/iphone/rhorunner.xcodeproj/project.pbxproj +5 -5
- data/platform/shared/common/IRhoThreadImpl.h +1 -1
- data/platform/shared/common/PosixThreadImpl.cpp +5 -3
- data/platform/shared/common/PosixThreadImpl.h +1 -1
- data/platform/shared/common/RhoFilePath.h +11 -0
- data/platform/shared/common/RhoNativeViewManager.h +17 -0
- data/platform/shared/common/RhoThread.h +1 -1
- data/platform/shared/common/RhodesApp.cpp +29 -8
- data/platform/shared/common/ThreadQueue.cpp +5 -3
- data/platform/shared/common/ThreadQueue.h +2 -1
- data/platform/shared/common/app_build_configs.c +25 -0
- data/platform/shared/common/app_build_configs.h +11 -0
- data/platform/shared/net/AsyncHttp.cpp +5 -5
- data/platform/shared/net/CURLNetRequest.cpp +25 -7
- data/platform/shared/net/CURLNetRequest.h +2 -1
- data/platform/shared/net/HttpServer.cpp +28 -0
- data/platform/shared/ruby/ext/nativebar/nativebar.i +3 -0
- data/platform/shared/ruby/ext/nativebar/nativebar_wrap.c +26 -1
- data/platform/shared/ruby/ext/rho/rhoruby.c +6 -0
- data/platform/shared/ruby/ext/rho/rhoruby.h +1 -0
- data/platform/shared/ruby/ext/rho/rhosupport.c +15 -2
- data/platform/shared/ruby/ext/syncengine/syncengine.i +14 -2
- data/platform/shared/ruby/ext/syncengine/syncengine_wrap.c +97 -2
- data/platform/shared/ruby/ext/system/system.i +13 -0
- data/platform/shared/ruby/ext/system/system_wrap.c +104 -1
- data/platform/shared/rubyext/RhoAppAdapter.cpp +7 -0
- data/platform/shared/sync/SyncEngine.cpp +43 -3
- data/platform/shared/sync/SyncEngine.h +13 -0
- data/platform/shared/sync/SyncNotify.cpp +41 -23
- data/platform/shared/sync/SyncNotify.h +18 -4
- data/platform/shared/sync/SyncSource.cpp +52 -14
- data/platform/shared/sync/SyncSource.h +1 -0
- data/platform/shared/sync/SyncThread.cpp +29 -9
- data/platform/shared/sync/SyncThread.h +4 -2
- data/platform/wm/RhoLib/RhoLib.vcproj +8 -0
- data/platform/wm/build/build_inf.js +15 -9
- data/platform/wm/build/wm.rake +10 -5
- data/platform/wm/rhodes/Alert.cpp +10 -0
- data/platform/wm/rhodes/Alert.h +3 -3
- data/platform/wm/rhodes/MainWindow.cpp +171 -26
- data/platform/wm/rhodes/MainWindow.h +23 -1
- data/platform/wm/rhodes/MetaHandler.cpp +192 -0
- data/platform/wm/rhodes/MetaHandler.h +31 -0
- data/platform/wm/rhodes/RhoNativeViewManager.cpp +126 -0
- data/platform/wm/rhodes/RhoNativeViewManagerWM.h +20 -0
- data/platform/wm/rhodes/Rhodes.cpp +91 -2
- data/platform/wm/rhodes/Rhodes.rc +15 -6
- data/platform/wm/rhodes/SyncStatusDlg.cpp +32 -0
- data/platform/wm/rhodes/SyncStatusDlg.h +29 -0
- data/platform/wm/rhodes/resource.h +5 -2
- data/platform/wm/rhodes/rho/common/RhoThreadImpl.cpp +3 -1
- data/platform/wm/rhodes/rho/common/RhoThreadImpl.h +1 -1
- data/platform/wm/rhodes/rho/rubyext/SystemImpl.cpp +146 -14
- data/platform/wm/rhodes/rhodes.vcproj +28 -0
- data/rakefile.rb +119 -3
- data/res/build-tools/iphonesim/README +58 -0
- data/res/build-tools/iphonesim/Source/iPhoneSimulator.h +43 -0
- data/res/build-tools/iphonesim/Source/iPhoneSimulator.m +224 -0
- data/res/build-tools/iphonesim/Source/main.m +52 -0
- data/res/build-tools/iphonesim/Source/nsprintf.h +3 -0
- data/res/build-tools/iphonesim/Source/nsprintf.m +42 -0
- data/res/build-tools/iphonesim/build/Release/iphonesim +0 -0
- data/res/build-tools/iphonesim/iPhoneSimulatorRemoteClient/iPhoneSimulatorRemoteClient.h +124 -0
- data/res/build-tools/iphonesim/iphonesim.xcodeproj/project.pbxproj +261 -0
- data/res/build-tools/iphonesim/iphonesim_Prefix.pch +7 -0
- data/res/generators/rhogen.rb +5 -0
- data/res/generators/templates/application/app/layout.erb +7 -13
- data/res/generators/templates/application/app/loading.png +0 -0
- data/res/generators/templates/application/build.yml +3 -0
- data/res/generators/templates/application/icon/icon114.png +0 -0
- data/res/generators/templates/application/icon/icon57.png +0 -0
- data/res/generators/templates/application/icon/icon72.png +0 -0
- data/res/generators/templates/application/public/css/iphone.css +96 -0
- data/res/generators/templates/application/public/images/backButton.png +0 -0
- data/res/generators/templates/application/public/jqtouch/jqtouch.js +2 -1
- data/res/generators/templates/application/rhoconfig.txt +2 -0
- data/rhodes.gemspec +1 -1
- data/spec/phone_spec/app/spec/array_pack_spec.rb +108 -0
- data/spec/phone_spec/app/spec/bulksync_spec.rb +1 -0
- data/spec/phone_spec/app/spec/date_spec.rb +27 -0
- data/spec/phone_spec/app/spec/fixtures/classes.rb +91 -0
- data/spec/phone_spec/app/spec/lstrip_spec.rb +57 -0
- data/spec/phone_spec/app/spec/rho_spec.rb +50 -19
- data/spec/phone_spec/app/spec/rhom_object_spec.rb +78 -0
- data/spec/phone_spec/app/spec/rstrip_spec.rb +51 -0
- data/spec/phone_spec/app/spec/strip_spec.rb +50 -0
- data/spec/phone_spec/app/spec/syncengine_spec.rb +46 -3
- data/spec/phone_spec/app/spec_runner.rb +6 -0
- metadata +34 -4
@@ -6,7 +6,11 @@ module Rho
|
|
6
6
|
def self.find(*args)
|
7
7
|
if args.first == :all
|
8
8
|
params = {}
|
9
|
-
|
9
|
+
if args.length >= 2 and args[1].is_a? Hash
|
10
|
+
args[1].each do |k,v|
|
11
|
+
params[k.to_s] = v
|
12
|
+
end
|
13
|
+
end
|
10
14
|
|
11
15
|
params['start_date'] = MIN_TIME if params['start_date'].nil? or params['start_date'] < MIN_TIME
|
12
16
|
params['end_date'] = MAX_TIME if params['end_date'].nil? or params['end_date'] > MAX_TIME
|
@@ -30,6 +34,7 @@ module Rho
|
|
30
34
|
end
|
31
35
|
|
32
36
|
def self.create!(event)
|
37
|
+
event['id'] = nil #indicate that event should be created
|
33
38
|
Rho::Calendar.save(event)
|
34
39
|
end
|
35
40
|
|
@@ -79,7 +79,7 @@ module Rho
|
|
79
79
|
params.merge!(parse_query_parameters(req['request-query']))
|
80
80
|
end
|
81
81
|
unless req['headers'].nil? or req['headers']['Content-Type'].nil?
|
82
|
-
|
82
|
+
unless req['headers']['Content-Type'].index('application/x-www-form-urlencoded').nil?
|
83
83
|
params.merge!(parse_query_parameters(req['request-body']))
|
84
84
|
end
|
85
85
|
end
|
data/lib/framework/rhodes.rb
CHANGED
@@ -15,7 +15,7 @@ module Rho
|
|
15
15
|
'log_menu' => "Log",
|
16
16
|
'close_menu' => "Cerrar",
|
17
17
|
'get_link_menu' => "Obtener vínculo",
|
18
|
-
'open_link_menu' => "
|
18
|
+
'open_link_menu' => "Abrir vínculo",
|
19
19
|
'email_menu' => "Email",
|
20
20
|
'call_menu' => "Llamar",
|
21
21
|
'sms_menu' => "SMS",
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Rho
|
2
|
+
class RhoMessages
|
3
|
+
LocalMessages = {
|
4
|
+
'sync_failed_for' => "Sync failed for ",
|
5
|
+
'details' => " Details: ",
|
6
|
+
'sync_completed' => "Sync completed.",
|
7
|
+
'syncronizing' => "Synchronizing ",
|
8
|
+
'syncronizing_data' => "Synchronizing data...",
|
9
|
+
|
10
|
+
'home_menu' => "Home",
|
11
|
+
'refresh_menu' => "Refresh",
|
12
|
+
'back_menu' => "Back",
|
13
|
+
'sync_menu' => "Sync",
|
14
|
+
'options_menu' => "Options",
|
15
|
+
'log_menu' => "Log",
|
16
|
+
'close_menu' => "Close",
|
17
|
+
'get_link_menu' => "Apri collegamento",
|
18
|
+
'open_link_menu' => "Apri collegamento",
|
19
|
+
'email_menu' => "Email",
|
20
|
+
'call_menu' => "Call",
|
21
|
+
'sms_menu' => "SMS",
|
22
|
+
'add_contacts_menu' => "Add to Contacts",
|
23
|
+
|
24
|
+
'hide' => 'Hide'
|
25
|
+
}
|
26
|
+
|
27
|
+
end # RhoMessages
|
28
|
+
end # Rho
|
data/lib/framework/rhom/rhom.rb
CHANGED
@@ -42,6 +42,7 @@ module Rhom
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def database_client_reset
|
45
|
+
old_interval = SyncEngine.set_pollinterval(0)
|
45
46
|
SyncEngine.stop_sync
|
46
47
|
|
47
48
|
params = ["", "", 0]
|
@@ -59,9 +60,12 @@ module Rhom
|
|
59
60
|
|
60
61
|
hash_migrate = {}
|
61
62
|
::Rho::RHO.init_schema_sources(hash_migrate)
|
63
|
+
|
64
|
+
SyncEngine.set_pollinterval(old_interval)
|
62
65
|
end
|
63
66
|
|
64
67
|
def database_full_reset(reset_client_info=false)
|
68
|
+
old_interval = SyncEngine.set_pollinterval(0)
|
65
69
|
SyncEngine.stop_sync
|
66
70
|
|
67
71
|
::Rho::RHO.get_user_db().execute_sql("UPDATE client_info SET reset=1")
|
@@ -77,6 +81,8 @@ module Rhom
|
|
77
81
|
|
78
82
|
hash_migrate = {}
|
79
83
|
::Rho::RHO.init_schema_sources(hash_migrate)
|
84
|
+
|
85
|
+
SyncEngine.set_pollinterval(old_interval)
|
80
86
|
end
|
81
87
|
|
82
88
|
def database_full_reset_and_logout
|
@@ -8,6 +8,7 @@ module Rhom
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def get_model_params
|
11
|
+
init_defaults
|
11
12
|
BaseModel.model_params
|
12
13
|
end
|
13
14
|
|
@@ -19,17 +20,23 @@ module Rhom
|
|
19
20
|
false
|
20
21
|
end
|
21
22
|
|
22
|
-
def
|
23
|
-
if fixed_schema?
|
24
|
-
|
25
|
-
BaseModel.model_params ||= {}
|
26
|
-
|
23
|
+
def init_defaults
|
24
|
+
if fixed_schema?
|
25
|
+
BaseModel.model_params ||= {}
|
27
26
|
BaseModel.model_params['schema'] ||= {}
|
28
27
|
BaseModel.model_params['schema']['property'] ||= {}
|
29
|
-
BaseModel.model_params['schema']['property'][name.to_s] = [type,option]
|
30
28
|
else
|
31
|
-
|
29
|
+
BaseModel.model_params ||= {}
|
30
|
+
BaseModel.model_params ||= {}
|
32
31
|
BaseModel.model_params['property'] ||= {}
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def property(name,type=:string,option=nil)
|
36
|
+
init_defaults
|
37
|
+
if fixed_schema?()
|
38
|
+
BaseModel.model_params['schema']['property'][name.to_s] = [type,option]
|
39
|
+
else
|
33
40
|
BaseModel.model_params['property'][name.to_s] = [type,option]
|
34
41
|
end
|
35
42
|
|
@@ -88,31 +88,35 @@ module Rhom
|
|
88
88
|
end
|
89
89
|
end
|
90
90
|
|
91
|
-
@@metadata = {}
|
92
91
|
class << self
|
93
92
|
|
94
|
-
def clean_cached_metadata
|
95
|
-
src_name = get_source_name()
|
96
|
-
@@metadata[src_name] = nil
|
97
|
-
end
|
98
|
-
|
99
93
|
def metadata
|
100
94
|
src_name = get_source_name()
|
101
|
-
return
|
95
|
+
return Rho::RhoController.cached_metadata[src_name] if Rho::RhoController.cached_metadata.has_key?(src_name)
|
96
|
+
|
102
97
|
db = ::Rho::RHO.get_src_db(src_name)
|
103
98
|
result = db.select_from_table('sources', 'metadata', {"name"=>src_name} )
|
104
99
|
if result && result.length > 0 && result[0]['metadata']
|
105
|
-
|
100
|
+
Rho::RhoController.cached_metadata[src_name] = Rho::JSON.parse(result[0]['metadata'])
|
101
|
+
else
|
102
|
+
Rho::RhoController.cached_metadata[src_name] = nil
|
106
103
|
end
|
107
104
|
|
108
|
-
|
105
|
+
Rho::RhoController.cached_metadata[src_name]
|
109
106
|
end
|
110
107
|
|
111
108
|
def count
|
112
109
|
db = ::Rho::RHO.get_src_db(get_source_name)
|
113
110
|
|
114
111
|
if is_schema_source()
|
115
|
-
res = db.select_from_table(get_schema_table_name(),'object').length
|
112
|
+
#res = db.select_from_table(get_schema_table_name(),'object').length
|
113
|
+
db_res = db.execute_sql("SELECT COUNT(*) FROM " + get_schema_table_name())
|
114
|
+
#puts "db_res : #{db_res}"
|
115
|
+
if db_res && db_res.length() > 0
|
116
|
+
res = db_res[0].values[0]
|
117
|
+
else
|
118
|
+
res = 0
|
119
|
+
end
|
116
120
|
else
|
117
121
|
res = db.select_from_table('object_values','object', {"source_id"=>get_source_id}, {"distinct"=>true}).length
|
118
122
|
end
|
@@ -276,7 +280,7 @@ module Rhom
|
|
276
280
|
return sql, vals
|
277
281
|
end
|
278
282
|
|
279
|
-
def find_objects(condition_hash, op, limit, offset, order_attr)
|
283
|
+
def find_objects(condition_hash, op, limit, offset, order_attr, &block)
|
280
284
|
nulls_cond = {}
|
281
285
|
if op == 'AND'
|
282
286
|
condition_hash.each do |key,value|
|
@@ -288,7 +292,7 @@ module Rhom
|
|
288
292
|
end
|
289
293
|
|
290
294
|
strLimit = nil
|
291
|
-
if !order_attr
|
295
|
+
if !(block_given? || order_attr)
|
292
296
|
strLimit = " LIMIT " + limit.to_s + " OFFSET " + offset.to_s if limit && offset && condition_hash.length <= 1 && nulls_cond.length == 0
|
293
297
|
end
|
294
298
|
|
@@ -311,8 +315,8 @@ module Rhom
|
|
311
315
|
|
312
316
|
mapObjs[ rec['object'] ] = 1
|
313
317
|
listObjs << rec
|
314
|
-
|
315
|
-
bStop = !order_attr && limit && offset && nulls_cond.length == 0 && listObjs.length >= offset + limit
|
318
|
+
|
319
|
+
bStop = !(block_given? || order_attr) && limit && offset && nulls_cond.length == 0 && listObjs.length >= offset + limit
|
316
320
|
break if bStop
|
317
321
|
end
|
318
322
|
|
@@ -357,7 +361,7 @@ module Rhom
|
|
357
361
|
res = []
|
358
362
|
listObjs.each do |obj|
|
359
363
|
nIndex += 1
|
360
|
-
next if !order_attr && offset && nIndex < offset && !strLimit
|
364
|
+
next if !(block_given? || order_attr) && offset && nIndex < offset && !strLimit
|
361
365
|
|
362
366
|
bSkip = false
|
363
367
|
#obj_value = ::Rhom::RhomDbAdapter.get_value_for_sql_stmt(obj['object'])
|
@@ -383,11 +387,11 @@ module Rhom
|
|
383
387
|
res
|
384
388
|
end
|
385
389
|
|
386
|
-
def find_objects_ex(condition_ar, op, limit, offset, order_attr)
|
390
|
+
def find_objects_ex(condition_ar, op, limit, offset, order_attr, &block)
|
387
391
|
mapObjs = {}
|
388
392
|
listObjs = []
|
389
393
|
condition_ar.each do |cond|
|
390
|
-
res = find_objects(cond[:conditions], cond[:op], limit, offset, order_attr)
|
394
|
+
res = find_objects(cond[:conditions], cond[:op], limit, offset, order_attr, &block)
|
391
395
|
|
392
396
|
if listObjs.length() == 0
|
393
397
|
if condition_ar.length() > 1
|
@@ -423,7 +427,7 @@ module Rhom
|
|
423
427
|
end
|
424
428
|
|
425
429
|
def find_bycondhash(args, &block)
|
426
|
-
#puts 'find_bycondhash start'
|
430
|
+
#puts 'find_bycondhash start' + (block_given? ? 'with block' : "")
|
427
431
|
|
428
432
|
condition_hash = {}
|
429
433
|
select_arr = nil
|
@@ -442,7 +446,8 @@ module Rhom
|
|
442
446
|
offset = args[1][:offset] ? args[1][:offset].to_i : 0
|
443
447
|
end
|
444
448
|
select_arr = args[1][:select] if args[1][:select]
|
445
|
-
|
449
|
+
|
450
|
+
order_dir = args[1][:orderdir]
|
446
451
|
order_attr = args[1][:order]
|
447
452
|
|
448
453
|
op = args[1][:op].upcase if args[1][:op]
|
@@ -456,9 +461,14 @@ module Rhom
|
|
456
461
|
attribs = nil
|
457
462
|
if select_arr
|
458
463
|
attribs = select_arr
|
459
|
-
if order_attr
|
464
|
+
if order_attr
|
460
465
|
order_attr_arr = []
|
461
|
-
|
466
|
+
if order_attr.is_a?(Array)
|
467
|
+
order_attr_arr = order_attr
|
468
|
+
else
|
469
|
+
order_attr_arr.push(order_attr)
|
470
|
+
end
|
471
|
+
|
462
472
|
attribs = attribs | order_attr_arr
|
463
473
|
end
|
464
474
|
else
|
@@ -472,9 +482,9 @@ module Rhom
|
|
472
482
|
begin
|
473
483
|
listObjs = []
|
474
484
|
if condition_hash.is_a?(Hash)
|
475
|
-
listObjs = find_objects(condition_hash, op, limit, offset, order_attr)
|
485
|
+
listObjs = find_objects(condition_hash, op, limit, offset, order_attr, &block)
|
476
486
|
else
|
477
|
-
listObjs = find_objects_ex(condition_hash, op, limit, offset, order_attr)
|
487
|
+
listObjs = find_objects_ex(condition_hash, op, limit, offset, order_attr, &block)
|
478
488
|
end
|
479
489
|
|
480
490
|
nCount = 0;
|
@@ -538,24 +548,16 @@ module Rhom
|
|
538
548
|
#end
|
539
549
|
|
540
550
|
ret_list << new_obj
|
541
|
-
break if !order_attr && limit && ret_list.length >= limit
|
551
|
+
break if !(block_given? || order_attr) && limit && ret_list.length >= limit
|
542
552
|
end
|
543
553
|
end
|
544
554
|
ensure
|
545
555
|
db.unlock_db
|
546
556
|
end
|
547
557
|
|
548
|
-
|
549
|
-
ret_list.sort! { |x,y|
|
550
|
-
vx = x.vars[order_attr.to_sym()]
|
551
|
-
vy = y.vars[order_attr.to_sym()]
|
552
|
-
res = vx && vy ? (block_given? ? yield(vx,vy): vx <=> vy) : 0
|
553
|
-
res *= -1 if order_dir && order_dir == 'DESC'
|
554
|
-
res
|
555
|
-
}
|
556
|
-
end
|
558
|
+
order_array(ret_list, order_attr,order_dir, &block)
|
557
559
|
|
558
|
-
if order_attr && limit
|
560
|
+
if (block_given? || order_attr) && limit
|
559
561
|
ret_list = ret_list.slice(offset,limit)
|
560
562
|
end
|
561
563
|
|
@@ -570,6 +572,70 @@ module Rhom
|
|
570
572
|
ret_list
|
571
573
|
end
|
572
574
|
|
575
|
+
def order_array(ret_list, order_attr, order_dir, &block)
|
576
|
+
if order_attr
|
577
|
+
ret_list.sort! { |x,y|
|
578
|
+
|
579
|
+
res = 0
|
580
|
+
if order_attr.is_a?(Array)
|
581
|
+
order_attr.each_index { |i|
|
582
|
+
vx = x.vars[order_attr[i].to_sym()]
|
583
|
+
vy = y.vars[order_attr[i].to_sym()]
|
584
|
+
res = vx && vy ? (block_given? ? yield(vx,vy): vx <=> vy) : 0
|
585
|
+
|
586
|
+
dir = 'ASC'
|
587
|
+
if order_dir && order_dir.is_a?(Array) && i < order_dir.length()
|
588
|
+
dir = order_dir[i].upcase()
|
589
|
+
else
|
590
|
+
dir = order_dir.upcase() if order_dir && order_dir.is_a?(String)
|
591
|
+
end
|
592
|
+
|
593
|
+
res *= -1 if dir && dir == 'DESC'
|
594
|
+
break if res != 0
|
595
|
+
}
|
596
|
+
else
|
597
|
+
vx = x.vars[order_attr.to_sym()]
|
598
|
+
vy = y.vars[order_attr.to_sym()]
|
599
|
+
res = vx && vy ? (block_given? ? yield(vx,vy): vx <=> vy) : 0
|
600
|
+
res *= -1 if order_dir && order_dir == 'DESC'
|
601
|
+
end
|
602
|
+
|
603
|
+
res
|
604
|
+
}
|
605
|
+
elsif block_given?
|
606
|
+
ret_list.sort! { |x,y|
|
607
|
+
res = yield(x,y)
|
608
|
+
res *= -1 if order_dir && order_dir == 'DESC'
|
609
|
+
res
|
610
|
+
}
|
611
|
+
end
|
612
|
+
|
613
|
+
end
|
614
|
+
|
615
|
+
def make_sql_order(params)
|
616
|
+
order_attr = params[:order]
|
617
|
+
order_dir = params[:orderdir]
|
618
|
+
|
619
|
+
res = ""
|
620
|
+
|
621
|
+
if order_attr && order_attr.is_a?(Array)
|
622
|
+
order_attr.each_index do |i|
|
623
|
+
res += "," if i > 0
|
624
|
+
|
625
|
+
res += "\"#{order_attr[i]}\" "
|
626
|
+
if order_dir && order_dir.is_a?(Array) && i < order_dir.length()
|
627
|
+
res += order_dir[i].upcase()
|
628
|
+
else
|
629
|
+
res += order_dir && order_dir.is_a?(String) ? order_dir.upcase() : "ASC"
|
630
|
+
end
|
631
|
+
end
|
632
|
+
else
|
633
|
+
res = "\"#{order_attr}\" " + (order_dir ? order_dir.upcase() : "")
|
634
|
+
end
|
635
|
+
|
636
|
+
res
|
637
|
+
end
|
638
|
+
|
573
639
|
# retrieve a single record if object id provided, otherwise return
|
574
640
|
# full list corresponding to factory's source id
|
575
641
|
def find(*args, &block)
|
@@ -629,8 +695,9 @@ module Rhom
|
|
629
695
|
end
|
630
696
|
|
631
697
|
select_arr = args[1][:select] if args[1][:select]
|
632
|
-
order_dir = args[1][:orderdir]
|
698
|
+
order_dir = args[1][:orderdir]
|
633
699
|
order_attr = args[1][:order]
|
700
|
+
|
634
701
|
end
|
635
702
|
|
636
703
|
if args.first == :first
|
@@ -639,7 +706,7 @@ module Rhom
|
|
639
706
|
end
|
640
707
|
|
641
708
|
strLimit = nil
|
642
|
-
if !
|
709
|
+
if !block_given?
|
643
710
|
strLimit = " LIMIT " + limit.to_s + " OFFSET " + offset.to_s if limit && offset
|
644
711
|
end
|
645
712
|
|
@@ -670,10 +737,10 @@ module Rhom
|
|
670
737
|
objects = [ { 'object' => strip_braces(args.first.to_s) } ]
|
671
738
|
|
672
739
|
else
|
673
|
-
if !block_given? && order_attr
|
740
|
+
if !block_given? && order_attr && order_attr.is_a?(String)
|
674
741
|
if !args[1][:dont_ignore_missed_attribs]
|
675
742
|
sql << "SELECT object FROM object_values WHERE source_id=? "
|
676
|
-
sql << " AND attrib=? ORDER BY \"value\" " + order_dir
|
743
|
+
sql << " AND attrib=? ORDER BY \"value\" " + ( order_dir ? order_dir : "")
|
677
744
|
values << get_source_id
|
678
745
|
values << order_attr
|
679
746
|
end
|
@@ -753,7 +820,7 @@ module Rhom
|
|
753
820
|
sql << " FROM object_values ov \n"
|
754
821
|
sql << "where " + ::Rhom::RhomDbAdapter.where_str(where_cond) + "\n" if where_cond and where_cond.length > 0
|
755
822
|
sql << "group by object\n"
|
756
|
-
sql << "order by
|
823
|
+
sql << "order by " + make_sql_order(args[1]) if !block_given? && order_attr
|
757
824
|
#sql << ") WHERE " + ::Rhom::RhomDbAdapter.where_str(condition_hash) if condition_hash
|
758
825
|
sql << ") WHERE " + condition_str if condition_str
|
759
826
|
sql << strLimit if strLimit
|
@@ -775,7 +842,7 @@ module Rhom
|
|
775
842
|
sql << " WHERE " + condition_str if condition_str
|
776
843
|
end
|
777
844
|
|
778
|
-
sql << " order by
|
845
|
+
sql << " order by " + make_sql_order(args[1]) if !block_given? && order_attr
|
779
846
|
sql << strLimit if strLimit
|
780
847
|
|
781
848
|
#puts "Database query start" #: #{sql}"
|
@@ -804,17 +871,12 @@ module Rhom
|
|
804
871
|
else
|
805
872
|
puts "Processing rhom objects end, no attributes found."
|
806
873
|
end
|
807
|
-
|
808
|
-
if block_given?
|
809
|
-
ret_list
|
810
|
-
|
811
|
-
vy = y.vars[order_attr.to_sym()]
|
812
|
-
res = vx && vy ? (block_given? ? yield(vx,vy): vx <=> vy) : 0
|
813
|
-
res *= -1 if order_dir && order_dir == 'DESC'
|
814
|
-
res
|
815
|
-
}
|
874
|
+
|
875
|
+
if block_given?
|
876
|
+
order_array(ret_list, order_attr, order_dir, &block)
|
877
|
+
ret_list = ret_list.slice(offset,limit) if limit
|
816
878
|
end
|
817
|
-
|
879
|
+
|
818
880
|
return list.length if args.first == :count
|
819
881
|
if args.first == :first || args.first.is_a?(String)
|
820
882
|
return ret_list.length > 0 ? ret_list[0] : nil
|
@@ -882,8 +944,12 @@ module Rhom
|
|
882
944
|
|
883
945
|
puts "del_objects : #{del_objects}"
|
884
946
|
del_objects.each do |obj|
|
885
|
-
|
886
|
-
|
947
|
+
if is_schema_source()
|
948
|
+
db.delete_from_table(tableName, {'object'=>obj['object']})
|
949
|
+
else
|
950
|
+
db.delete_from_table(tableName, {'object'=>obj['object'], "source_id"=>get_source_id})
|
951
|
+
end
|
952
|
+
db.delete_from_table('changed_values', {'object'=>obj['object'], "source_id"=>get_source_id}) if is_sync_source()
|
887
953
|
end
|
888
954
|
else
|
889
955
|
if is_schema_source()
|
@@ -1016,19 +1082,18 @@ module Rhom
|
|
1016
1082
|
attrsList = nil
|
1017
1083
|
if is_inst_schema_source()
|
1018
1084
|
attrsList = db.select_from_table(tableName, '*', {"object"=>obj})
|
1085
|
+
db.delete_from_table(tableName, {"object"=>obj})
|
1019
1086
|
else
|
1020
1087
|
attrsList = db.select_from_table(tableName, '*', {"object"=>obj, "source_id"=>self.get_inst_source_id()})
|
1088
|
+
db.delete_from_table(tableName, {"object"=>obj, "source_id"=>self.get_inst_source_id()})
|
1021
1089
|
end
|
1022
1090
|
|
1023
|
-
# first delete the record from viewable list
|
1024
|
-
db.delete_from_table(tableName, {"object"=>obj})
|
1025
|
-
|
1026
1091
|
resUpdateType = is_inst_sync_source() ? db.select_from_table('changed_values', 'update_type', {"object"=>obj, "update_type"=>'create', "sent"=>0}) : nil
|
1027
1092
|
if resUpdateType && resUpdateType.length > 0
|
1028
1093
|
update_type = nil
|
1029
1094
|
end
|
1030
1095
|
|
1031
|
-
db.delete_from_table('changed_values', {"object"=>obj, "sent"=>0}) if is_inst_sync_source()
|
1096
|
+
db.delete_from_table('changed_values', {"object"=>obj, "source_id"=>self.get_inst_source_id(), "sent"=>0}) if is_inst_sync_source()
|
1032
1097
|
|
1033
1098
|
if is_inst_sync_source() && update_type and attrsList and attrsList.length() > 0
|
1034
1099
|
# now add delete operation
|
data/lib/framework/version.rb
CHANGED
data/lib/rhodes.rb
CHANGED
@@ -0,0 +1,62 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
3
|
+
package="com.rhomobile.rhodes"
|
4
|
+
android:installLocation="auto"
|
5
|
+
android:versionCode="25"
|
6
|
+
android:versionName="2.2.4">
|
7
|
+
<uses-sdk android:minSdkVersion="3" />
|
8
|
+
<application android:icon="@drawable/icon"
|
9
|
+
android:multiprocess="true"
|
10
|
+
android:allowTaskReparenting="true"
|
11
|
+
android:debuggable="true"
|
12
|
+
finishOnTaskLaunch="true"
|
13
|
+
android:label="@string/app_name">
|
14
|
+
<activity android:name="com.rhomobile.rhodes.Rhodes"
|
15
|
+
android:label="@string/app_name"
|
16
|
+
android:configChanges="keyboardHidden|orientation">
|
17
|
+
<intent-filter>
|
18
|
+
<action android:name="android.intent.action.MAIN" />
|
19
|
+
<category android:name="android.intent.category.LAUNCHER" />
|
20
|
+
</intent-filter>
|
21
|
+
</activity>
|
22
|
+
<activity android:name="com.rhomobile.rhodes.camera.FileList" />
|
23
|
+
<activity android:name="com.rhomobile.rhodes.camera.ImageCapture" android:screenOrientation="landscape" />
|
24
|
+
<activity android:name="com.rhomobile.rhodes.signature.ImageCapture" />
|
25
|
+
<activity android:name="com.rhomobile.rhodes.datetime.DateTimePickerScreen" />
|
26
|
+
<activity android:name="com.rhomobile.rhodes.mapview.MapView" />
|
27
|
+
<activity android:name="com.rhomobile.rhodes.bluetooth.RhoBluetoothDeviceListActivity" />
|
28
|
+
<uses-library android:name="com.google.android.maps" />
|
29
|
+
<receiver android:name="com.rhomobile.rhodes.PushReceiver" android:permission="com.google.android.c2dm.permission.SEND">
|
30
|
+
<!-- Receive the actual message -->
|
31
|
+
<intent-filter>
|
32
|
+
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
|
33
|
+
<category android:name="com.rhomobile.rhodes" />
|
34
|
+
</intent-filter>
|
35
|
+
<!-- Receive the registration id -->
|
36
|
+
<intent-filter>
|
37
|
+
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
|
38
|
+
<category android:name="com.rhomobile.rhodes" />
|
39
|
+
</intent-filter>
|
40
|
+
</receiver>
|
41
|
+
</application>
|
42
|
+
<uses-permission android:name="android.permission.INTERNET" />
|
43
|
+
<uses-permission android:name="android.permission.CAMERA" />
|
44
|
+
<uses-permission android:name="android.permission.READ_CONTACTS" />
|
45
|
+
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
|
46
|
+
<uses-permission android:name="android.permission.CALL_PHONE" />
|
47
|
+
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
48
|
+
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
49
|
+
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
50
|
+
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
|
51
|
+
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
52
|
+
<uses-permission android:name="android.permission.VIBRATE" />
|
53
|
+
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
|
54
|
+
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
|
55
|
+
<uses-permission android:name="android.permission.BLUETOOTH" />
|
56
|
+
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
57
|
+
<uses-permission android:name="android.permission.READ_CALENDAR" />
|
58
|
+
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
|
59
|
+
<permission android:name="com.rhomobile.rhodes.permission.C2D_MESSAGE" android:protectionLevel="signature" />
|
60
|
+
<uses-permission android:name="com.rhomobile.rhodes.permission.C2D_MESSAGE" />
|
61
|
+
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
|
62
|
+
</manifest>
|
@@ -1,8 +1,9 @@
|
|
1
1
|
<?xml version="1.0" encoding="utf-8"?>
|
2
2
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
3
3
|
package="com.rhomobile.rhodes"
|
4
|
-
android:
|
5
|
-
android:
|
4
|
+
android:installLocation="auto"
|
5
|
+
android:versionCode="26"
|
6
|
+
android:versionName="2.2.5">
|
6
7
|
<uses-sdk android:minSdkVersion="3" />
|
7
8
|
<application android:icon="@drawable/icon"
|
8
9
|
android:multiprocess="true"
|
@@ -25,37 +26,5 @@
|
|
25
26
|
<activity android:name="com.rhomobile.rhodes.mapview.MapView" />
|
26
27
|
<activity android:name="com.rhomobile.rhodes.bluetooth.RhoBluetoothDeviceListActivity" />
|
27
28
|
<uses-library android:name="com.google.android.maps" />
|
28
|
-
<receiver android:name="com.rhomobile.rhodes.PushReceiver" android:permission="com.google.android.c2dm.permission.SEND">
|
29
|
-
<!-- Receive the actual message -->
|
30
|
-
<intent-filter>
|
31
|
-
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
|
32
|
-
<category android:name="com.rhomobile.rhodes" />
|
33
|
-
</intent-filter>
|
34
|
-
<!-- Receive the registration id -->
|
35
|
-
<intent-filter>
|
36
|
-
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
|
37
|
-
<category android:name="com.rhomobile.rhodes" />
|
38
|
-
</intent-filter>
|
39
|
-
</receiver>
|
40
29
|
</application>
|
41
|
-
<uses-permission android:name="android.permission.INTERNET" />
|
42
|
-
<uses-permission android:name="android.permission.CAMERA" />
|
43
|
-
<uses-permission android:name="android.permission.READ_CONTACTS" />
|
44
|
-
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
|
45
|
-
<uses-permission android:name="android.permission.CALL_PHONE" />
|
46
|
-
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
47
|
-
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
48
|
-
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
49
|
-
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
|
50
|
-
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
51
|
-
<uses-permission android:name="android.permission.VIBRATE" />
|
52
|
-
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
|
53
|
-
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
|
54
|
-
<uses-permission android:name="android.permission.BLUETOOTH" />
|
55
|
-
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
56
|
-
<uses-permission android:name="android.permission.READ_CALENDAR" />
|
57
|
-
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
|
58
|
-
<permission android:name="com.rhomobile.rhodes.permission.C2D_MESSAGE" android:protectionLevel="signature" />
|
59
|
-
<uses-permission android:name="com.rhomobile.rhodes.permission.C2D_MESSAGE" />
|
60
|
-
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
|
61
30
|
</manifest>
|