l5m-tools 0.0.11 → 0.1.0

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 812fcfe10e139e3e7179c90a186bad48c179376b
4
+ data.tar.gz: dd4dd9891d897bea581d1a3ff59e5b22b9b29b89
5
+ SHA512:
6
+ metadata.gz: cd9d9a8916e3d390a226e157126d29878ec30f8faca28e76fa4ec4ea3d0c32cdc210f6c8c1deaf73714d9b85d7c6ceb6882a836502c188b233c52f80e3b3ae71
7
+ data.tar.gz: f4c521ab34b79c1e8078ec98536c15e3280fd953c1b074a08f921d5ef6a2fbefdbb1709e93d9881cbed2454ce8251d0d108e190f557d011ec8cfae620caf457d
data/Gemfile CHANGED
@@ -8,7 +8,7 @@ source "http://rubygems.org"
8
8
  group :development do
9
9
  gem "shoulda", ">= 0"
10
10
  gem "rdoc", "~> 3.12"
11
- gem "bundler", "~> 1.2.0"
11
+ gem "bundler" #, "~> 1.2.0"
12
12
  gem "jeweler", "~> 1.8.4"
13
13
  #gem "etc"
14
14
  #gem "rcov", ">= 0"
data/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  * This is a tool set for Lake 5 Media and Qinghe Tech Programmer.
4
4
  * It includes make-app for creating a new app.
5
5
 
6
- ### Usage
6
+ ### Usage
7
7
  * first please install svn and git
8
8
  * please add the following sys env variables
9
9
  * WORKSPACE
@@ -14,6 +14,7 @@
14
14
  * DEV_HOST
15
15
  * `$l5m make` or `$make-app`# to create a new app
16
16
  * `$l5m dup file.csv original new` or `$duplicate-app file.csv original new` #duplicate a app with the files in file.csv, and use new to replace original
17
+ * `$l5m dup package original new` #duplicate an application from special package, no file.csv required.
17
18
  * `$l5m svn status` #ls all uncommitted files
18
19
  * `$l5m svn log` #ls all today's commits
19
20
  * `$l5m svn update packs` #update all packges.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.11
1
+ 0.1.0
data/bin/duplicate-app CHANGED
File without changes
data/bin/l5m CHANGED
File without changes
data/bin/make-app CHANGED
File without changes
data/bin/set_env.sh CHANGED
File without changes
data/bin/svn.tool CHANGED
File without changes
data/l5m-tools.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "l5m-tools"
8
- s.version = "0.0.11"
8
+ s.version = "0.1.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["RONGHAI"]
12
- s.date = "2014-01-23"
12
+ s.date = "2015-07-07"
13
13
  s.description = "A tool set for Lake5Media and QingheTech developer"
14
14
  s.email = "ronghai.wei@outlook.com"
15
15
  s.executables = ["duplicate-app", "l5m", "make-app", "set_env.sh", "svn.tool"]
@@ -42,6 +42,7 @@ Gem::Specification.new do |s|
42
42
  "lib/l5m-tools/template/Template.jsp",
43
43
  "lib/l5m-tools/template/TemplateBaseAbstractWorker.java",
44
44
  "lib/l5m-tools/template/TemplateServicerImpl.java",
45
+ "lib/l5m-tools/template/TemplateViewer.java",
45
46
  "lib/l5m-tools/template/TemplateWorker.java",
46
47
  "lib/l5m-tools/template/frt.jsp",
47
48
  "lib/l5m-tools/template/ms2.jsp",
@@ -54,27 +55,27 @@ Gem::Specification.new do |s|
54
55
  s.homepage = "http://github.com/RONGHAI/l5m-tools"
55
56
  s.licenses = ["MIT"]
56
57
  s.require_paths = ["lib"]
57
- s.rubygems_version = "1.8.17"
58
+ s.rubygems_version = "2.0.14"
58
59
  s.summary = "A tool set for Lake5Media and QingheTech developer"
59
60
 
60
61
  if s.respond_to? :specification_version then
61
- s.specification_version = 3
62
+ s.specification_version = 4
62
63
 
