1 9 10 package com.jaspersoft.jasperserver.ws.axis2; 11 12 import com.jaspersoft.jasperserver.api.metadata.common.domain.Query; 13 import com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.ReportDataSource; 14 import com.jaspersoft.jasperserver.api.metadata.xml.domain.impl.Argument; 15 import com.jaspersoft.jasperserver.api.metadata.xml.domain.impl.InputControlQueryDataRow; 16 import java.sql.Connection ; 17 import java.sql.PreparedStatement ; 18 import java.sql.ResultSet ; 19 import java.util.ArrayList ; 20 import java.util.HashMap ; 21 import java.util.Iterator ; 22 import java.util.List ; 23 import java.util.Map ; 24 import javax.naming.Context ; 25 import javax.naming.InitialContext ; 26 27 import net.sf.jasperreports.engine.JRParameter; 28 import net.sf.jasperreports.engine.JRParameter; 29 import net.sf.jasperreports.engine.JRReport; 30 31 import org.apache.commons.logging.Log; 32 import org.apache.commons.logging.LogFactory; 33 34 import com.jaspersoft.jasperserver.api.JSException; 35 import com.jaspersoft.jasperserver.api.engine.common.service.EngineService; 36 import com.jaspersoft.jasperserver.api.metadata.common.domain.DataType; 37 import com.jaspersoft.jasperserver.api.metadata.common.domain.FileResource; 38 import com.jaspersoft.jasperserver.api.metadata.common.domain.Folder; 39 import com.jaspersoft.jasperserver.api.metadata.common.domain.InputControl; 40 import com.jaspersoft.jasperserver.api.metadata.common.domain.ListOfValues; 41 import com.jaspersoft.jasperserver.api.metadata.common.domain.ListOfValuesItem; 42 import com.jaspersoft.jasperserver.api.metadata.common.domain.Resource; 43 import com.jaspersoft.jasperserver.api.metadata.common.domain.ResourceLookup; 44 import com.jaspersoft.jasperserver.api.metadata.common.domain.ResourceReference; 45 import com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService; 46 import com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.BeanReportDataSource; 47 import com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.JdbcReportDataSource; 48 import com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.JndiJdbcReportDataSource; 49 import com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.ReportUnit; 50 import com.jaspersoft.jasperserver.api.metadata.olap.domain.MondrianConnection; 51 import com.jaspersoft.jasperserver.api.metadata.olap.domain.XMLAConnection; 52 import com.jaspersoft.jasperserver.api.metadata.view.domain.FilterCriteria; 53 import com.jaspersoft.jasperserver.api.metadata.xml.domain.impl.ListItem; 54 import com.jaspersoft.jasperserver.api.metadata.xml.domain.impl.ResourceDescriptor; 55 56 57 61 public class RepositoryHelper extends org.springframework.web.context.support.WebApplicationObjectSupport 62 { 63 protected static final Log log = LogFactory.getLog(RepositoryHelper.class); 64 65 private RepositoryService repo = null; 66 private EngineService engine; 67 68 protected void setUp() throws Exception { 69 70 setRepo((RepositoryService) Axis2SpringServlet.getContext().getBean("repositoryService")); 71 setEngine( (EngineService)Axis2SpringServlet.getContext().getBean("engineService") ); 72 log.debug("Repository: " + getRepo()); 73 } 74 75 public static RepositoryHelper mainInstance = null; 76 77 public static RepositoryHelper getInstance() 78 { 79 if (mainInstance == null) 80 { 81 mainInstance = new RepositoryHelper(); 82 try { 83 mainInstance.setUp(); 84 } catch (Exception ex) 85 { 86 log.error(ex); 87 mainInstance = null; 88 } 89 } 90 return mainInstance; 91 } 92 93 96 private RepositoryHelper() { 97 } 98 99 100 103 public List list(String uri) 104 { 105 log.debug("list for uri: " + uri); 106 107 List returnedMaps = new ArrayList (); 108 109 110 113 List folders = getRepo().getSubFolders(null, uri); 114 115 if (folders == null) return returnedMaps; 116 117 for (int i=0; i <folders.size(); ++i) 118 { 119 Resource folderRes = (Resource)folders.get(i); 120 returnedMaps.add( createResourceDescriptor(folderRes) ); 121 } 122 123 FilterCriteria filterCriteria = new FilterCriteria(); 125 filterCriteria.addFilterElement( FilterCriteria.createParentFolderFilter(uri) ); 126 127 130 List units = getRepo().loadClientResources(filterCriteria); 131 132 if (units == null) return returnedMaps; 133 134 for (Iterator it = units.iterator(); units != null && it.hasNext(); ) 135 { 136 Resource fileRes = (Resource) it.next(); 137 try { 138 returnedMaps.add( createResourceDescriptor(fileRes)); 139 } catch (Exception ex) 140 { 141 log.error(ex); 142 } 143 } 144 145 return returnedMaps; 146 } 147 148 149 158 public ResourceDescriptor getResourceDescriptor(String uri) 159 { 160 return getResourceDescriptor(uri, null); 161 } 162 171 public ResourceDescriptor getResourceDescriptor(String uri, Map specialOptions) 172 { 173 175 Resource res = null; 176 177 int sep = uri.lastIndexOf(Folder.SEPARATOR); 178 179 String name; 180 String folderName; 181 182 FilterCriteria filterCriteria = new FilterCriteria(); 183 184 if (sep >= 0) { 185 name = uri.substring(sep + Folder.SEPARATOR_LENGTH); 186 folderName = uri.substring(0,sep); 187 } else { 188 throw new JSException("Invalid URI: " + uri); 190 } 191 192 193 if (folderName.endsWith("_files")) 195 { 196 197 String ruUri = folderName.substring( 0, folderName.length() - "_files".length() ); 198 log.warn("Loading uri: " + ruUri); 199 Resource resRU = (Resource)getRepo().getResource(null, ruUri); 200 if (resRU != null && resRU.getResourceType().equals( ReportUnit.class.getName() )) 201 { 202 203 ResourceDescriptor ruRd = getResourceDescriptor(folderName); 206 207 log.warn("Loaded RU " + res); 208 if (ruRd == null) { 209 return null; 211 } 212 213 res = (Resource)getRepo().getResource(null, uri); 214 log.warn("Loaded resource " + uri + " " + res); 215 } 216 } 217 218 if (res == null) 219 { 220 if (folderName.length() == 0) folderName = "/"; 221 filterCriteria.addFilterElement( FilterCriteria.createParentFolderFilter(folderName) ); 222 filterCriteria.addFilterElement(FilterCriteria.createPropertyEqualsFilter("name", name)); 223 224 227 List resources = getRepo().loadClientResources(filterCriteria); 228 if (resources != null && !resources.isEmpty()) { 229 res = (Resource) resources.get(0); 230 } 231 } 232 233 if (res == null) { 235 Folder folder = (Folder) getRepo().getFolder(null, uri); 236 237 if (folder != null) 238 { 239 res = folder; 240 } 241 else 242 { 243 return null; 244 } 245 } 246 return createResourceDescriptor( res, true, specialOptions); 247 } 248 249 252 protected ResourceDescriptor createResourceDescriptor( Resource resource) 253 { 254 return createResourceDescriptor( resource, false); 255 } 256 257 265 protected ResourceDescriptor createResourceDescriptor( Resource resource, boolean reportUnitContentToo) 266 { 267 return createResourceDescriptor( resource, reportUnitContentToo, null); 268 } 269 277 protected ResourceDescriptor createResourceDescriptor( Resource resource, boolean reportUnitContentToo, Map specialOptions) 278 { 279 if (resource instanceof ResourceLookup) { 280 throw new JSException("ResourceLookup, not a resource: " + resource.getClass().getName()); 281 } 282 283 ResourceDescriptor rd = new ResourceDescriptor(); 284 rd.setUriString( resource.getURIString() ); 285 rd.setDescription( resource.getDescription()); 286 rd.setLabel( resource.getLabel()); 287 rd.setName( resource.getName() ); 288 rd.setResourceType( resource.getResourceType() ); 289 rd.setParentFolder( resource.getParentFolder()); 290 rd.setVersion( resource.getVersion() ); 291 292 rd.setCreationDate( resource.getCreationDate() ); 293 294 295 if (resource.getResourceType().equals( Folder.class.getName() )) 296 { 297 rd.setWsType( rd.TYPE_FOLDER); 299 } 300 else if (resource.getResourceType().equals( ReportUnit.class.getName() )) 301 { 302 ReportUnit reportUnit = (ReportUnit)resource; 303 rd.setWsType( rd.TYPE_REPORTUNIT); 304 305 if (reportUnitContentToo) 306 { 307 ResourceReference ruDataSource = reportUnit.getDataSource(); 309 if (ruDataSource.isLocal()) 310 { 311 rd.getChildren().add(createResourceDescriptor(ruDataSource.getLocalResource())); 312 } 313 else 314 { 315 ResourceDescriptor rdDs = new ResourceDescriptor(); 316 rdDs.setWsType( rdDs.TYPE_DATASOURCE ); 317 rdDs.setReferenceUri(ruDataSource.getReferenceURI()); 318 rdDs.setIsReference(true); 319 rd.getChildren().add( rdDs ); 320 } 321 322 ResourceReference ruMainReportResourceResourceReference = reportUnit.getMainReport(); 324 325 ResourceDescriptor ruMainReportResourceDescriptor = null; 326 327 if (ruMainReportResourceResourceReference != null) 328 { 329 if (ruMainReportResourceResourceReference.isLocal()) 330 { 331 ruMainReportResourceDescriptor = createResourceDescriptor(ruMainReportResourceResourceReference.getLocalResource()); 332 } 334 else 335 { 336 ruMainReportResourceDescriptor = getResourceDescriptor(ruMainReportResourceResourceReference.getReferenceURI()); 337 ruMainReportResourceDescriptor.setReferenceUri( ruMainReportResourceResourceReference.getReferenceURI()); 339 ruMainReportResourceDescriptor.setIsReference(true); 340 } 342 343 ruMainReportResourceDescriptor.setMainReport(true); 344 rd.getChildren().add(ruMainReportResourceDescriptor); 345 } 346 347 348 if (ruMainReportResourceResourceReference != null) 349 { 350 if (ruMainReportResourceResourceReference.isLocal()) 351 { 352 ruMainReportResourceDescriptor = createResourceDescriptor(ruMainReportResourceResourceReference.getLocalResource()); 353 } 355 else 356 { 357 ruMainReportResourceDescriptor = getResourceDescriptor(ruMainReportResourceResourceReference.getReferenceURI()); 358 } 360 361 ruMainReportResourceDescriptor.setMainReport(true); 362 rd.getChildren().add(ruMainReportResourceDescriptor); 363 } 364 365 List inputControls = reportUnit.getInputControls(); 366 if (inputControls != null && !inputControls.isEmpty()) { 367 for (Iterator it = inputControls.iterator(); it.hasNext();) { 368 369 ResourceReference resRef = (ResourceReference)it.next(); 370 ResourceDescriptor ruResourceDescriptor = null; 371 if (resRef.isLocal()) 372 { 373 ruResourceDescriptor = createResourceDescriptor(resRef.getLocalResource()); 374 } 376 else 377 { 378 ruResourceDescriptor = getResourceDescriptor(resRef.getReferenceURI()); 379 } 381 382 if (ruResourceDescriptor != null) 383 { 384 rd.getChildren().add( ruResourceDescriptor ); 385 } 386 } 387 } 388 389 List resources = reportUnit.getResources(); 390 if (resources != null && !resources.isEmpty()) { 391 for (Iterator it = resources.iterator(); it.hasNext();) { 392 393 ResourceReference resRef = (ResourceReference) it.next(); 394 ResourceDescriptor ruResourceDescriptor = null; 395 if (resRef.isLocal()) 396 { 397 ruResourceDescriptor = createResourceDescriptor(resRef.getLocalResource()); 398 } 400 else 401 { 402 ruResourceDescriptor = getResourceDescriptor(resRef.getReferenceURI()); 403 } 405 406 if (ruResourceDescriptor != null && 407 !ruMainReportResourceDescriptor.getUriString().equals(ruResourceDescriptor.getUriString())) 408 { 409 rd.getChildren().add( ruResourceDescriptor ); 410 } 411 } 412 } 413 } 414 415 } 416 else if (resource.getResourceType().equals( BeanReportDataSource.class.getName() )) 417 { 418 BeanReportDataSource dsResource = (BeanReportDataSource)resource; 419 rd.setBeanName( dsResource.getBeanName()); 420 rd.setBeanMethod( dsResource.getBeanMethod()); 421 rd.setWsType( rd.TYPE_DATASOURCE_BEAN ); 422 } 423 else if (resource.getResourceType().equals( FileResource.class.getName() )) 424 { 425 FileResource fileResource = (FileResource)resource; 426 rd.setWsType( fileResource.getFileType() ); 427 rd.setHasData( fileResource.hasData() ); 428 rd.setIsReference( fileResource.isReference() ); 429 if (rd.getIsReference()) 430 { 431 rd.setReferenceUri( fileResource.getReferenceURI()); 432 } 433 434 String resourceType = fileResource.getFileType(); 435 if (rd.getIsReference()) { 436 rd.setWsType( ResourceDescriptor.TYPE_REFERENCE ); 437 } 438 else if (resourceType.equals("jrxml")) rd.setWsType( ResourceDescriptor.TYPE_JRXML); 439 else if (resourceType.equals("img")) rd.setWsType( ResourceDescriptor.TYPE_IMAGE); 440 else if (resourceType.equals("font")) rd.setWsType( ResourceDescriptor.TYPE_FONT); 441 else if (resourceType.equals("jar")) rd.setWsType( ResourceDescriptor.TYPE_CLASS_JAR); 442 else if (resourceType.equals("prop")) rd.setWsType( ResourceDescriptor.TYPE_RESOURCE_BUNDLE); 443 444 } 445 else if (resource.getResourceType().equals( JdbcReportDataSource.class.getName() )) 446 { 447 JdbcReportDataSource dsResource = (JdbcReportDataSource)resource; 448 rd.setDriverClass( dsResource.getDriverClass()); 449 rd.setPassword( dsResource.getPassword()); 450 rd.setUsername( dsResource.getUsername()); 451 rd.setConnectionUrl( dsResource.getConnectionUrl() ); 452 rd.setWsType( rd.TYPE_DATASOURCE_JDBC ); 453 } 454 else if (resource.getResourceType().equals( JndiJdbcReportDataSource.class.getName() )) 455 { 456 JndiJdbcReportDataSource dsResource = (JndiJdbcReportDataSource)resource; 457 rd.setJndiName( dsResource.getJndiName()); 458 rd.setWsType( rd.TYPE_DATASOURCE_JNDI ); 459 } 460 else if (resource.getResourceType().equals( DataType.class.getName() )) 461 { 462 DataType fileResource = (DataType)resource; 463 rd.setWsType( rd.TYPE_DATA_TYPE ); 464 rd.setHasData(false); 465 rd.setIsReference( false ); 466 467 rd.setDataType( fileResource.getType() ); 468 rd.setPattern( fileResource.getRegularExpr()); 469 rd.setMaxValue( fileResource.getMaxValue() == null ? null : fileResource.getMaxValue()+""); 471 rd.setMinValue( fileResource.getMinValue() == null ? null : fileResource.getMinValue()+""); 473 rd.setStrictMax( fileResource.isStrictMax() ); 474 rd.setStrictMin( fileResource.isStrictMin() ); 475 476 } 477 else if (resource.getResourceType().equals( InputControl.class.getName() )) 478 { 479 InputControl fileResource = (InputControl)resource; 480 rd.setWsType( rd.TYPE_INPUT_CONTROL ); 481 rd.setHasData(false); 482 rd.setIsReference( false ); 483 484 rd.setMandatory( fileResource.isMandatory() ); 485 rd.setReadOnly( fileResource.isReadOnly() ); 486 487 rd.setControlType( fileResource.getType() ); 488 489 ResourceReference childReference = null; 490 if (rd.getControlType() == ResourceDescriptor.IC_TYPE_SINGLE_VALUE) 491 { 492 childReference = fileResource.getDataType(); 493 } 494 else if (rd.getControlType() == ResourceDescriptor.IC_TYPE_SINGLE_SELECT_LIST_OF_VALUES) 495 { 496 childReference = fileResource.getListOfValues(); 497 } 498 else if (rd.getControlType() == ResourceDescriptor.IC_TYPE_SINGLE_SELECT_QUERY) 499 { 500 log.info("Adding query and columns: " + fileResource.getQueryValueColumn() ); 501 childReference = fileResource.getQuery(); 502 rd.setQueryValueColumn( fileResource.getQueryValueColumn() ); 503 rd.setQueryVisibleColumns( fileResource.getQueryVisibleColumns() ); 504 } 505 506 if (childReference != null) 507 { 508 ResourceDescriptor childRd = null; 509 510 if (childReference.isLocal()) 511 { 512 childRd = createResourceDescriptor(childReference.getLocalResource()); 513 } 514 else 515 { 516 childRd = new ResourceDescriptor(); 518 childRd.setWsType(ResourceDescriptor.TYPE_REFERENCE); 519 childRd.setReferenceUri(childReference.getReferenceURI()); 520 } 521 522 if (childRd != null) 523 { 524 rd.getChildren().add(childRd); 525 } 526 } 527 528 if (specialOptions != null && 529 specialOptions.containsKey(Argument.IC_GET_QUERY_DATA)) 530 { 531 String dsUri = (String )specialOptions.get(Argument.IC_GET_QUERY_DATA); 533 534 java.util.List data = getInputControlItems(fileResource, dsUri); 535 536 rd.setQueryData( data ); 537 } 538 } 539 else if (resource.getResourceType().equals( com.jaspersoft.jasperserver.api.metadata.olap.domain.MondrianConnection.class.getName() )) 540 { 541 MondrianConnection fileResource = (MondrianConnection)resource; 542 rd.setWsType( rd.TYPE_OLAP_MONDRIAN_CONNECTION ); 543 rd.setHasData(false); 544 rd.setIsReference( false ); 545 } 546 else if (resource.getResourceType().equals( com.jaspersoft.jasperserver.api.metadata.olap.domain.XMLAConnection.class.getName() )) 547 { 548 XMLAConnection fileResource = (XMLAConnection)resource; 549 rd.setWsType( rd.TYPE_OLAP_XMLA_CONNECTION ); 550 rd.setHasData(false); 551 rd.setIsReference( false ); 552 } 553 else if (resource.getResourceType().equals( com.jaspersoft.jasperserver.api.metadata.common.domain.ListOfValues.class.getName() )) 554 { 555 ListOfValues fileResource = (ListOfValues)resource; 556 rd.setWsType( rd.TYPE_LOV ); 557 rd.setHasData(false); 558 rd.setIsReference( false ); 559 560 ArrayList list = new ArrayList (); 561 ListOfValuesItem[] lovis = fileResource.getValues(); 562 for (int k=0; k< lovis.length; ++k) 563 { 564 ListItem lsitItem = new ListItem(lovis[k].getLabel(), lovis[k].getValue()); 565 list.add(lsitItem); 566 } 567 rd.setListOfValues( list ); 568 } 569 else if (resource.getResourceType().equals( com.jaspersoft.jasperserver.api.metadata.common.domain.Query.class.getName() )) 570 { 571 Query fileResource = (Query)resource; 572 rd.setWsType( rd.TYPE_QUERY ); 573 rd.setHasData(false); 574 rd.setIsReference( false ); 575 rd.setSql( fileResource.getSql()); 576 } 577 else 578 { 579 rd.setWsType( rd.TYPE_UNKNOW); 580 System.out.println("Unknow resource type: " + resource.getResourceType() + " instanceof " + resource.getClass().getName()); 581 } 582 583 return rd; 584 } 585 586 public RepositoryService getRepo() { 587 return repo; 588 } 589 590 public void setRepo(RepositoryService repo) { 591 this.repo = repo; 592 } 593 594 public EngineService getEngine() { 595 return engine; 596 } 597 598 public void setEngine(EngineService engine) { 599 this.engine = engine; 600 } 601 602 611 public Map convertParameterValues(String reportUri, Map currentParameters) 612 { 613 Map parametersMap = new HashMap (); 614 615 JRReport report = getEngine().getMainJasperReport(null, reportUri); 616 JRParameter[] parameters = report.getParameters(); 617 if (parameters != null) 618 { 619 for(int i = 0; i < parameters.length; i++) 620 { 621 JRParameter parameter = parameters[i]; 622 parametersMap.put(parameter.getName(), parameter); 623 } 624 } 625 626 627 for (Iterator i=currentParameters.keySet().iterator(); i.hasNext(); ) 628 { 629 String parameterName = ""+i.next(); 630 631 JRParameter parameter = (JRParameter)parametersMap.get(parameterName); 632 if (parameter != null) 633 { 634 Object value = currentParameters.get(parameterName); 635 if (value != null && java.util.Date .class.getName().equals(parameter.getValueClassName())) 636 { 637 638 value = new java.util.Date (Long.valueOf(value.toString()).longValue()); 639 } 640 else if (value != null && Number .class.isAssignableFrom(parameter.getValueClass())) 641 { 642 value = new java.math.BigDecimal (value.toString()); 643 if (Byte .class.getName().equals(parameter.getValueClassName())) 644 { 645 value = new Byte (((Number )value).byteValue()); 646 } 647 else if (Short .class.getName().equals(parameter.getValueClassName())) 648 { 649 value = new Short (((Number )value).shortValue()); 650 } 651 else if (Integer .class.getName().equals(parameter.getValueClassName())) 652 { 653 value = new Integer (((Number )value).intValue()); 654 } 655 else if (Long .class.getName().equals(parameter.getValueClassName())) 656 { 657 value = new Long (((Number )value).longValue()); 658 } 659 else if (Float .class.getName().equals(parameter.getValueClassName())) 660 { 661 value = new Float (((Number )value).floatValue()); 662 } 663 else if (Double .class.getName().equals(parameter.getValueClassName())) 664 { 665 value = new Double (((Double )value).longValue()); 666 } 667 } 668 else if (value != null && Boolean .class.getName().equals(parameter.getValueClassName())) 669 { 670 value = Boolean.valueOf(value.toString()); 671 } 672 673 currentParameters.put(parameterName, value); 674 } 675 } 676 677 return currentParameters; 678 } 679 680 681 686 protected java.util.List getInputControlItems(InputControl control, String datasourceUri) throws JSException 687 { 688 689 java.util.List list = new java.util.ArrayList (); 690 Connection connection = null; 691 Query query = null; 692 ResourceReference queryRef = control.getQuery(); 693 if (queryRef.isLocal()) 694 query = (Query) queryRef.getLocalResource(); 695 else 696 query = (Query) repo.getResource(null, queryRef.getReferenceURI()); 697 698 699 if (datasourceUri == null) return list; 700 701 Resource dataSource = repo.getResource(null,datasourceUri); 702 703 try { 704 if (dataSource instanceof JdbcReportDataSource) { 705 HashMap paramValues = new HashMap (); 706 707 getEngine().createDataSourceService((ReportDataSource) dataSource).setReportParameterValues(paramValues); 708 connection = (Connection ) paramValues.get(JRParameter.REPORT_CONNECTION); 709 } 710 else if (dataSource instanceof JndiJdbcReportDataSource) { 711 JndiJdbcReportDataSource jndiDs = (JndiJdbcReportDataSource) dataSource; 712 713 Context ctx = new InitialContext (); 714 javax.sql.DataSource sqlDs = (javax.sql.DataSource ) ctx.lookup("java:comp/env/" + jndiDs.getJndiName()); 715 connection = sqlDs.getConnection(); 716 } 717 718 } catch (Exception ex) 719 { 720 log.error(ex); 721 throw new JSException(ex.getMessage()); 722 } 723 724 if (connection != null) { 725 PreparedStatement st = null; 726 ResultSet rs = null; 727 728 try { 729 730 st = connection.prepareStatement(query.getSql()); 731 732 rs = st.executeQuery(); 733 734 while (rs.next()) { 735 736 InputControlQueryDataRow ic = new InputControlQueryDataRow(); 737 738 739 Object valueColumn = rs.getObject(control.getQueryValueColumn()); 740 String [] queryVisibleColumns = control.getQueryVisibleColumns(); 741 String [] visibleColumnsValues = new String [queryVisibleColumns.length]; 742 for (int i = 0; i < visibleColumnsValues.length; i++) 743 visibleColumnsValues[i] = rs.getString(queryVisibleColumns[i]); 744 for (int i = 0; i < visibleColumnsValues.length; i++) 746 ic.getColumnValues().add( visibleColumnsValues[i] != null ? visibleColumnsValues[i] : "" ); 747 748 ic.setValue( valueColumn ); 749 list.add(ic); 750 751 } 752 } catch (Throwable ex) 753 { 754 ex.printStackTrace(); 755 throw new JSException(ex.getMessage()); 756 757 } finally 758 { 759 if (rs != null) 760 try {rs.close();} catch(Exception e){} 761 if (st != null) 762 try {st.close();} catch(Exception e){} 763 try { connection.close();} catch(Exception e){} 764 } 765 } 766 return list; 767 } 768 769 770 } 771 | Popular Tags |