วันศุกร์ที่ 27 สิงหาคม พ.ศ. 2553

แก้ไข default language ของ alfresco

หากใครทำ full text search ภาษาไทยบน alfresco เรียบร้อยแล้ว คงสังเกตุกันว่าการ login ต้องเลือกภาษาเป็นภาษาไทย แต่ว่า login language ดันมีให้เลือก 2 ภาษาหรือหลายภาษา แต่ยังไง default ก็เป็นภาษาอังกฤษอยู่ดี


คราวนี้หากเราต้องการ set ค่า default language ของหน้า login นี้จะต้องไป set ค่าที่
tomcat/shared/classes/alfresco/extension/web-client-config-custom.xml
โดยในส่วน config ของ language ให้แก้ค่าจาก
<config evaluator="string-compare" condition="Languages">
เป็น
<config evaluator="string-compare" condition="Languages" replace="true">
ซึ่งการใส่ replace="true" นั้นหมายความว่า ให้นำ config ดังกล่าว replace config default แทนครับ

ที่มา alfresco forum
Continue Reading...

วันพุธที่ 25 สิงหาคม พ.ศ. 2553

เขียนไฟล์ OpenOffice.org ด้วย Java

ก่อนที่จะเขียนไฟล์ OpenOffice.org ด้วย Java ได้ก่อนอื่นก็ต้องเข้าใจ API ของ OpenOffice.org ซะก่อนซึ่งถ้าใครเคยเขียน Macro บน OpenOffice.org มาบ้างก็คงจะพอเข้าใจ

วิธีที่นำมาบอกนี้จะเป็นวิธีที่ใช้ eclipse ในการเขียนครับ

ขั้นแรกก็ให้ download eclipse มาก่อนจากนั้นสร้าง Java Project ธรรมดาๆ มาซัก Project ตั้งชื่อตามสะดวกจากนั้นก็ add external jar เข้ามาตามนี้
  1. juh.jar
  2. jurt.jar
  3. ridl.jar
  4. unoil.jar
  5. bootstrapconnector.jar สามารถ download ได้จาก ที่นี่
ซึ่งไฟล์ดังกล่าวหาได้จากภายใน folder ที่ติดตั้ง OpenOffice.org

เมื่อ add jar เสร็จแล้วให้สร้าง Class มาซัก Class แล้วใส่ code ตามนี้เลยครับ

// connect to openoffice.org
String exePath = "C:/Program Files/OpenOffice.org 3/program/";
   
XComponentContext xContext = BootstrapSocketConnector.bootstrap(exePath);
com.sun.star.lang.XMultiComponentFactory xMFC = xContext.getServiceManager();
Object oDesktop = xMFC.createInstanceWithContext("com.sun.star.frame.Desktop", xContext);
XComponentLoader xCLoader = (com.sun.star.frame.XComponentLoader) UnoRuntime.queryInterface(com.sun.star.frame.XComponentLoader.class, oDesktop);
           
// create openoffice.org writer document
XComponent document = xCLoader.loadComponentFromURL("private:factory/swriter", "_blank", 0, new PropertyValue[0]);
XTextDocument xTextDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, document);
XText xText = xTextDocument.getText();
           
// create paragraph cursor
XParagraphCursor xParagraphCursor = (XParagraphCursor) UnoRuntime.queryInterface(XParagraphCursor.class, xText.createTextCursor());
           
// add some text
xText.insertString(xText.getEnd(), "My First OpenOffice Document", false);
           
// add style
XPropertySet xPropertySet = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xParagraphCursor);
xPropertySet.setPropertyValue("ParaStyleName", "Heading 1");
           
// add some text
xText.insertString(xText.getEnd(), "rThis is the first line in my paragraph. Some more text, just to add some text to this document. ", false);
xPropertySet.setPropertyValue("ParaStyleName", "Text body");
           
// Add another heading paragraph
xText.insertString(xText.getEnd(), "rSecond heading", false);
xPropertySet.setPropertyValue("ParaStyleName", "Heading 2");
           
// And another text body paragraph
xText.insertString(xText.getEnd(), "rThis is the second normal paragraph.", false);
xPropertySet.setPropertyValue("ParaStyleName", "Text body");
           
