/* * @(#)IeeeCDFTieLineDataParser.java * * Copyright (C) 2006-2013 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 04/11/2013 * * Revision History * ================ * */ package org.ieee.odm.adapter.ieeecdf.parser; import java.util.StringTokenizer; import org.ieee.odm.adapter.AbstractDataFieldParser; import org.ieee.odm.common.ODMException; /** * Class for parsing IEEE CDF tie-line data line string * * @author mzhou * */ public class IeeeCDFTieLineDataParser extends AbstractDataFieldParser { @Override public String[] getMetadata() { return new String[] { // 0 1 2 3 4 "MeteredBusNum", "MeteredAreaNum", "NotMeteredBusNum", "NotMeteredAreaNum", "CirNum", }; } @Override public void parseFields(final String str) throws ODMException { if (str.indexOf(',') >= 0) { final StringTokenizer st = new StringTokenizer(str, ","); int cnt = 0; while (st.hasMoreTokens()) { setValue(cnt++, st.nextToken().trim()); } } else { // Columns 1- 4 Metered bus number [I] * // Columns 7-8 Metered area number [I] * setValue(0, str.substring(0, 4).trim()); setValue(1, str.substring(6, 8).trim()); // Columns 11-14 Non-metered bus number [I] * // Columns 17-18 Non-metered area number [I] * setValue(2, str.substring(10, 14).trim()); setValue(3, str.substring(16, 18).trim()); // Column 21 Circuit number int cirColNum =21; String cirIdString =str.substring(20, cirColNum).trim(); // length after triming ending blanks // int length = str.replaceAll("\\s+$", "").length(); // if(length>cirColNum) { // cirColNum = length; // cirIdString =str.substring(20, length).trim(); // ODMLogger.getLogger().warning("TieLine CirId is not in Column 21,Tieline str = "+str+",parsing cirId = "+cirIdString); // } setValue(4, cirIdString); } } }