bosdk 1.0.1-universal-java-1.6 → 1.0.2-universal-java-1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.rdoc CHANGED
@@ -1,4 +1,4 @@
1
- = BOSDK.gem v1.0.1
1
+ = BOSDK.gem
2
2
 
3
3
  == Description
4
4
 
data/bosdk.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "bosdk"
3
- s.version = "1.0.1"
3
+ s.version = "1.0.2"
4
4
 
5
5
  s.author = "Shane Emmons"
6
6
  s.description = "A JRuby wrapper for the Business Objects Java SDK"
@@ -10,8 +10,10 @@ Gem::Specification.new do |s|
10
10
  "lib/bosdk.rb",
11
11
  "lib/bosdk/enterprise_session.rb",
12
12
  "lib/bosdk/info_object.rb",
13
+ "lib/bosdk/webi_report_engine.rb",
13
14
  "spec/enterprise_session_spec.rb",
14
15
  "spec/info_object_spec.rb",
16
+ "spec/webi_report_engine_spec.rb",
15
17
  ]
16
18
 
17
19
  s.homepage = "http://semmons99.github.com/bosdk"
data/lib/bosdk.rb CHANGED
@@ -24,9 +24,11 @@ include Java
24
24
  Dir.glob(ENV["BOE_JAVA_LIB"] + "/*.jar").each{|jar| require jar}
25
25
  include_class "com.crystaldecisions.sdk.framework.CrystalEnterprise"
26
26
  include_class "com.crystaldecisions.sdk.uri.PagingQueryOptions"
27
+ include_class "com.businessobjects.rebean.wi.ReportEngines"
27
28
 
28
29
  require 'bosdk/enterprise_session'
29
30
  require 'bosdk/info_object'
31
+ require 'bosdk/webi_report_engine'
30
32
 
31
33
  module BOSDK
32
34
  # A closure over EnterpriseSession
@@ -1,4 +1,5 @@
1
1
  require 'bosdk/info_object'
2
+ require 'bosdk/webi_report_engine'
2
3
 
3
4
  module BOSDK
4
5
  # Creates a wrapper around the Business Objects Java SDK.
@@ -13,10 +14,11 @@ module BOSDK
13
14
  # EnterpriseSession.new('cms', 'Administrator', '')
14
15
  #
15
16
  # Automatically calls disconnect when cleaned up.
16
- def initialize(cms, username, password)
17
+ def initialize(cms, username, password, options = Hash.new)
17
18
  @session = CrystalEnterprise.getSessionMgr.logon(username, password, cms, 'secEnterprise')
18
19
  @infostore = @session.getService('', 'InfoStore')
19
20
  @connected = true
21
+ @locale = options[:locale] || 'en_US'
20
22
 
21
23
  at_exit { disconnect }
22
24
  end
@@ -45,5 +47,11 @@ module BOSDK
45
47
  sql = stmt.match(/^(path|query|cuid):\/\//i) ? path_to_sql(stmt) : stmt
46
48
  @infostore.query(sql).map{|o| InfoObject.new(o)}
47
49
  end
50
+
51
+ # Open a Webi document from the provided docid
52
+ def open_webi(docid)
53
+ @webi_report_engine ||= WebiReportEngine.new(@session, @locale)
54
+ @webi_report_engine.open(docid)
55
+ end
48
56
  end
49
57
  end
@@ -0,0 +1,22 @@
1
+ module BOSDK
2
+ # Creates a wrapper around a Webi based ReportEngine.
3
+ class WebiReportEngine
4
+ # The underlying ReportEngine.
5
+ attr_reader :webi_report_engine
6
+
7
+ # Creates a new ReportEngine using the provided EnterpriseSession and an
8
+ # optional locale setting.
9
+ # WebiReportEngine.new(enterprise_session)
10
+ def initialize(enterprise_session, locale = "en_US")
11
+ report_engines = enterprise_session.getService("ReportEngines")
12
+ @webi_report_engine = report_engines.getService(ReportEngines::ReportEngineType::WI_REPORT_ENGINE)
13
+ @webi_report_engine.setLocale(locale)
14
+ #enterprise_session.setAttribute("widReportEngine", @webi_report_engine)
15
+ end
16
+
17
+ # Opens the webi document specified by the docid.
18
+ def open(docid)
19
+ @webi_report_engine.openDocument(docid)
20
+ end
21
+ end
22
+ end
@@ -1,29 +1,27 @@
1
1
  # encoding: utf-8
2
- include Java
3
- Dir.glob(ENV["BOE_JAVA_LIB"] + "/*.jar").each {|jar| require jar}
4
- include_class "com.crystaldecisions.sdk.framework.CrystalEnterprise"
5
- include_class "com.crystaldecisions.sdk.uri.PagingQueryOptions"
6
-
7
2
  $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + "/../lib"))
8
3
  require 'bosdk/enterprise_session'
9
4
 
10
5
  module BOSDK
11
6
  describe EnterpriseSession do
12
7
  before(:each) do
13
- # mocks
14
8
  @session_mgr = mock("ISessionMgr").as_null_object
15
9
  @session = mock("IEnterpriseSession").as_null_object
16
10
  @infostore = mock("IInfoStore").as_null_object
17
11
  @infoobjects = mock("IInfoObjects").as_null_object
18
12
 
