Package cli_fmw.delegate.directory

Source Code of cli_fmw.delegate.directory.UpdaterDirectory

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package cli_fmw.delegate.directory;

import cli_fmw.main.ClipsException;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Date;
import org.xBaseJ.micro.DBF;
import org.xBaseJ.micro.fields.Field;
import org.xBaseJ.micro.xBaseJException;

/**
*
* @author vip
*/
abstract public class UpdaterDirectory {

    protected PrintStream out;
   
    abstract public String getFilename();

    abstract public String getTitle();

    public void update() throws ClipsException {
        out = null;
        String homeDir = System.getProperty("user.home");
        String name = getClass().getSimpleName();
        File dir = new File(homeDir);
        File f = new File(dir, name + ".log");
        try {
            out = new PrintStream(f);
            out.println("Обновление : " + getTitle());
            out.println("Локальное время : " + new Date());
            updateImpl();
            out.println("Обновление завершено");
            out.println("Локальное время : " + new Date());
            out.flush();
            out.close();
        } catch (FileNotFoundException ex) {
            throw new ClipsException("Не удалось создать файл " + f.getAbsolutePath(), ex);
        } finally {
            out.close();
        }
    }

    abstract protected void updateImpl() throws ClipsException;

    protected DBF createDBF(File f) throws ClipsException {
        String filename = f.getName();
        try {
            DBF dbf = new DBF(f.getAbsolutePath(), "cp866");
            System.out.println("DBASEPARSER: parse file '" + filename + "'");
            return dbf;
        } catch (xBaseJException ex) {
            throw new ClipsException("Ошибка при чтении данных из файла " + filename, ex);
        } catch (IOException ex) {
            throw new ClipsException("Не найден файл " + filename, ex);
        }
    }

    protected void closeDBF(DBF dbf) {
        try {
            dbf.close();
        } catch (IOException ex) {
            //DO NOTHING
        }
    }

    /**
     * Вытаскивает поля из таблицы
     * @param dbf файл с таблицей
     * @return
     * @throws java.lang.ArrayIndexOutOfBoundsException
     * @throws org.xBaseJ.micro.xBaseJException
     */
    protected Field[] getFields(DBF dbf) throws ClipsException {
        try {
            int fieldCount = dbf.getFieldCount();
            System.out.println("DBASEPARSER: item count: " + dbf.getRecordCount());
            Field[] fields = new Field[fieldCount];
            for (int i = 1; i <= fieldCount; i++) {
                fields[i - 1] = dbf.getField(i);
                String fieldName = fields[i - 1].getName();
                System.out.print(fieldName + "       ");
            }
            System.out.println();
            return fields;
        } catch (ArrayIndexOutOfBoundsException ex) {
            throw new ClipsException("Неверно определено количество полей в файле" + dbf.getName(), ex);
        } catch (xBaseJException ex) {
            throw new ClipsException("Ошибка при чтении данных из файла " + dbf.getName(), ex);
        }
    }


}
TOP

Related Classes of cli_fmw.delegate.directory.UpdaterDirectory

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.