/*
* @(#)BaseDstabModelParser.java
*
* Copyright (C) 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 08/11/2010
*
* Revision History
* ================
*
*/
package org.ieee.odm.model.dstab;
import static org.ieee.odm.ODMObjectFactory.OdmObjFactory;
import org.ieee.odm.common.ODMException;
import org.ieee.odm.model.acsc.BaseAcscModelParser;
import org.ieee.odm.model.base.BaseJaxbHelper;
import org.ieee.odm.schema.BaseBranchXmlType;
import org.ieee.odm.schema.BusXmlType;
import org.ieee.odm.schema.DStabBusXmlType;
import org.ieee.odm.schema.DStabNetXmlType;
import org.ieee.odm.schema.LineBranchXmlType;
import org.ieee.odm.schema.LineDStabXmlType;
import org.ieee.odm.schema.NetworkXmlType;
import org.ieee.odm.schema.PSXfr3WDStabXmlType;
import org.ieee.odm.schema.PSXfrBranchXmlType;
import org.ieee.odm.schema.PSXfrDStabXmlType;
import org.ieee.odm.schema.Xfr3WDStabXmlType;
import org.ieee.odm.schema.XfrBranchXmlType;
import org.ieee.odm.schema.XfrDStabXmlType;
public class BaseDstabModelParser <TNetXml extends NetworkXmlType> extends BaseAcscModelParser<TNetXml> {
/**
* default constructor
*/
public BaseDstabModelParser() {
super();
}
/**
* constructor
*
* @param encoding
*/
public BaseDstabModelParser(String encoding) {
super(encoding);
}
/**
* get the base case object of type ShortCircuitNetXmlType
*
* @return
*/
public DStabNetXmlType getDStabNet() {
return (DStabNetXmlType)getBaseCase();
}
/**
* create the base case object of type ShortCircuitNetXmlType
*/
@SuppressWarnings("unchecked")
@Override protected TNetXml createBaseCase() {
if (getStudyCase().getBaseCase() == null) {
DStabNetXmlType baseCase = OdmObjFactory.createDStabNetXmlType();
baseCase.setBusList(OdmObjFactory.createNetworkXmlTypeBusList());
baseCase.setBranchList(OdmObjFactory.createNetworkXmlTypeBranchList());
getStudyCase().setBaseCase(BaseJaxbHelper.network(baseCase));
}
return (TNetXml)getStudyCase().getBaseCase().getValue();
}
/*
* Bus functions
* =============
*/
/**
* Get the cashed bus object by id
*
* @param id
* @return
*/
public DStabBusXmlType getDstabBus(String id) {
return (DStabBusXmlType)this.getBus(id);
}
/**
* add a new Bus record to the base case
*
* @return
*/
@SuppressWarnings("unchecked")
protected <T extends BusXmlType> T createBus() {
DStabBusXmlType busRec = OdmObjFactory.createDStabBusXmlType();
initDStabBus(busRec);
getBaseCase().getBusList().getBus().add(BaseJaxbHelper.bus(busRec));
return (T)busRec;
}
protected void initDStabBus(DStabBusXmlType busRec) {
initAcscBus(busRec);
//TODO no defaultGen
//DStabGenDataXmlType defaulGen = OdmObjFactory.createDStabGenDataXmlType();
//busRec.getGenData().getContributeGen().add(OdmObjFactory.createDstabContributeGen(defaulGen));
//DStabLoadDataXmlType defaultLoad = OdmObjFactory.createDStabLoadDataXmlType();
//busRec.getLoadData().getContributeLoad().add(OdmObjFactory.createDstabContributeLoad(defaultLoad));
}
/**
* get the DStab bus object using the id. If the bus object is of type aclfBus or acscBus,
* cast it to the dstabBus type
*
* @param id
* @return
*/
public DStabBusXmlType getDStabBus(String id) throws ODMException {
return (DStabBusXmlType)getBus(id);
}
/*
* Branch functions
* ================
*/
@SuppressWarnings("unchecked") @Override protected <T extends LineBranchXmlType> T createLineBranch() {
LineDStabXmlType line = OdmObjFactory.createLineDStabXmlType();
initDStabLineBranch(line);
return (T)line;
}
protected void initDStabLineBranch(LineDStabXmlType line) {
initAcscLineBranch(line);
}
@SuppressWarnings("unchecked") @Override protected <T extends XfrBranchXmlType> T createXfrBranch() {
XfrDStabXmlType xfr = OdmObjFactory.createXfrDStabXmlType();
initDStabXfrBranch(xfr);
return (T)xfr;
}
protected void initDStabXfrBranch(XfrDStabXmlType xfr) {
initAcscXfrBranch(xfr);
}
@SuppressWarnings("unchecked") @Override protected <T extends PSXfrBranchXmlType> T createPSXfrBranch() {
PSXfrDStabXmlType psXfr = OdmObjFactory.createPSXfrDStabXmlType();
initDStabPsXfrBranch(psXfr);
return (T)psXfr;
}
protected void initDStabPsXfrBranch(PSXfrDStabXmlType psXfr) {
initAcscPsXfrBranch(psXfr);
}
@SuppressWarnings("unchecked") @Override protected <T extends BaseBranchXmlType> T createXfr3WBranch() {
Xfr3WDStabXmlType w3xfr = OdmObjFactory.createXfr3WDStabXmlType();
return (T) w3xfr;
}
@SuppressWarnings("unchecked") @Override protected <T extends BaseBranchXmlType> T createPSXfr3WBranch() {
PSXfr3WDStabXmlType branch = OdmObjFactory.createPSXfr3WDStabXmlType();
return (T)branch;
}
/**
* get the DStab Line object using the id. If the branch object is of type aclfLine or acscLine,
* cast it to the dstabLine type
*
* @param fromId
* @param toId
* @param cirId
* @return
*/
public LineDStabXmlType getDStabLine(String fromId, String toId, String cirId) throws ODMException {
return (LineDStabXmlType)this.getBranch(fromId, toId, cirId);
}
/**
* get the DStab Xfr object using the id. If the branch object is of type aclfXfr or acscXfr,
* cast it to the dstabXfr type
*
* @param fromId
* @param toId
* @param cirId
* @return
*/
public XfrDStabXmlType getDStabXfr(String fromId, String toId, String cirId) throws ODMException {
return (XfrDStabXmlType)this.getBranch(fromId, toId, cirId);
}
/**
* get the DStab PSXfr object using the id. If the branch object is of type aclfPSXfr or acscPSXfr,
* cast it to the dstabPSXfr type
*
* @param fromId
* @param toId
* @param cirId
* @return
*/
public PSXfrDStabXmlType getDStabPSXfr(String fromId, String toId, String cirId) throws ODMException {
return (PSXfrDStabXmlType)this.getBranch(fromId, toId, cirId);
}
}