/* * @(#)GELoadDataMapper.java * * Copyright (C) 2006-2008 www.interpss.org * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE * as published by the Free Software Foundation; either version 2.1 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * @Author Mike Zhou * @Version 1.0 * @Date 06/01/2008 * * Revision History * ================ * */ package org.ieee.odm.adapter.ge.mapper; import org.ieee.odm.adapter.ge.GePslfAdapter; import org.ieee.odm.adapter.ge.parser.GELoadDataParser; import org.ieee.odm.common.ODMException; import org.ieee.odm.model.IODMModelParser; import org.ieee.odm.model.aclf.AclfModelParser; import org.ieee.odm.model.aclf.AclfParserHelper; import org.ieee.odm.model.base.BaseDataSetter; import org.ieee.odm.schema.ApparentPowerUnitType; import org.ieee.odm.schema.LoadflowBusXmlType; import org.ieee.odm.schema.LoadflowLoadDataXmlType; public class GELoadDataMapper extends BaseGEDataMapper { public GELoadDataMapper(GePslfAdapter.Version ver) { super(ver); this.dataParser = new GELoadDataParser(); } public void mapLineStr(String lineStr, final AclfModelParser parser) throws ODMException { dataParser.parseFields(lineStr); final String busId = IODMModelParser.BusIdPreFix+dataParser.getString("bus"); // get the responding-bus data with busId LoadflowBusXmlType busRec = parser.getBus(busId); if (busRec==null) throw new ODMException("Error: Bus not found in the network, bus number: " + busId); // ODM allows one equiv load has many contribute loads, but here, we assume there is only one contribute load. LoadflowLoadDataXmlType contribLoad = AclfParserHelper.createContriLoad(busRec); contribLoad.setId(dataParser.getString("id")); String longId = dataParser.getString("long_id"); if (longId != null && !longId.equals("")) contribLoad.setDesc(longId); contribLoad.setAreaNumber(dataParser.getInt("ar")); contribLoad.setZoneNumber(dataParser.getInt("z")); // <st> gen status 1 = in service; 0 = out of service contribLoad.setOffLine(dataParser.getInt("st") != 1); // <stn> Normal gen status 1=in service; 0=out of service contribLoad.setNormalOffLineStatus(dataParser.getInt("stn") != 1); double p = dataParser.getDouble("p"); double q = dataParser.getDouble("q"); if (p != 0.0 || q != 0.0) contribLoad.setConstPLoad(BaseDataSetter.createPowerValue(p, q, ApparentPowerUnitType.MVA)); double ip = dataParser.getDouble("ip"); double iq = dataParser.getDouble("iq"); if (ip != 0.0 || iq != 0.0) contribLoad.setConstILoad(BaseDataSetter.createPowerValue(ip, iq, ApparentPowerUnitType.MVA)); double g = dataParser.getDouble("g"); double b = dataParser.getDouble("b"); if (g != 0.0 || b != 0.0) contribLoad.setConstZLoad(BaseDataSetter.createPowerValue(g, b, ApparentPowerUnitType.MVA)); } }