63
64
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
64
65
  s.add_development_dependency(%q<shoulda>, [">= 0"])
65
66
  s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
66
- s.add_development_dependency(%q<bundler>, ["~> 1.2.0"])
67
+ s.add_development_dependency(%q<bundler>, [">= 0"])
67
68
  s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
68
69
  else
69
70
  s.add_dependency(%q<shoulda>, [">= 0"])
70
71
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
71
- s.add_dependency(%q<bundler>, ["~> 1.2.0"])
72
+ s.add_dependency(%q<bundler>, [">= 0"])
72
73
  s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
73
74
  end
74
75
  else
75
76
  s.add_dependency(%q<shoulda>, [">= 0"])
76
77
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
77
- s.add_dependency(%q<bundler>, ["~> 1.2.0"])
78
+ s.add_dependency(%q<bundler>, [">= 0"])
78
79
  s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
79
80
  end
80
81
  end
@@ -3,23 +3,45 @@ require 'pathname'
3
3
 
4
4
  module L5MTools
5
5
  TEMPLATE_DIR = Pathname.new(__FILE__).parent + 'template'
6
+
6
7
  class Application
7
8
  require 'l5m-tools/tools'
8
9
  include Tools
9
10
  def duplicate_app(*args)
10
11
  delete = args.delete('-d')
11
12
  replacements = {args[1] => args[2]}
12
- File.open(args[0], "r") do |infile|
13
- while (line = infile.gets)
14
- line = line.chomp.strip
15
- if line.length > 0 && line[0] != '#'
16
- #duplicate_and_replace( line.chomp , replacements )
17
- #FileUtils.rm(line, :force => true) if delete
18
- FileUtils.rm(line, :force => true) if duplicate_and_replace( line.chomp , replacements )[1] != line && delete
19
- end
13
+
14
+ unless File.exist?(args[0])
15
+ duplicate_wo_csv(*args)
16
+ else
17
+ File.open(args[0], "r") do |infile|
18
+ while (line = infile.gets)
19
+ line = line.chomp.strip
20
+ if line.length > 0 && line[0] != '#'
21
+ #duplicate_and_replace( line.chomp , replacements )
22
+ #FileUtils.rm(line, :force => true) if delete
23
+ FileUtils.rm(line, :force => true) if duplicate_and_replace( line.chomp , replacements )[1] != line && delete
24
+ end
25
+ end
20
26
  end
21
27
  end
22
28
  end
29
+
30
+ def duplicate_wo_csv(*args)
31
+ delete = args.delete('-d')
32
+ package = args[0]
33
+ application = args[1]
34
+ replacements = {args[1] => args[2]}
35
+ Dir.glob("#{WORKSPACE}/#{package}/{src,WebContent}/**/#{application}*.*", File::FNM_CASEFOLD).each{|line|
36
+ bn = File.basename(line, ".*")
37
+ #puts line #File.basename(line, ".*")
38
+ unless(bn[application.length] =~ /[a-z0-9]/)
39
+ #puts line #File.basename(line, ".*")
40
+ FileUtils.rm(line, :force => true) if duplicate_and_replace( line.chomp , replacements )[1] != line && delete
41
+ end
42
+ }
43
+ end
44
+
23
45
  #read file list from file and delete them
24
46
  def del(*args)
25
47
  replacements = {args[1] => args[2]}
@@ -42,6 +64,10 @@ module L5MTools
42
64
  "#{WORKSPACE}/#{package}/src/com/l5m/#{package}/engine/worker/#{application}Worker.java" , replacements )
43
65
  copy_with_replace( TEMPLATE_DIR+"TemplateServicerImpl.java" ,
44
66
  "#{WORKSPACE}/#{package}/src/com/l5m/#{package}/engine/servicer/#{application}ServicerImpl.java" , replacements )
67
+
68
+ copy_with_replace( TEMPLATE_DIR+"TemplateViewer.java" ,
69
+ "#{WORKSPACE}/#{package}/src/com/l5m/#{package}/engine/exporter/#{application}Viewer.java" , replacements )
70
+
45
71
  if File.exist?( TEMPLATE_DIR+"#{package}.jsp")