// save document
XStorable xStorable = (XStorable) UnoRuntime.queryInterface(XStorable.class, document);
PropertyValue[] storeProps = new PropertyValue[0];
xStorable.storeAsURL("file:///d:/first_document.odt", storeProps);

// export document to pdf
storeProps = new PropertyValue[1];
storeProps[0] = new PropertyValue();
storeProps[0].Name = "FilterName";
storeProps[0].Value = "writer_pdf_Export";
xStorable.storeToURL("file:///d:/first_document.pdf", storeProps);

// close document
XCloseable xcloseable = (XCloseable) UnoRuntime.queryInterface(XCloseable.class, document);
xcloseable.close(false);

} catch (Exception e) {
    e.printStackTrace();
} catch (BootstrapException e) {
    e.printStackTrace();
}

จริงๆ แล้ว bootstrap นั้นไม่จำเป็นต้องระบุ path ไปที่ soffice.exe ครับ แต่เนื่องจาก ผมลองใช้ bootstrap แบบธรรมดาแล้วไม่ work เลย search ดูจึงเจอ solution นี้ขึ้นมาแทนครับ

ตัวอย่างนี้สามารถเอาไป apply เป็นแบบอื่นๆ ได้อีกมากมายครับ

ที่มา www.it-eye.nl - openoffice.org forum
Continue Reading...

วันศุกร์ที่ 20 สิงหาคม พ.ศ. 2553

Install openerp on ubuntu 10.04 server

หลังจากลองหา solution ในการติดตั้ง openerp มาพักใหญ่ซึ่ง document บน ubuntu นั้นไม่ค่อยจะสมบูรณ์เท่าไร ทำให้อยาก blog solution สำหรับ ubuntu

ขั้นตอนแรกเลย เมื่อติดตั้ง ubuntu 10.04 เรียบร้อยแล้ว ให้ upgrade update ซะก่อน
sudo apt-get upgrade
sudo apt-get update

  1. ติดตั้ง postgresql ก่อนโดยใช้คำสั่ง
  2. sudo apt-get install postgresql
  3. แก้ไฟล์ pg_hba.conf ที่ /etc/postgresql/8.4/main/pg_hba.conf
  4. # "local" is for Unix domain socket connections only
    local   all         all                               ident
    ให้เป็น
    # "local" is for Unix domain socket connections only
    local   all         all                               md5
  5. สร้าง database-user "openuser"
  6. tantai$ sudo su - postgres
    password: password_of_johndoe
    postgres$ createuser --createdb --username postgres --no-createrole --pwprompt openuser
    Enter password for new role: your_password_of_openuser
    Enter it again: your_password_of_openuser
    Shall the new role be a superuser? (y/n) n
    postgres$
    จากนั้นให้ exit ออกจาก postgres
    postgres$ exit
    logout
    johndoe$
    
  7. restart postgres ซะ
  8. sudo /etc/init.d/postgresql-8.4 restart
  9. ติดตั้ง package ที่จำเป็นก่อนลอง openerp
  10. sudo apt-get install python python-psycopg2 python-reportlab python-egenix-mxdatetime python-tz python-pychart python-pydot python-lxml python-vobject
    
  11. download openerp-server มาจาก http://openerp.com/downloads.html แล้วแตกไฟล์
  12. tar -zxvf openerp-server-5.0.12.tar.gz
    cd openerp-server-5.0.12
    
    โดยสามารถ test ก่อน install ได้จาก
    cd bin
    python openerp-server.py
    
    ถ้าถูกต้องจะขึ้นคำว่า [date/time] INFO:web-services:the server is running, waiting for connections...
  13. จากนั้นให้ให้ออกมากที่ root ของ openerp-server ที่ download มาแล้วติดตั้ง
  14. sudo python setup.py install
    
  15. จากนั้นให้ลอง start server ดูด้วยคำสั่ง
  16. openerp-server --db_user=openuser --db_password=your_password_of_openuser
    
    โดย password คือ password ที่เราตั้งตอนที่เรา create user ใน postgres ครับ
  17. จากนั้นถ้าหากไม่ต้องการพิมพ์ username และ password ตอนสั่ง run ใน terminal ก็ให้เก็บ username และ password ลงไปใน file config ที่ /etc/openerp-server.conf
  18. sudo vim /etc/openerp-server.conf
    
    โดยใส่ค่า
    [options] 
    db_name =
    db_user = openuser
    db_password = your_password_of_openuser
    
  19. จากนั้นถ้าต้องการ run server ให้ใช้คำสั่งนี้แทน
  20. openerp-server --config=/etc/openerp-server.conf
    
