Orang kaya tambah kaya, sedangkan orang miskin tetap miskin.
Beberapa minggu (mungkin bulan) yang lalu, saya mengikuti seminar yang awalnya di berikan untuk para calon agen asuransi ternama di Jakarta. Di saat seminar tersebut hadir seorang motivator ternama, yang awalnya dia (sendir juga lupa namanya) juga ingin berbicara, tapi saat itu lokasi yang termasuk jauh, akhirnya saya tidak menghadiri acara awalnya. Hadirnya beliau sangatlah "kebetulan". FYI... "there are no such thing as coincidences".
So far so good, menghadiri acara yang kita awalnya ingin hadiri, tapi ga bisa, ehhh malah dia hadir di sini. So, let's go!. Di saat ini beliau (motivator) membicarakan mengenai "Super active income" yang inti-intinya membahas:

Kita harus superrrrrr acctiiivveeee...baru dapat income.

Di sini kita rawan akan pemasukan uang kita ke dalam rumah tangga. Memang uang bukan yang sangat penting, tapi apa kita sadar uang di butuhkan untuk kita bisa hidup layak dan tentram? duhhh...everybody know that.
Salah satu solusi yang beliau (motivator) katakan, "Kenapa kita harus kerja, padahal uang bisa bekerja untuk kita loh". Nah di sini mulailah tumbuh ke-ingin tahuan saya mengenai "Money working for me..but how??"
Bikin usaha, usaha apa sih yang belum ada di Indonesia ini? Mau ikutan main saham, orang bilang (dan sendiri masih percaya sewaktu itu) adalah judi... But hold on. Jika saham main judi, kenapa tidak banyak orang atau perusahaan (besar) pada bangkrut? Ini yang bikin kita bimbang..
Tahu cari tahu (investigating), bermain saham itu bukan judi...ada ilmunya. Dari pattern recognition, company profiling, news etc...
Setelah mengikuti "saham academy", akhirnya saya sadar...kenapa orang kaya tambah kaya, dan orang miskin / biasa, tetep harus kerja mati-matian sampai kita semua merasa... kita semua merasakan"Hidup ini adalah untuk kerja, bukan untuk hidup". Siapa yang bisa menikmati pensiun kita ? apakah kita sendiri atau kita + keluarga kita? jarang loh orang yang bisa menikmati pensiunnya sendiri (ini juga kalau punya).
Ingin sekali saya membuat applikasi (JAVA) yang dimana saya sendiri memilik kekuasaan yang bisa saya buat sendiri. Karena applikasi di luaran sana (seperti contohnya ChartNexus) tidak memberikan apa yang saya butuhkan.
Setelah mencari-cari source/akar untuk mengerjakan apa yang saya inginkan, akhirnya saya menemukannya. Dan saya ingin membagi dengan kalian. Salah satunya adalah data stock (emitent) yang di mana kita bisa nantinya buat applikasi sendiri.
Untuk saat ini saya akan membagi data, silahkan gunakan agar anda bisa membuat applikasi sendiri. Data yang saya berikan ada 2 macam, yaitu CSV atau SQL. File ini memili data sebanyak 74.762 perusahaan dan data ini memiliki data dari 40 bursa saham terbesar di dunia ini.
companies.csv.zip
File Size: 1140 kb
File Type: zip
Download File

company.sql.zip
File Size: 1138 kb
File Type: zip
Download File