46
72
  copy_with_replace( TEMPLATE_DIR+"#{package}.jsp" ,
47
73
  "#{WORKSPACE}/#{package}/src/jsp/#{application}.jsp" , replacements )
@@ -51,8 +77,5 @@ module L5MTools
51
77
  end
52
78
  block.call(Time.now, package, application, use_base_worker) if block_given?
53
79
  end
54
-
55
-
56
-
57
80
  end
58
81
  end
File without changes
data/lib/l5m-tools/env.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module L5MTools
2
- raise "no WORKSPACE env " unless WORKSPACE = ENV["WORKSPACE"] || ENV["workspace"]
3
- raise "no CATALINA_HOME env" unless CATALINA_HOME = ENV["CATALINA_HOME"]
2
+ raise "no WORKSPACE env " unless WORKSPACE = (ENV["WORKSPACE"] || ENV["workspace"]).gsub(/[\\]/, '/')
3
+ raise "no CATALINA_HOME env" unless CATALINA_HOME = ENV["CATALINA_HOME"]
4
4
  raise "no SVN_USER env" unless SVN_USER = ENV["SVN_USER"]
5
5
  raise "no SENDER_EMAIL env" unless SENDER_EMAIL = ENV["SENDER_EMAIL"]
6
6
  PACKAGES = ENV["PACKAGES"].split(/[,;:]/) if ENV["PACKAGES"]
File without changes
File without changes
data/lib/l5m-tools/svn.rb CHANGED
File without changes
@@ -6,7 +6,7 @@
6
6
  com.l5m.common.l5m_util.rld.*,
7
7
  com.l5m.common.util.*,
8
8
  org.ajaxanywhere.AAUtils,
9
- com.l5m.!REPLACE_STYLE!.bean.*,
9
+ com.l5m.!REPLACE_STYLE!.bean.*, com.l5m.customtags.beans.*, com.l5m.customtags.tags*,
10
10
  com.l5m.!REPLACE_STYLE!.engine.worker.*,
11
11
  com.l5m.common.l5m_util.module.*"
12
12
  %>
@@ -26,15 +26,25 @@
26
26
  <c:set var="formName" value="${worker.FORM_NAME}" scope="request"/>
27
27
  <c:set var="packageLowerCase" value="${worker.packageLowerCase}" scope="request"/>
28
28
  <c:set var="packageUpperCase" value="${worker.packageUpperCase}" scope="request"/>
29
- <c:set var="styleLowerCase" value="${packageLowerCase}" />
30
- <c:set var="styleUpperCase" value="${packageUpperCase}" />
29
+ <c:set var="styleLowerCase" value="${worker.styleLowerCase}" />
30
+ <c:set var="styleUpperCase" value="${worker.styleUpperCase}" />
31
31
  <c:set var="PANEL" value="${worker.PANEL}"/>
32
32
  <%
33
33
  if(AAUtils.isAjaxRequest(request)){
34
34
  AAUtils.addZonesToRefresh(request, "alwaysRefreshZone,"+ ((String)request.getAttribute("refreshZones")));
35
35
  }
36
36
  %><!-- -->
37
+ <c:set var="soc" value='${servicer.sourceOptionController}'/>
38
+ <c:set var='jsCache' value='<%="&__jstimeunique="+System.currentTimeMillis()%>'/>
39
+ <c:set var='theme' value='${worker.navigationBean.theme}' />
40
+ <c:set var='_request' value="<%=request%>"/>
41
+ <c:set var="isIE9Below" value="${l5mfunctions:isIE9Below(_request)}"/>
42
+ <%
37
43
 
44
+ CSSImportParaBean _cssImport = new CSSImportParaBean(request.getContextPath(), "ms2", 1);
45
+ JSImportParaBean _jsImport = new JSImportParaBean(request.getContextPath());
46
+
47
+ %>
38
48
 
39
49
  <html>
40
50
 