โดยเมื่อติดตั้ง openerp-server เสร็จเรียบร้อย จะสามารถ access เข้าไปใน server ได้ผ่าน openerp-client ครับโดยสามารถหา download ได้จาก http://openerp.com/downloads.html แต่เนื่องจากสิ่งที่ผมต้องการนั้นเป็นการ access ผ่าน web browser จึงจำเป็นต้องลง openerp-web อีก

ปกติแล้วใน openerp-web จะมีขั้นตอนการติดตั้งบอกอยู่ใน doc/README.txt ครับแต่ว่าผมขอนำมาทำเป็นขั้นๆ ดังนี้

  1. download openerp-web มาจาก http://openerp.com/downloads.html แล้วแตกไฟล์
  2. tar -zxvf openerp-web-5.0.12.tar.gz
    
  3. ติดตั้ง package ที่จำเป็น เนื่องจากผมลองทำในขั้นตอนตาม README.txt แล้วไม่ work จึงต้องติดตั้งด้วยมือ
  4. apt-get install python-cherrypy3 python-pybabel python-mako python-simplejson python-formencode python-pyparsing python-tz python-xlwt
    
  5. ติดตั้ง setuptools สำหรับติดตั้งตัว web
  6. sudo apt-get install python python-dev build-essential
    sudo apt-get install python-setuptools
    
  7. จากนั้นออกมาที่ root ของ openerp-web ที่ download มาแล้วรันคำสั่ง
  8. sudo easy_install -U openerp-web
    
  9. จากนั้นรัน openerp-web ด้วยคำสั่ง
  10. openerp-web
    
เมื่อรัน server ทั้ง 2 ตัวเสร็จก็จะสามารถเข้าใช้งาน openerp ได้ทาง port 8080 ครับ http://ipaddress:8080/
Continue Reading...

วันเสาร์ที่ 7 สิงหาคม พ.ศ. 2553

แปลงไฟล์ผ่าน command line ด้วย JODConverter (Command line version)

เนื่องจากลูกค้าต้องการจะแปลงไฟล์ที่ export ออกมาจาก SAP (csv) ให้เป็น ods โดยอัตโนมัติเขาจึงอยากให้หา solution ให้หน่อยว่าต้องทำอย่างไร ตอนแรกคิดว่าจะเขียน OpenOffice.org macro convert ไฟล์เอาแต่ดูท่าทางจะวุ่นวายไป ก็เลยลองหา search ดูว่าน่าจะมีคนเคยทำมาแล้ว และก็ไปเจอ JODConverter ซึ่งทำหน้าที่นี้โดยตรง

JODConverter โดยปกติแล้วสามารถ run ได้โดยเป็น java lib, command line tools, หรือเป็น web app ก็ได้ แต่ที่ผมใช้จะเป็น command line tools

ก่อนอื่นเราจำเป็นต้องรัน OpenOffice.org ให้เป็น service พร้อมทั้งเปิด port 8100 ให้ด้วย สามารถทำได้โดยพิมพ์คำสั่ง

soffice.exe -headless -nologo -norestore -accept=socket,host=localhost,port=8100;urp;StarOffice.ServiceManager

จากนั้นให้ไปที่ใช้คำสั่ง

java -jar path/to/jodconverter/lib/jodconverter-cli-2.2.2.jar filename.csv output.ods

เมื่อรันคำสั่งเสร็จจะได้ผลลัพธ์เป็นไฟล์ ods เป็นที่เรียบร้อย

thanks for oooninja
Continue Reading...

Blogroll

About