Package clips.directory.editors.update.updaters

Source Code of clips.directory.editors.update.updaters.UpdaterDirectoryAddressObjectType

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

package clips.directory.editors.update.updaters;

import cli_fmw.delegate.directory.UpdaterDirectory;
import cli_fmw.delegate.directory.complex.DirectoryKladrTypeItem;
import cli_fmw.delegate.directory.complex.DirectoryLocator;
import cli_fmw.main.ClipsException;
import cli_fmw.utils.SelectorEditableExceptional;
import clips.main.ClipsConfig;
import cli_fmw.delegate.directory.complex.DirectoryKladrType;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import org.xBaseJ.micro.DBF;
import org.xBaseJ.micro.fields.Field;
import org.xBaseJ.micro.xBaseJException;

/**
*
* @author vip
*/
public class UpdaterDirectoryAddressObjectType extends UpdaterDirectory{
    DirectoryKladrType dir;

    @Override
    public String getFilename() {
        return "S_TITEM.DBF";
    }

    @Override
    public String getTitle() {
        return "Коды типов объектов адреса";
    }

    @Override
    public void updateImpl() throws ClipsException {
        dir = DirectoryLocator.getDirectory(DirectoryKladrType.class);
        ClipsConfig cfg = ClipsConfig.getInstance();
        File file = new File(cfg.getLastDBFImportPath(),getFilename());
        DBF dbf = createDBF(file);
        HashMap<String, Field> fields = new HashMap<String, Field>();
        try {
            fields.put("ID", dbf.getField("ID"));
            fields.put("CUTNAME", dbf.getField("CUTNAME"));
        } catch (xBaseJException ex) {
            throw new ClipsException("Ошибка при чтении данных из файла " + dbf.getName(), ex);
        }

        int recordCount = dbf.getRecordCount();
        for (int c = 0; c < recordCount; c++) {
            try {
                dbf.read();
                String extKey = fields.get("ID").get().trim();
                String cutName = fields.get("CUTNAME").get().trim();
                ArrayList<DirectoryKladrTypeItem> items = getItemsByShortTitle(cutName);
                if (items.size() != 0) {
                    for (DirectoryKladrTypeItem item : items) {
                        item.setExtKey(extKey);
                    }
                }

            } catch (IOException ex) {
                closeDBF(dbf);
                throw new ClipsException("Ошибка при чтении данных из файла " + dbf.getName() + " строка + " + c, ex);
            } catch (xBaseJException ex) {
                closeDBF(dbf);
                throw new ClipsException("Ошибка при чтении данных из файла " + dbf.getName() + " строка + " + c, ex);
            }
        }
        closeDBF(dbf);

    }


  private ArrayList<DirectoryKladrTypeItem> getItemsByShortTitle(String shortTitle) throws ClipsException {
        SelectorEditableExceptional<DirectoryKladrTypeItem> selector = dir.getItems();
        ArrayList<DirectoryKladrTypeItem> target = new ArrayList<DirectoryKladrTypeItem>();
    int      size = selector.size();
    for (int i = 0; i < size; i++){
      DirectoryKladrTypeItem item = selector.get(i);
      if (item.getID() == 0){
        continue;
      }
            if (item.getAbbrivation() != null && item.getAbbrivation().equals(shortTitle)) {
                target.add(item);
            }
        }
        return target;
    }
}
TOP

Related Classes of clips.directory.editors.update.updaters.UpdaterDirectoryAddressObjectType

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.