/*
* @(#)PSSEXfrZTableDataMapper.java
*
* Copyright (C) 2006 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 09/15/2006
*
* Revision History
* ================
*
*/
package org.ieee.odm.adapter.psse.mapper.aclf;
import static org.ieee.odm.ODMObjectFactory.OdmObjFactory;
import org.ieee.odm.adapter.psse.PSSEAdapter.PsseVersion;
import org.ieee.odm.adapter.psse.parser.aclf.PSSEXfrZTableDataParser;
import org.ieee.odm.common.ODMException;
import org.ieee.odm.model.aclf.BaseAclfModelParser;
import org.ieee.odm.schema.BranchBusSideEnumType;
import org.ieee.odm.schema.LoadflowNetXmlType;
import org.ieee.odm.schema.NetworkXmlType;
import org.ieee.odm.schema.XformerZTableXmlType;
public class PSSEXfrZTableDataMapper extends BasePSSEDataMapper{
public PSSEXfrZTableDataMapper(PsseVersion ver) {
super(ver);
this.dataParser = new PSSEXfrZTableDataParser(ver);
}
public void procLineString(String lineStr, BaseAclfModelParser<? extends NetworkXmlType> parser) throws ODMException {
dataParser.parseFields(lineStr);
LoadflowNetXmlType baseCaseNet = (LoadflowNetXmlType) parser.getNet();
if (baseCaseNet.getXfrZTable() == null) {
baseCaseNet.setXfrZTable(OdmObjFactory.createXformerZTableXmlType());
baseCaseNet.getXfrZTable().setAdjustSide(BranchBusSideEnumType.FROM_SIDE);
}
XformerZTableXmlType.XformerZTableItem item = OdmObjFactory.createXformerZTableXmlTypeXformerZTableItem();
baseCaseNet.getXfrZTable().getXformerZTableItem().add(item);
/*
* format V30: I, T1, F1, T2, F2, T3, F3, ... T11, F11
*/
int i = this.dataParser.getInt("I");
item.setNumber(i);
for (int n = 1; n < 12; n++) {
if (this.dataParser.exist("T"+n) && this.dataParser.exist("F"+n)) {
XformerZTableXmlType.XformerZTableItem.Lookup lookup = OdmObjFactory.createXformerZTableXmlTypeXformerZTableItemLookup();
item.getLookup().add(lookup);
lookup.setTurnRatioShiftAngle(this.dataParser.getDouble("T"+n));
lookup.setScaleFactor(this.dataParser.getDouble("F"+n));
}
}
}
}