Archive for the 'java' Category

25
มี.ค.
10

ใช้ Jasper Reports ออกรายงานเป็นไฟล์ PDF ผ่าน Railo Coldfusion

ความก่อนเขียน java ตรงๆคราวนี้จะใช้ coldfusion ให้เรียกคลาส java เพื่อเรียกใช้ jasper reports ให้สร้างรายงานเป็น pdf

โดยใช้ Railo ซึ่งเป็น opensource coldfusion application server และ ใช้ javaloader ซึ่งเป็น library ที่ช่วยใช้ coldfusion โหลดคลาสจาวา โดยไม่ต้องเอา jar ไฟล์ไปไว้ใน coldfusion classpath และไม่จำเป็นต้อง restart server ใหม่

ตัวอย่างโค้ด

                <cfscript>
                        // กำหนด path ของ jar ไฟล์ที่จะโหลด
                        paths = arrayNew(1);
                        paths[1] = expandPath("/jassperreports-lib/commons-digester-1.7.jar");
                        paths[2] = expandPath("/jassperreports-lib/jasperreports-3.7.1.jar");
                        paths[3] = expandPath("/jassperreports-lib/groovy-all.jar");
      
                        //create the loader
                        loader = createObject("component", "javaloader.JavaLoader").init(paths);


                        // getConnection ที่จำเป็นต้องใช้ผ่าน coldfusion datasource
                        datasourceService = createObject("java","coldfusion.server.ServiceFactory").getDataSourceService();
                        connection = datasourceService.getDatasource("qualinet").getConnection();

                        // hashMap ไว้เก็บค่า Property ต่างๆ ที่จะส่งไป fill ให้ jasper report
                        hashMap = createObject("java","java.util.HashMap").init();
                        hashMap.put("QUOTATION_ID",toString(url.qid));
                        // โหลดคลาส แต่ยังไม่ได้ทำการสร้าง instance
                        JasperFillManager = loader.create("net.sf.jasperreports.engine.JasperFillManager");
                        JasperExportManager = loader.create("net.sf.jasperreports.engine.JasperExportManager");
                        // โหลดแล้วสร้าง instance เลย
                        jrEmptyDataSource = loader.create("net.sf.jasperreports.engine.JREmptyDataSource").init();
                        
                        // ทำการ fill report โดยส่ง path ของ file jasper , hashMap และ connection 
                        jasperPrint = JasperFillManager.fillReport("/home/iporsut/railo/webapps/ROOT/example-0.6/quotation.jasper",hashMap,connection);

                        // export report ไปเป็นไฟล์ pdf
                        JasperExportManager.exportReportToPdfFile(jasperPrint,"/home/iporsut/railo/webapps/ROOT/quotation.pdf");
                </cfscript>
Advertisements
20
ม.ค.
10

ใช้ Jasper Reports ออกรายงานเป็นไฟล์ PDF

มีงานต้องออก report โดยใช้ Jasper Reports เป็นตัวช่วย เวลาออกแบบก็ไปใช้ iReport แล้วเราจะได้ไฟล์ .jrxml เสร็จแล้ว จะเอามาเขียนโค้ดเพื่อโหลดไฟล์ และส่ง connection ของ database ให้ jasper Reports ทำการ export รายงานออกมาเป็น pdf
โค้ด java ที่ลอง

import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.engine.export.*;
import java.util.*;
import java.sql.*;
public class TestJasper {
	public static void main(String[] args) {
		JasperReport jasperReport;
		JasperPrint jasperPrint;
		JasperDesign jasperDesign;
		Connection conn = null;
		
		Map parameters = new HashMap();
		try {
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection("jdbc:mysql://localhost/database?useUnicode=true&characterEncoding=UTF-8&user=root&password=password");
                        // โหลดไฟล์ jrxml
			jasperDesign = JRXmlLoader.load("/home/iporsut/Sourcecode/report3.jrxml");
                        // คอมไพล์ report จะได้ไฟล์ report3.jasper
			jasperReport = JasperCompileManager.compileReport(jasperDesign);
                        // ส่ง parameters กับ connection ของ database ให้ jasper ทำการ fill report
			jasperPrint = JasperFillManager.fillReport(jasperReport,parameters,conn);
                        // export report ออกไปเป็นไฟล์ demo.pdf
			JasperExportManager.exportReportToPdfFile(jasperPrint,"/home/iporsut/demo.pdf");
		}catch (JRException e) {
			e.printStackTrace();
		}
		catch (ClassNotFoundException ex) {System.err.println(ex.getMessage());}
	    	catch (SQLException ex) {System.err.println(ex.getMessage());}
	    	
		finally
		{
			if (conn != null)
			{
				try {conn.close();} 
				catch (Exception ignored) {}
			}
		}
	}
}
28
พ.ย.
07

แทนที่ substring แบบต่างๆด้วย string ที่ต้องการ

จริงๆแล้วมันก็เหมือนกับโจทย์ที่ผมเคยไปถามไว้ใน
http://www.codenone.com/node/579 แต่ว่าที่มีคนมาตอบๆกันจะเป็นภาษาscript ซะส่วนใหญ่ ไม่ว่าจะเป็น php,python,ruby, หรือจะแปลกๆหน่อยก็แบบ FN อย่าง Haskell

ทีนี้วันนี้เพื่อนผมเค้าก็ต้องการทำแบบนี้เช่นกันแต่เป็นจาวา ความต้องการก็คือ ต้องการจะแทนที่ช่องว่างต่างๆใน string ให้เหลือแค่ ช่องว่างช่องเดียว อย่างเช่น มี

"abc edf xyz" ต้องการทำให้เป็น "abc edf xyz"

และก็ถ้ามีเกินมาทางด้านซ้ายด้านขวาก็ให้ trim ออกด้วย ผมก็เลยไปค้นใน doc ของ class String ก็เจอ method replaceALL ซึ่งมี รูปแบบดังนี้

String replaceAll(String regex, String replacement)

มันจะรับค่าสองค่า คือ string ที่เป็น regex และ string ที่จะนำไปแทนที่ substring ที่ match กับ regex นั้น ซึ่งจะทำให้ได้ผลลัพธ์ตามที่บอกไปเมื่อกี้ก็คือ

String a="abc edf xyz";
System.out.println(a.replaceAll("[\\s]+"," "));

ป.ล. หวังว่าเพื่อนบาสคงจะได้เอาไปใช้กับงานที่ทำอยู่นะ