Jangan seperti orang di atas ini, jadilah orang seperti yang di bawah:
Don't work hard, work smart!.
 
 
Untuk beberapa dari kalian yang suka web-developing, mungkin sudah pernah dengar dengan yang namanya Portal atau Portlet. Sebetulnya sangatlah mudah untuk mengerti Portal atau Portlet.
Ok, sedikit penjelasan.
Sewaktu dulu (awal-awal internet baru "booming"). "Semua" orang membuat halaman web dengan membuat HTML page. Dan saat itu (sekitar 1995an) masih belum banyak orang yang bisa menguasai dynamic web. Saat itu baru ada yang namanya CGI. Syntax-nya pun masih belum banyak orang yang mengerti.
Di awal tahun 2000, mulai lah masuk beberapa bahasa computer yang membuat programming "lebih" mudah di mengerti, salah satunya Java. Java saat itu sudah memiliki servlet dan servlet container. Dan technology masih terus berkembang, dan communitynya pun mulai banyak.
Untuk kalian yang baru mulai belajar JAVA, tidak usah ragu atas pilihan, sekarang sudah banyak website yang beriisi dengan contoh2 code, penjelasan code, tanya jawab, dan lain-lain.
Untuk saat ini saya tidak akan menjelaskan lebih detail mengenai servlet atau portlet, kalian bisa mencarinya di google... "just one click away" aja kok  :)
Saat ini, saya ingin membagi cara instalasi Liferay (Portal atau bisa juga di bilang Portlet Container). Silahkan lihat video di bawah ini.
 
 
package com.weebly.delta76;

package com.codevergence.mail;

import java.text.SimpleDateFormat;
import java.util.Calendar;

public class Test {
    public static void main(String[] args){
        Calendar cal = Calendar.getInstance();
        String strDateFormat = "hh:mm:ss ";
         SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
         
         System.out.println("Time with AM/PM field : " + sdf.format(cal.getTime()));
    }
}

 
 
Di sini saya akan membagi untuk para (future/calon) JAVA developer yang ingin membangun java client untuk membaca email (google, yahoo, perusahaan).

Untuk code ini di butuhkan:
- mail.jar

 
 
Kadang kali kita membutuhkan perubahan di setting JVM baik itu di lokal mesin atau pun di server ( production / development ). Sering kali, saya sendiri bersalah akan kehilangan "bagaimana caranya mengatur ....". Banyak yang kita bisa kerjakan / raih dari perubahan JVM option. Yah bisa mendapatkan extra performance dengan hardware yang sama, bisa meng-debug tanpa harus mengubah code, dan lain lain.

Dokumen ini di buat hanya sekedar "cheat sheet" ( contekan ) untuk semua yang ingin menggunakannya.

Good luck :)
 
 
Jika anda sudah bermain-main dengan java portlet, maka nama Liferay sudah seharusnya tidak asing lagi bagi anda. Salah satu kekuatan Liferay adalah pengaturan dan penyimpanan files di dalam document libraries.
Kali ini saya menemukan contoh code dari Liferay di mana caranya menyimpan files ke dalam document library.
JSP code:

<label for=""><liferay-ui:message key="signature" /></label> 
<input name="<portlet:namespace />signature" id="<portlet:namespace />signature">
Portlet code:

UploadPortletRequest uploadRequest = PortalUtil.getUploadPortletRequest(actionRequest);
         String sourceFileName = uploadRequest.getFileName("signature");
         File file = uploadRequest.getFile("signature");
         if (Validator.isNotNull(sourceFileName) && !file.exists()) {
             file.createNewFile();
         }
          serviceContext = ServiceContextFactory .getInstance(DLFileEntry.class.getName(), actionRequest); 
         long fId = 0l,stampId = 0l;
            List<DLFolder> dlFolders = DLFolderLocalServiceUtil.getDLFolders(
                    0, DLFolderLocalServiceUtil.getDLFoldersCount());