19
- # stubs
20
- CrystalEnterprise.should_receive(:getSessionMgr).and_return(@session_mgr)
21
- @session_mgr.should_receive(:logon).once.with('Administrator', '', 'cms', 'secEnterprise').and_return(@session)
22
- @session.should_receive(:getService).once.with('', 'InfoStore').and_return(@infostore)
13
+ class CrystalEnterprise; end
14
+ CrystalEnterprise.should_receive(:getSessionMgr).at_least(1).with.and_return(@session_mgr)
15
+ @session_mgr.should_receive(:logon).at_least(1).with('Administrator', '', 'cms', 'secEnterprise').and_return(@session)
16
+ @session.should_receive(:getService).at_least(1).with('', 'InfoStore').and_return(@infostore)
23
17
 
24
18
  @es = EnterpriseSession.new('cms', 'Administrator', '')
25
19
  end
26
20
 
21
+ specify "#new should accept an optional locale setting" do
22
+ EnterpriseSession.new('cms', 'Administrator', '', :locale => 'en_CA')
23
+ end
24
+
27
25
  specify "#connected? returns 'true' when connected to a CMS" do
28
26
  @es.connected?.should be_true
29
27
  end
@@ -54,6 +52,7 @@ module BOSDK
54
52
 
55
53
  @stateless_page_info = mock("IStatelessPageInfo").as_null_object
56
54
 
55
+ class PagingQueryOptions; end
57
56
  PagingQueryOptions.should_receive(:new).once.with
58
57
  @infostore.should_receive(:getStatelessPageInfo).once.with(path_query, nil).and_return(@stateless_page_info)
59
58
  @stateless_page_info.should_receive(:getPageSQL).once.with.and_return(stmt)
@@ -97,5 +96,33 @@ module BOSDK
97
96
 
98
97
  @es.query(path_query)
99
98
  end
99
+
100
+ specify "#open_webi should create a WebiReportEngine and call #open" do
101
+ @webi_report_engine = mock("WebiReportEngine").as_null_object
102
+ class WebiReportEngine; end
103
+ WebiReportEngine.should_receive(:new).once.with(@session, 'en_US').and_return(@webi_report_engine)
104
+ @webi_report_engine.should_receive(:open).once.with("1234")
105
+
106
+ @es.open_webi("1234")
107
+ end
108
+
109
+ specify "#open_webi should only create a WebiReportEngine once" do
110
+ @webi_report_engine = mock("WebiReportEngine").as_null_object
111
+ class WebiReportEngine; end
112
+ WebiReportEngine.should_receive(:new).once.with(@session, 'en_US').and_return(@webi_report_engine)
113
+ @webi_report_engine.should_receive(:open).twice.with("1234")
114
+
115
+ 2.times{@es.open_webi("1234")}
116
+ end
117
+
118
+ specify "#open_webi should pass any specified locale" do
119
+ @webi_report_engine = mock("WebiReportEngine").as_null_object
120
+ class WebiReportEngine; end
121
+ WebiReportEngine.should_receive(:new).once.with(@session, 'en_CA').and_return(@webi_report_engine)
122
+ @webi_report_engine.should_receive(:open).once.with("1234")
123
+
124
+ es = EnterpriseSession.new('cms', 'Administrator', '', :locale => 'en_CA')
125
+ es.open_webi("1234")
126
+ end
100
127
  end
101
128
  end
@@ -0,0 +1,33 @@
1
+ # encoding: utf-8
2
+ $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + "/../lib"))
3
+ require 'bosdk/webi_report_engine'
4
+
5
+ module BOSDK
6
+ describe WebiReportEngine do
7
+ before(:each) do
8
+ @enterprise_session = mock("EnterpriseSession").as_null_object
9
+ @report_engines = mock("ReportEngines").as_null_object
10
+ @webi_report_engine = mock("ReportEngine").as_null_object
11
+
12
+ @enterprise_session.should_receive(:getService).at_least(1).with("ReportEngines").and_return(@report_engines)
13
+ module ReportEngines; module ReportEngineType; module WI_REPORT_ENGINE; end; end; end
14
+ @report_engines.should_receive(:getService).at_least(1).with(ReportEngines::ReportEngineType::WI_REPORT_ENGINE).and_return(@webi_report_engine)
15
+ @webi_report_engine.should_receive(:setLocale).at_least(1).with("en_US")
16
+ #@enterprise_session.should_receive(:setAttribute).at_least(1).with("widReportEngine", @webi_report_engine)
17
+
18
+ @wre = WebiReportEngine.new(@enterprise_session)
19
+ end
20
+
21
+ specify "#new should allow you to set the locale" do
22
+ @webi_report_engine.should_receive(:setLocale).once.with("en_CA")
23
+
24
+ WebiReportEngine.new(@enterprise_session, "en_CA")
25
+ end
26
+
27
+ specify "#open should call the underlying #openDocument with the supplied docid" do
28
+ @webi_report_engine.should_receive(:openDocument).once.with("1234")
29
+
30
+ @wre.open("1234")
31
+ end
32
+ end
33
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bosdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: universal-java-1.6
6
6
  authors:
7
7
  - Shane Emmons
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-28 00:00:00 -05:00
12
+ date: 2010-02-01 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -29,8 +29,10 @@ files:
29
29
  - lib/bosdk.rb
30
30
  - lib/bosdk/enterprise_session.rb
31
31
  - lib/bosdk/info_object.rb
32
+ - lib/bosdk/webi_report_engine.rb
32
33
  - spec/enterprise_session_spec.rb
33
34
  - spec/info_object_spec.rb
35
+ - spec/webi_report_engine_spec.rb
34
36
  has_rdoc: true
35
37
  homepage: http://semmons99.github.com/bosdk
36
38
  licenses: []