com.photon.phresco.service.tools.AdminConfigGenerator.java Source code

Java tutorial

Introduction

Here is the source code for com.photon.phresco.service.tools.AdminConfigGenerator.java

Source

/*
 * ###
 * Phresco Service Tools
 * 
 * Copyright (C) 1999 - 2012 Photon Infotech Inc.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * ###
 */
package com.photon.phresco.service.tools;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;

import com.google.gson.Gson;
import com.photon.phresco.exception.PhrescoException;
import com.photon.phresco.model.AdminConfigInfo;
import com.photon.phresco.service.api.PhrescoServerFactory;
import com.photon.phresco.service.api.RepositoryManager;
import com.photon.phresco.service.data.api.PhrescoDataManager;
import com.photon.phresco.service.model.ArtifactInfo;

public class AdminConfigGenerator {

    private static final String ADMIN_CONFIG_JSON_FILE = "adminconfig.json";
    private static final String ADMIN_CONFIG_EXCEL_FILE = "AdminConfig.xls";

    private static final int NO_OF_ROWS_TO_SKIP = 1;
    private static final String PROPERTY = "Property";
    private RepositoryManager repManager;
    private HSSFWorkbook workBook;
    private File outFile;
    private PhrescoDataManager dataManager = null;

    public AdminConfigGenerator(File inputDir, File outDir) throws PhrescoException {
        this.workBook = getWorkBook(new File(inputDir, ADMIN_CONFIG_EXCEL_FILE));
        this.outFile = new File(outDir, ADMIN_CONFIG_JSON_FILE);
        PhrescoServerFactory.initialize();
        this.repManager = PhrescoServerFactory.getRepositoryManager();
        this.dataManager = PhrescoServerFactory.getPhrescoDataManager();
    }

    private HSSFWorkbook getWorkBook(File inputFile) throws PhrescoException {
        FileInputStream fs = null;
        try {
            fs = new FileInputStream(inputFile);
            return new HSSFWorkbook(fs);
        } catch (IOException e) {
            throw new PhrescoException(e);
        } finally {
            if (fs != null) {
                try {
                    fs.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    public void publish(boolean overwrite) throws PhrescoException {
        List<AdminConfigInfo> adminConfigInfos = new ArrayList<AdminConfigInfo>();
        HSSFSheet sheet = workBook.getSheet(PROPERTY);
        Iterator<Row> rowIterator = sheet.rowIterator();
        for (int i = 0; i < NO_OF_ROWS_TO_SKIP; i++) {
            rowIterator.next();
        }

        AdminConfigInfo adminConfigInfo = new AdminConfigInfo();
        while (rowIterator.hasNext()) {
            Row row = rowIterator.next();
            adminConfigInfo = createAdminConfig(row);
            System.out.println("admin config info-->" + adminConfigInfo.getId() + "---" + adminConfigInfo.getKey()
                    + "---" + adminConfigInfo.getValue() + "--" + adminConfigInfo.getDescription());
            adminConfigInfos.add(adminConfigInfo);
            //dataManager.addAdminConfigInfo(adminConfigInfos);
        }
        dataManager.addAdminConfigInfo(adminConfigInfos);
        //System.out.println ("admin config info-->"+adminConfigInfo.getKey()+"---"+adminConfigInfo.getValue());
        //adminConfigInfos.add(adminConfigInfo);
        //Data Persistence
        //dataManager.addAdminConfigInfo(adminConfigInfos);
        //dataManager.addAdminConfigInfo(adminConfigInfo);
        //addAdminConfigInfo
        writesJson(adminConfigInfos, outFile);
        //uploadToRepository(configInfos, overwrite);
    }

    private void uploadToRepository(List<AdminConfigInfo> infos, boolean append) throws PhrescoException {
        if (append) {
            for (AdminConfigInfo adminConfigInfo : infos) {
                repManager.addAdminConfig(adminConfigInfo);
            }
        } else {
            ArtifactInfo info = new ArtifactInfo("config.auto", "admin", "", "json", "1.0");
            repManager.addArtifact(info, outFile);
        }
    }

    private void writesJson(List<AdminConfigInfo> adminConfigInfo, File file) throws PhrescoException {
        try {
            Gson gson = new Gson();
            String value = gson.toJson(adminConfigInfo);
            BufferedWriter writer = new BufferedWriter(new FileWriter(file));
            writer.write(value);
            writer.close();
        } catch (Exception e) {
            throw new PhrescoException(e);
        }
    }

    private AdminConfigInfo createAdminConfig(Row row) {
        AdminConfigInfo configInfo = new AdminConfigInfo();
        //Cell ids = row.getCell(1);
        //String id = getValue(ids);

        Cell ids = row.getCell(0);
        String id = getValue(ids);
        Cell keys = row.getCell(1);
        String key = getValue(keys);
        Cell values = row.getCell(2);
        String value = getValue(values);
        Cell descriptions = row.getCell(3);
        String description = getValue(descriptions);
        configInfo.setId(id);
        configInfo.setKey(key);
        configInfo.setValue(value);
        configInfo.setDescription(description);
        return configInfo;
    }

    private String getValue(Cell cell) {
        if (Cell.CELL_TYPE_STRING == cell.getCellType()) {
            System.out.println("hello-->" + cell.getStringCellValue());
            return cell.getStringCellValue();
        }

        if (Cell.CELL_TYPE_NUMERIC == cell.getCellType()) {
            System.out.println("hello2");
            return String.valueOf(cell.getNumericCellValue());
        }
        return null;
    }

    public static void main(String[] args) throws PhrescoException, IOException {
        File inputFile = new File(
                "D:\\work\\projects\\phresco\\source\\trunk\\service\\trunk\\phresco-service-runner\\delivery\\tools\\files");
        //"D:\\work\\projects\\phresco\\service\\trunk\\"+ "phresco-service-runner\\delivery\\tools\\files\\AdminConfig.xls");
        File outFile = new File(
                "D:\\work\\projects\\phresco\\source\\trunk\\service\\trunk\\phresco-service-runner\\delivery\\tools\\files");
        //"D:\\work\\projects\\phresco\\service\\trunk\\"   + "phresco-service-runner\\delivery\\tools\\files\\adminconfig.json");
        AdminConfigGenerator configGenerator = new AdminConfigGenerator(inputFile, outFile);
        boolean overwrite = false;
        configGenerator.publish(overwrite);
    }

}