for (DLFolder folder : dlFolders) {
                try {
                    if (folder.getName().equalsIgnoreCase("Signature")) {
                        fId = folder.getFolderId();
    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
if (Validator.isNotNull(sourceFileName) ) {
             DLFileEntryServiceUtil.addFileEntry(
                    fId, sourceFileName, sourceFileName, "", "", file, serviceContext);
            }
Penjelasan:
Contoh di atas akan menyimpan file di dalam document library Liferay yang di mana directory "Signature" sudah tersedia.

Code di atas ini hanya contoh, jika anda membutuhkan code yang generic / dynamic, silahkan kembangkan code di atas ini sesuai dengan kebutuhan anda (misalnya, nama "Signature" tidak lagi di hardcoded  melainkan membaca value tersebut dari portlet preference. Di portlet preference anda bisa menggunakan String atau directory ID).

Selamat mencoba.
 
 
Di java kadang - kadang kita membutuhkan fitur membaca file yang di buat di luar java. Kali ini saya ingin membahas "bekerja" dengan MS Excel dan Java
Saya membuat dokumen ini di basiskan dengan user yang sudah memiliki "working environment", karena ini, saya tidak membahas installation eclipse/netbeans atau IDE lainnya di mesin masing - masing.
Untuk fitur ini ada beberapa Third party libraries di butuhkan, yaitu:
  • dom4j-1.6.1.jar
  • xmlbeans-2.3.0.jar
  • poi-3.8-20120326.jar
  • poi-ooxml-3.8-20120326.jar
  • poi-ooxml-schemas-3.8-20120326.jar

Anda bisa meng-download libraries di atas melalui: http://poi.apache.org/download.html
Code di bawah ini akan memberi contoh pembuatan / pembacaan MS Excel file dengan java:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
 
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 
public class ReadWriteExcelFile {
 
public static void readXLSFile() throws IOException
{
InputStream ExcelFileToRead = new FileInputStream("C:/Test.xls");
HSSFWorkbook wb = new HSSFWorkbook(ExcelFileToRead);
 
HSSFSheet sheet=wb.getSheetAt(0);
HSSFRow row;
HSSFCell cell;
 
Iterator rows = sheet.rowIterator();
 
while (rows.hasNext())
{
row=(HSSFRow) rows.next();
Iterator cells = row.cellIterator();

while (cells.hasNext())
{
cell=(HSSFCell) cells.next();

if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING)
{
System.out.print(cell.getStringCellValue()+" ");
}
else if(cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC)
{
System.out.print(cell.getNumericCellValue()+" ");
}
else
{
//U Can Handel Boolean, Formula, Errors
}
}
System.out.println();
}

}

public static void writeXLSFile() throws IOException {

String excelFileName = "C:/Test.xls";//name of excel file
 
String sheetName = "Sheet1";//name of sheet
 
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet(sheetName) ;
 
//iterating r number of rows
for (int r=0;r < 5; r++ )
{
HSSFRow row = sheet.createRow(r);

//iterating c number of columns
for (int c=0;c < 5; c++ )
{
HSSFCell cell = row.createCell(c);

cell.setCellValue("Cell "+r+" "+c);
}
}

FileOutputStream fileOut = new FileOutputStream(excelFileName);

//write this workbook to an Outputstream.
wb.write(fileOut);
fileOut.flush();
fileOut.close();
}

public static void readXLSXFile() throws IOException
{
InputStream ExcelFileToRead = new FileInputStream("C:/Test.xlsx");
XSSFWorkbook wb = new XSSFWorkbook(ExcelFileToRead);

XSSFWorkbook test = new XSSFWorkbook();

XSSFSheet sheet = wb.getSheetAt(0);
XSSFRow row;
XSSFCell cell;
 
Iterator rows = sheet.rowIterator();
 
while (rows.hasNext())
{
row=(XSSFRow) rows.next();
Iterator cells = row.cellIterator();
while (cells.hasNext())
{
cell=(XSSFCell) cells.next();

if (cell.getCellType() == XSSFCell.CELL_TYPE_STRING)
{
System.out.print(cell.getStringCellValue()+" ");
}
else if(cell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC)
{
System.out.print(cell.getNumericCellValue()+" ");
}
else
{
//U Can Handel Boolean, Formula, Errors
}
}
System.out.println();
}

}

public static void writeXLSXFile() throws IOException {

String excelFileName = "C:/Test.xlsx";//name of excel file
 
String sheetName = "Sheet1";//name of sheet
 
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet(sheetName) ;
 
//iterating r number of rows
for (int r=0;r < 5; r++ )
{
XSSFRow row = sheet.createRow(r);
 
//iterating c number of columns
for (int c=0;c < 5; c++ )
{
XSSFCell cell = row.createCell(c);

cell.setCellValue("Cell "+r+" "+c);
}
}
 
FileOutputStream fileOut = new FileOutputStream(excelFileName);
 
//write this workbook to an Outputstream.
wb.write(fileOut);
fileOut.flush();
fileOut.close();
}
 
public static void main(String[] args) throws IOException {

writeXLSFile();
readXLSFile();

writeXLSXFile();
readXLSXFile();
 
}
 
}

Agar bisa membaca "Embeded" file di dalam MS Excel file, code berikutnya bisa di gunakan:
HSSF:

  POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("excel_with_embeded.xls"));
  HSSFWorkbook workbook = new HSSFWorkbook(fs);
  for (HSSFObjectData obj : workbook.getAllEmbeddedObjects()) {
      //the OLE2 Class Name of the object
      String oleName = obj.getOLE2ClassName();
      if (oleName.equals("Worksheet")) {
          DirectoryNode dn = (DirectoryNode) obj.getDirectory();
          HSSFWorkbook embeddedWorkbook = new HSSFWorkbook(dn, fs, false);
          //System.out.println(entry.getName() + ": " + embeddedWorkbook.getNumberOfSheets());
      } else if (oleName.equals("Document")) {
          DirectoryNode dn = (DirectoryNode) obj.getDirectory();
          HWPFDocument embeddedWordDocument = new HWPFDocument(dn, fs);
          //System.out.println(entry.getName() + ": " + embeddedWordDocument.getRange().text());
      }  else if (oleName.equals("Presentation")) {
          DirectoryNode dn = (DirectoryNode) obj.getDirectory();
          SlideShow embeddedPowerPointDocument = new SlideShow(new HSLFSlideShow(dn, fs));
          //System.out.println(entry.getName() + ": " + embeddedPowerPointDocument.getSlides().length);
      } else {
          if(obj.hasDirectoryEntry()){
              // The DirectoryEntry is a DocumentNode. Examine its entries to find out what it is
              DirectoryNode dn = (DirectoryNode) obj.getDirectory();
              for (Iterator entries = dn.getEntries(); entries.hasNext();) {
                  Entry entry = (Entry) entries.next();
                  //System.out.println(oleName + "." + entry.getName());
              }
          } else {
              // There is no DirectoryEntry
              // Recover the object's data from the HSSFObjectData instance.
              byte[] objectData = obj.getObjectData();
          }
      }
  }

 XSSF:

  XSSFWorkbook workbook = new XSSFWorkbook("excel_with_embeded.xlsx");
  for (PackagePart pPart : workbook.getAllEmbedds()) {
      String contentType = pPart.getContentType();
      // Excel Workbook - either binary or OpenXML
      if (contentType.equals("application/vnd.ms-excel")) {
          HSSFWorkbook embeddedWorkbook = new HSSFWorkbook(pPart.getInputStream());
      }
      // Excel Workbook - OpenXML file format
      else if (contentType.equals("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")) {
          OPCPackage docPackage = OPCPackage.open(pPart.getInputStream());
          XSSFWorkbook embeddedWorkbook = new XSSFWorkbook(docPackage);
      }
      // Word Document - binary (OLE2CDF) file format
      else if (contentType.equals("application/msword")) {
          HWPFDocument document = new HWPFDocument(pPart.getInputStream());
      }
      // Word Document - OpenXML file format
      else if (contentType.equals("application/vnd.openxmlformats-officedocument.wordprocessingml.document")) {
          OPCPackage docPackage = OPCPackage.open(pPart.getInputStream());
          XWPFDocument document = new XWPFDocument(docPackage);
      }
      // PowerPoint Document - binary file format
      else if (contentType.equals("application/vnd.ms-powerpoint")) {
          HSLFSlideShow slideShow = new HSLFSlideShow(pPart.getInputStream());
      }
      // PowerPoint Document - OpenXML file format
      else if (contentType.equals("application/vnd.openxmlformats-officedocument.presentationml.presentation")) {
          OPCPackage docPackage = OPCPackage.open(pPart.getInputStream());
          XSLFSlideShow slideShow = new XSLFSlideShow(docPackage);
      }
      // Any other type of embedded object.
      else {
          System.out.println("Unknown Embedded Document: " + contentType);
          InputStream inputStream = pPart.getInputStream();
      }
  }