@@ -42,7 +52,7 @@ if(AAUtils.isAjaxRequest(request)){
42
52
 
43
53
 
44
54
 
45
- <l5m:jspHead useIE7Compatible="true" includeJQuery='true' title="${worker.APP_NAME}" formName="${formName}" packageName="${packageLowerCase}" planingCss="L001;L004">
55
+ <l5m:jspHead useIE7Compatible="true" useCssImport='1' includeJQuery='true' title="${worker.APP_NAME}" formName="${formName}" packageName="${packageLowerCase}" planingCss="L001;L004">
46
56
 
47
57
  <!-- add additinal js css in here -->
48
58
  <link href="<%=request.getContextPath()%>/htdoc/datepicker-lite.css" rel="stylesheet" type="text/css" />
@@ -84,11 +94,22 @@ if(AAUtils.isAjaxRequest(request)){
84
94
  table{
85
95
  border-collapse:collapse;
86
96
  }
97
+ .grid .TD{border-top:1px dotted #888888;}
98
+ .grid .LD{border-left:1px dotted #888888;}
99
+ .grid .row{line-height:33px;}
100
+ .grid label{white-space:nowrap;}
87
101
  </style>
88
102
 
89
103
 
90
104
 
91
-
105
+ <%=_cssImport.getCSSFileImports3(
106
+
107
+ )%>
108
+
109
+
110
+ <%=_jsImport.getJSFileImports3(
111
+
112
+ )%>
92
113
 
93
114
 
94
115
  <l5m:LoadResources/>
@@ -115,10 +136,8 @@ if(AAUtils.isAjaxRequest(request)){
115
136
 
116
137
  <aa:zone name="topNavigationZone">
117
138
  <l5m:TopBar2
118
- id="TopBar"
119
- topBarIcons = "${worker.topBarIcons}"
120
- iconsStatus = "${worker.iconsStatus}"
121
- actions = "${worker.actions}"
139
+ id="${paraBean.topBarStateBean.id}"
140
+ topBarItems='${worker.topBarItems}'
122
141
  decimalControlList = "${servicer.reportDecimalControlList}"
123
142
  startControlZone = "topPanel"
124
143
  style = "${styleLowerCase}"
@@ -127,38 +146,18 @@ if(AAUtils.isAjaxRequest(request)){
127
146
  incSingleSelected = "${paraBean.selectedSortBy}"
128
147
  />
129
148
  </aa:zone>
130
- <script type="text/javascript">
131
- <!--
132
- function loadjscssfile(filename,filetype){
133
-
134
- if (filetype=="js"){ //if filename is a external JavaScript file
135
- if($$('script[src="'+filename+'"]').length >= 1) return;
136
- var fileref=document.createElement('script')
137
- fileref.setAttribute("type","text/javascript")
138
- fileref.setAttribute("src", filename)
139
- }
140
- else if (filetype=="css"){ //if filename is an external CSS file
141
- if($$('link[href="'+filename+'"]').length >= 1) return;
142
- var fileref=document.createElement("link")
143
- fileref.setAttribute("rel", "stylesheet")
144
- fileref.setAttribute("type", "text/css")
145
- fileref.setAttribute("href", filename)
146
- }
147
- if (typeof fileref!="undefined"){
148
- document.getElementsByTagName("head")[0].appendChild(fileref)
149
- }
150
- }
151
- //-->
152
- </script>
149
+
153
150
  <div id="topPanel" style="display:${paraBean.selectionPanelStatusOpen?'inline':'none'}" >
154
151
  <!--source panel begin-->
155
152
  <div id="accordionNavigationTab">
156
153
  <table border="0" cellspacing="0" cellpadding="0" width="100%">
157
154
  <tr>
158
155
  <td>
159
-
156
+ <c:set var='leftstyle' value='line-height:33px;width:200px;padding-left:7px;border-bottom:1px dotted #888; font-weight:bold;' />
157
+ <c:set var='righstyle' value='padding-left:10px;border-bottom:1px dotted #888;border-left:1px dotted #888;'/>
158
+
160
159
  <l5m:tabPanel2
161
- id="accordionTestTop"
160
+ id="${baseServicerParameterBean.tabPanelID}"
162
161
  captions="${baseServicerParameterBean.tabbedPanelCaptions}"
163
162
  selected="${baseServicerParameterBean.selectedTab}"
164
163
  style="${styleLowerCase}"
@@ -184,7 +183,12 @@ if(AAUtils.isAjaxRequest(request)){
184
183
 
185
184
  <aa:zone name="sourcePanelZone">
186
185
  <table id='sourcePanel' border="0" cellspacing="0" cellpadding="0" width="100%">
187
- <tr><td></td></tr>
186
+ <tr class="row">
187
+ <td class="TD" style="${leftstyle};" nowrap valign="top"> /td>
188
+ <td class="TD LD" style="${righstyle}; line-height:16px;">
189
+
190
+ </td>
191
+ </tr>
188
192
  </table>
189
193
  </aa:zone>
190
194
  </td>
@@ -226,80 +230,14 @@ if(AAUtils.isAjaxRequest(request)){
226
230
  <tr>
227
231
  <td align="left" valign="top" width="99%">
228
232
  <aa:zone name="result">
229
- <div class="reportTopBox">
230
- <c:forEach items="${PANEL}" var="panel" varStatus="panelIndex">
231
- <c:if test="${panel.enable}">
232
- <c:set var="jsChangePanel">
233
- javascript:pageAction.changePanel('${panelIndex.index}');
234
- </c:set>
235
- <c:if test="${true}">
236
- <div style=' ${worker.servicer.panelIndex == panelIndex.index ?"" : ""} ; white-space:nowrap; ${ true ?"font-weight: bold" : ""} ; font-size:11px; border-top-width:0px;${panelIndex.first?"border-left-width:0px":""}' nowrap id="displayBy_${panelIndex.index }" onclick="${baseServicerParameterBean.panelIndex== panelIndex.index ? '':(true? jsChangePanel:'')}" class="${worker.servicer.panelIndex== panelIndex.index? 'focus' : true ?'base':'base'}" >
237
- ${panel.label}
238
- </div>
239
- </c:if>
240
- <c:if test="${false}">
241
- <div style=' ${worker.servicer.panelIndex == panelIndex.index || !true ?"cursor: none" : ""} ; white-space:nowrap; ${worker.servicer.panelIndex == panelIndex.index || true ?"font-weight: bold" : ""} ; font-size:11px; border-top-width:0px;${panelIndex.first?"border-left-width:0px":""}' nowrap id="displayBy_${panelIndex.index }" onclick="${baseServicerParameterBean.panelIndex== panelIndex.index ? '':(true? jsChangePanel:'')}" class="${worker.servicer.panelIndex== panelIndex.index? 'focus' :true?'base':'base'}" >
242
- ${panel.label }
243
- </div>
244
- </c:if>
245
- </c:if>
246
- </c:forEach>
247
- <div class="last">&nbsp;</div>
248
- </div>
249
- <div style='clear:both'/>
250
- <table width="100%">
251
- <tr>
252
- <td nowrap="nowrap" height="40px" style="padding-left:5px;" >
253
- </td>
254
- <td nowrap="nowrap" height="40px" style="text-align:right; float:right ;padding-right:10px;">
255
- ${worker.renderPaginatorHTML}
256
- </td>
257
- </tr>
258
- </table>
259
-
260
-
261
- <table border="0" cellpadding="0" cellspacing="0" width="100%" >
262
- <tr> <td nowrap="nowrap" align='left' >
263
- <c:if test="${baseServicerParameterBean.panelIndex !=worker.help && baseServicerParameterBean.panelIndex !=worker.dataAvailability}" >
264
- </c:if>
265
- </td></tr>
266
- <tr>
267
- <td nowrap="nowrap" align='center' >
268
- ${worker.renderHTML}
269
- </td>
270
- </tr>
271
- </table>
272
-
273
-
274
-
275
-
276
-
277
-
278
-
279
- <c:if test="${baseServicerParameterBean.panelIndex ==worker.help}">
280
- <!-- the div of descriptionTab -->
281
- <div id="descriptionTab"><br/><br/><l5m:appDesc
282
- navigationBean="${worker.navigationBean}" style="${styleLowerCase}" id="navDesc" />
283
- </div>
284
- <!-- the end descriptionTab-->
285
- </c:if>
286
-
287
- <c:if test="${baseServicerParameterBean.panelIndex ==worker.dataAvailability}">
288
- <table width="100%">
289
- <tr>
290
- <td width="15%" rowspan="4">&nbsp;</td>
291
- <td width="70%">
292
- <c:set var="moduleGeneralAvailability" scope="request" value="${worker.servicer.generalAvailabilityModule}"/>
293
- <!-- GeneralAvailabilityModule.SESSION_NAME -->
294
- <table border="0" cellpadding="0" cellspacing="2" width="100%">
295
- <jsp:include page="GeneralAvailabilityModule.jsp" flush="true"/>
296
- </table>
297
- </td>
298
- <td width="15%" rowspan="4">&nbsp;</td>
299
- </tr>
300
- </table>
301
-
302
- </c:if>
233
+ <l5m:resultZone
234
+ panels='${PANEL}'
235
+ formName="${worker.FORM_NAME}" packageName="${packageLowerCase}" style="${styleLowerCase}"
236
+ groupId="${servicer.groupId}" companyId="${servicer.companyId}"
237
+ userId="${servicer.userId}"
238
+ dbHandler="${servicer.dbHandler}" usingDefaultPaginatorRender='false'
239
+
240
+ />
303
241
  </aa:zone>
304
242
  </td>
305
243
  </tr>
@@ -366,14 +304,16 @@ if(AAUtils.isAjaxRequest(request)){
366
304
  <c:if test="${!empty paraBean.displayWrappers[paraBean.panelIndex]}">
367
305
  <c:forEach var="displayWrapper" items="${paraBean.displayWrappers[paraBean.panelIndex]}">
368
306
  <c:if test="${!empty displayWrapper.columnsMap}">
307
+ <div style="${displayWrapper.hidden?'display:none;':''}">
369
308
  <l5m:multipleSelect
370
309
  id="${displayWrapper.id}"
371
310
  style="${styleLowerCase}"
372
311
  title="${displayWrapper.title}"
373
312
  sourceValues="${displayWrapper.columnsMap}"
374
313
  selectedValues="${displayWrapper.selectedColumns }"
314
+ selectedValue="${displayWrapper.selectedValue}"
375
315
  onChange=""
376
- displayMode="2"
316
+ displayMode="${displayWrapper.displayMode}"
377
317
  useSortBy="true"
378
318
  sortBy="1"
379
319
  sortField="2"
@@ -383,7 +323,8 @@ if(AAUtils.isAjaxRequest(request)){
383
323
  destinationWidth="200"
384
324
  sourceSize="5"
385
325
  destinationSize="5"
386
- />
326
+ />
327
+ </div>
387
328
  </c:if>
388
329
  </c:forEach>
389
330
  </c:if>
@@ -459,11 +400,7 @@ if(AAUtils.isAjaxRequest(request)){
459
400
  </l5m:dialogBottom>
460
401
  </l5m:dialog>
461
402
 
462
- <aa:zone name="footerZone">
463
- <l5m:jspFoot id="jspFoot"/>
464
- </aa:zone>
465
-
466
-
403
+
467
404
  <!-- end dialog -->
468
405
 
469
406
  </l5m:jspBody>
@@ -10,6 +10,7 @@ import com.l5m.customtags.tags.utils.IconStatus;
10
10
  import com.l5m.customtags.tags.utils.TopBarIcon;
11
11
  import com.l5m.!REPLACE_STYLE!.engine.servicer.!REPLACE_ME_FILE!ServicerImpl;
12
12
  import com.l5m.!REPLACE_STYLE!.engine.servicer.!REPLACE_ME_FILE!ServicerImpl.PANEL;
13
+ import com.l5m.!REPLACE_STYLE!.engine.exporter.!REPLACE_ME_FILE!Viewer;
13
14
 
14
15
  public class !REPLACE_ME_FILE!Worker extends AbstractBaseWorker {
15
16
  private static final long serialVersionUID = 1L;
@@ -132,14 +133,15 @@ public class !REPLACE_ME_FILE!Worker extends AbstractBaseWorker {
132
133
 
133
134
  @Override
134
135
  protected void initWorker() {
135
- this.servicer.getBaseServicerParameterBean().setPanelIndex(0);
136
+ this.servicer.getBaseServicerParameterBean().resetPanelIndex2Default();
136
137
 
137
138
  }
138
139
 
139
140
  @Override
140
141
  public void clearResultAction() {
141
142
  super.clearResultAction();
142
- this.servicer.setPanelIndex(0);
143
+ this.servicer.getBaseServicerParameterBean().resetPanelIndex2Default();
144
+
143
145
  }
144
146
 
145
147
  public void updateExportInformationBean(){
@@ -155,4 +157,10 @@ public class !REPLACE_ME_FILE!Worker extends AbstractBaseWorker {
155
157
  super.submitAction();
156
158
 
157
159
  }
160
+
161
+ @Override
162
+ public !REPLACE_ME_FILE!Viewer getViewer (boolean isHTML) {
163
+ !REPLACE_ME_FILE!Viewer viewer = new !REPLACE_ME_FILE!Viewer(this, this.servicer.getExcelOption(), isHTML );
164
+ return viewer;
165
+ }
158
166
  }
@@ -9,6 +9,13 @@ import com.l5m.common.bean.GeneralAvailabilityModule;
9
9
  import com.l5m.common.util.dcnds.QHTCommonUtil;
10
10
  import com.l5m.customtags.beans.BaseServicerParaBean;
11
11
  import com.l5m.customtags.tags.utils.GenerateTagUtil;
12
+ import java.sql.SQLException;
13
+ import java.util.ArrayList;
14
+
15
+ import com.l5m.customtags.beans.annotation.ParseMethodType;
16
+ import com.l5m.customtags.beans.annotation.RequestParse;
17
+ import com.l5m.customtags.module.statebean.ExcelOptionStateBean;
18
+
12
19
  import com.l5m.!REPLACE_STYLE!.engine.worker.UserCompanyWorker;
13
20
  /**
14
21
  * make sure code as clear as possible.
@@ -24,7 +31,7 @@ import com.l5m.!REPLACE_STYLE!.engine.worker.UserCompanyWorker;
24
31
  */
25
32
  public class !REPLACE_ME_FILE!ServicerImpl extends BaseServicerParaBean.AbstractBaseServicer{
26
33
  private static final long serialVersionUID = 1L;
27
- public static enum PANEL {
34
+ public static enum PANEL implements com.l5m.customtags.beans.PanelTab{
28
35
  REPORT("REPORT") ,
29
36
  Help("Help"), DataAvailability("Data Availability")
30
37
  ; //Total Day/Prime * LSD/C3
@@ -51,6 +58,10 @@ public class !REPLACE_ME_FILE!ServicerImpl extends BaseServicerParaBean.Abstract
51
58
  public int panelIndex(){
52
59
  return this.ordinal();
53
60
  }
61
+ @Override
62
+ public int getPanelIndex() {
63
+ return panelIndex();
64
+ }
54
65
  }
55
66
 
56
67
 
@@ -59,14 +70,16 @@ public class !REPLACE_ME_FILE!ServicerImpl extends BaseServicerParaBean.Abstract
59
70
  @Override
60
71
  public void clearCache() {
61
72
  super.clearCache();
62
- this.servicerParamBean.setPanelIndex(0);
63
-
73
+ this.servicerParamBean.resetPanelIndex2Default();
64
74
  System.gc();
65
75
  }
66
76
 
67
77
 
68
78
  @Override
69
79
  public void handlePaginator(int panelIndex) {
80
+ if(panelIndex == PANEL.DataAvailability.panelIndex() || panelIndex == PANEL.Help.panelIndex() ){
81
+ return ;
82
+ }
70
83
  if (this.servicerParamBean.getPaginatorStateBean(panelIndex) == null) {
71
84
  this.servicerParamBean.setPaginatorStateBean(GenerateTagUtil.initPaginatorStateBean("PaginatorStateBeanTag"), panelIndex);
72
85
  this.servicerParamBean.getPaginatorStateBean(panelIndex).setRowsPerPage(1);
@@ -88,8 +101,12 @@ public class !REPLACE_ME_FILE!ServicerImpl extends BaseServicerParaBean.Abstract
88
101
  public void init( ) {
89
102
  super.init();
90
103
  try {
91
- this.servicerParamBean = new BaseServicerParaBean(this.dh, this.companyId, this.groupId , this.userId, this.userCompanyId, PANEL.values().length);
104
+ if(this.servicerParamBean == null){
105
+ this.servicerParamBean = new BaseServicerParaBean();
106
+ }
107
+ this.servicerParamBean .init(this.dh, this.companyId, this.groupId , this.userId, this.userCompanyId, PANEL.values().length);
92
108
  this.servicerParamBean.initDisplayAndSortBy();
109
+ this.servicerParamBean.setDefaultPanelIndex(PANEL.REPORT.panelIndex());
93
110
  try{
94
111
  this.initTimeSpan();
95
112
  }catch(Exception e){
@@ -0,0 +1,60 @@
1
+ package com.l5m.!REPLACE_STYLE!.engine.exporter;
2
+
3
+ import java.util.ArrayList;
4
+ import java.util.Arrays;
5
+ import java.util.List;
6
+
7
+ import com.l5m.customtags.export.BaseExcelHandler;
8
+ import com.l5m.customtags.export.BaseViewer;
9
+ import com.l5m.customtags.module.statebean.ExcelOptionStateBean;
10
+ import com.l5m.!REPLACE_STYLE!.engine.servicer.!REPLACE_ME_FILE!ServicerImpl;
11
+ import com.l5m.!REPLACE_STYLE!.engine.servicer.!REPLACE_ME_FILE!ServicerImpl.PANEL;
12
+ import com.l5m.!REPLACE_STYLE!.engine.worker.!REPLACE_ME_FILE!Worker;
13
+
14
+ public class !REPLACE_ME_FILE!Viewer extends BaseViewer {
15
+ protected boolean[] panelController;
16
+
17
+ public !REPLACE_ME_FILE!Viewer(!REPLACE_ME_FILE!Worker worker, ExcelOptionStateBean excelOption, boolean isHTML) {
18
+ super(excelOption, isHTML);
19
+ this.servicer = worker.getServicer();
20
+ this.exportInformationBean = this.servicer.getExportInformationBean();
21
+ boolean[] panelController = servicer.getPanelController();
22
+ if(panelController == null){
23
+ panelController = new boolean[PANEL.values().length - 2];
24
+ Arrays.fill(panelController, true);
25
+ }
26
+ this.UPPERCASE_STYLE = this.servicer.getExportInformationBean().getStyleLowerCase().toUpperCase();
27
+
28
+ this.sheets = new String[PANEL.values().length - 2];
29
+ List<String> list = new ArrayList<String>();
30
+ for (int i = 0; i < sheets.length; i++) {
31
+ if(!PANEL.values()[i].isEnable()){
32
+ panelController[i] = false;
33
+ }
34
+ if(panelController[i]){
35
+ list.add( PANEL.values()[i].getLabel());
36
+ }
37
+ }
38
+ this.sheets = list.toArray(new String[list.size()]);
39
+ this.rowPositions = new int[this.sheets.length];
40
+ Arrays.fill(this.rowPositions, 4);
41
+ this.panelController = panelController;
42
+ }
43
+
44
+
45
+ private static final long serialVersionUID = 1L;
46
+ !REPLACE_ME_FILE!ServicerImpl servicer;
47
+
48
+ @Override
49
+ public void generateBody (BaseExcelHandler handler, boolean onlyCurrentReport) {
50
+ if(!this.servicer.isDisplayStage()){
51
+ return;
52
+ }
53
+ final int panelIndex = this.servicer.getPanelIndex();
54
+
55
+
56
+ this.servicer.setPanelIndex(panelIndex);
57
+
58
+ }
59
+
60
+ }