org.eclipse.lyo.samples.excel.adapter.MapperTable.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.lyo.samples.excel.adapter.MapperTable.java

Source

/*******************************************************************************
 * Copyright (c) 2011,2013 IBM Corporation.
 *
 *  All rights reserved. This program and the accompanying materials
 *  are made available under the terms of the Eclipse Public License v1.0
 *  and Eclipse Distribution License v. 1.0 which accompanies this distribution.
 *  
 *  The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
 *  and the Eclipse Distribution License is available at
 *  http://www.eclipse.org/org/documents/edl-v10.php.
 *  
 *  Contributors:
 *  
 *     Masaki Wakao 
 *     Yoshio Horiuchi 
 *******************************************************************************/
package org.eclipse.lyo.samples.excel.adapter;

import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

public class MapperTable {

    Map<String, MapperEntry> entryMap = new HashMap<String, MapperEntry>();
    List<String> nameList = new ArrayList<String>();

    public void initialize(String fileName) {
        FileInputStream in = null;
        Workbook wb = null;

        try {
            in = new FileInputStream(fileName);
            wb = WorkbookFactory.create(in);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                in.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        String lastName = null;
        Sheet sheet = wb.getSheetAt(0); //wb.getFirstVisibleTab() + 1);
        int start = 2; // skip row 0 and 1
        for (int j = start; j <= sheet.getLastRowNum(); j++) {
            Row row = sheet.getRow(j);
            if (row == null) {
                continue;
            }

            /* 0,    1,    2,    3   */
            /* name, type, line, uri */
            String name = getCellValue(row, 0);
            if (name != null) {
                MapperEntry entry = new MapperEntry(name);
                entry.setType(getCellValue(row, 1)); /* type */
                entry.setLine(getCellValue(row, 2)); /* line */
                entry.setUri(getCellValue(row, 3)); /* uri */
                entryMap.put(name, entry);
                nameList.add(name);
                lastName = name;
                System.out.println("entry " + j + " : name=" + entry.getName() + ", type=" + entry.getType()
                        + ", line=" + entry.getLine() + ", uri=" + entry.getUri());
                continue;
            }

            if (lastName != null) {
                /* 4,         5,         6,        7        */
                /* prop:name, prop:type, prop:col, prop:ref */
                String propName = getCellValue(row, 4);
                if (propName != null) {
                    MapperEntry entry = entryMap.get(lastName);
                    MapperEntry.Property prop = entry.addProperty(propName);
                    prop.setType(getCellValue(row, 5)); /* prop:type */
                    prop.setColumn(getCellValue(row, 6)); /* prop:col */
                    prop.setReference(getCellValue(row, 7)); /* prop:ref */
                    System.out.println("property : name=" + prop.getName() + ", type=" + prop.getType()
                            + ", column=" + prop.getColumn() + ", reference=" + prop.getReference());
                }
            }
        }
    }

    public List<String> getNameList() {
        return nameList;
    }

    public MapperEntry getEntry(String name) {
        return entryMap.get(name);
    }

    private String getCellValue(Row row, int index) {
        if (row != null) {
            return getCellValue(row.getCell(index));
        }
        return null;
    }

    private String getCellValue(Cell cell) {
        String value = null;
        if (cell != null) {
            int type = cell.getCellType();
            if (type == Cell.CELL_TYPE_STRING) {
                value = cell.getStringCellValue();
            } else if (type == Cell.CELL_TYPE_NUMERIC) {
                double d = cell.getNumericCellValue();
                if (d == Math.floor(d)) { // need to consider when d is negative
                    value = "" + (int) d;
                } else {
                    value = "" + cell.getNumericCellValue();
                }
            }
        }
        return value;
    }
}