package com.alcatel_lucent.nz.wnmsextract.reader; /* * This file is part of wnmsextract. * * wnmsextract is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * wnmsextract 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. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; import java.util.EnumSet; import java.util.List; import org.apache.commons.csv.CSVParser; import org.apache.commons.csv.CSVStrategy; import com.alcatel_lucent.nz.wnmsextract.database.ALUDBUtilities; import com.alcatel_lucent.nz.wnmsextract.database.ALUDBUtilities.ColumnStructure; import com.alcatel_lucent.nz.wnmsextract.database.DatabaseType; /* * "Date","Threshold","Lp 2 Ap 1","Lp 3 Ap 1","Lp 4 Ap 1","Lp 5 Ap 1","Lp 6 Ap 1","Lp 7 Ap 1","Lp 10 Ap 1","Lp 11 Ap 1","Lp 12 Ap 1","Lp 12 Ap 5","Lp 13 Ap 1","Lp 13 Ap 5" * "2010-08-08 11:47:01","70.0000","40.0000","37.0000","44.0000","41.0000","35.0000","38.0000","44.0000","40.0000","41.0000","1.0000","1.0000","38.0000" */ /** * This reader scrapes the default Borg webpage selecting all data from the chart backing tables. * Mostly superceded by the BorgSelectionReader class this is retained since the Borg default page * is more likely to be active than the date selecting CGI script */ @Deprecated public class BorgBlockReader implements HttpReader { /*this is all a bit redundant now. consider deleteing*/ private static final String BORG = "https://borg.anz.lucent.com/rnc_stats/"; private static final String TABLE = "rncap_borg"; public static final DateFormat BORG_DF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public static final DatabaseType DEF_DBT = DatabaseType.TNZ_NZRSDB; private enum AppProc{MASTER,TMU,RAB,PC,NI,OMU} /** * Hardcoded files names referencing borg backing tables. Recode as needed! * Future proofed a little with addition of h4,w3,m4 & c4 * @author jnramsay */ private enum RncAp { CH_RNC01(Arrays.asList( "CH-RNC01-Maste_rnc_cpu_rolling.csv","CH-RNC01-tmu_rnc_cpu_rolling.csv", "CH-RNC01-rab_rnc_cpu_rolling.csv","CH-RNC01-pc_rnc_cpu_rolling.csv", "CH-RNC01-Ni_rnc_cpu_rolling.csv","CH-RNC01-Omu_rnc_cpu_rolling.csv")), CH_RNC02(Arrays.asList( "CH-RNC02-Maste_rnc_cpu_rolling.csv","CH-RNC02-tmu_rnc_cpu_rolling.csv", "CH-RNC02-rab_rnc_cpu_rolling.csv","CH-RNC02-pc_rnc_cpu_rolling.csv", "CH-RNC02-Ni_rnc_cpu_rolling.csv","CH-RNC02-Omu_rnc_cpu_rolling.csv")), CH_RNC03(Arrays.asList( "CH-RNC03-Maste_rnc_cpu_rolling.csv","CH-RNC03-tmu_rnc_cpu_rolling.csv", "CH-RNC03-rab_rnc_cpu_rolling.csv","CH-RNC03-pc_rnc_cpu_rolling.csv", "CH-RNC03-Ni_rnc_cpu_rolling.csv","CH-RNC03-Omu_rnc_cpu_rolling.csv")), CH_RNC04(Arrays.asList( "CH-RNC04-Maste_rnc_cpu_rolling.csv","CH-RNC04-tmu_rnc_cpu_rolling.csv", "CH-RNC04-rab_rnc_cpu_rolling.csv","CH-RNC04-pc_rnc_cpu_rolling.csv", "CH-RNC04-Ni_rnc_cpu_rolling.csv","CH-RNC04-Omu_rnc_cpu_rolling.csv")), MDR_RNC01(Arrays.asList( "MDR-RNC01-Maste_rnc_cpu_rolling.csv","MDR-RNC01-tmu_rnc_cpu_rolling.csv", "MDR-RNC01-rab_rnc_cpu_rolling.csv","MDR-RNC01-pc_rnc_cpu_rolling.csv", "MDR-RNC01-Ni_rnc_cpu_rolling.csv","MDR-RNC01-Omu_rnc_cpu_rolling.csv")), MDR_RNC02(Arrays.asList( "MDR-RNC02-Maste_rnc_cpu_rolling.csv","MDR-RNC02-tmu_rnc_cpu_rolling.csv", "MDR-RNC02-rab_rnc_cpu_rolling.csv","MDR-RNC02-pc_rnc_cpu_rolling.csv", "MDR-RNC02-Ni_rnc_cpu_rolling.csv","MDR-RNC02-Omu_rnc_cpu_rolling.csv")), MDR_RNC03(Arrays.asList( "MDR-RNC03-Maste_rnc_cpu_rolling.csv","MDR-RNC03-tmu_rnc_cpu_rolling.csv", "MDR-RNC03-rab_rnc_cpu_rolling.csv","MDR-RNC03-pc_rnc_cpu_rolling.csv", "MDR-RNC03-Ni_rnc_cpu_rolling.csv","MDR-RNC03-Omu_rnc_cpu_rolling.csv")), MDR_RNC04(Arrays.asList( "MDR-RNC04-Maste_rnc_cpu_rolling.csv","MDR-RNC04-tmu_rnc_cpu_rolling.csv", "MDR-RNC04-rab_rnc_cpu_rolling.csv","MDR-RNC04-pc_rnc_cpu_rolling.csv", "MDR-RNC04-Ni_rnc_cpu_rolling.csv","MDR-RNC04-Omu_rnc_cpu_rolling.csv")), WN_RNC01(Arrays.asList( "WN-RNC01-Maste_rnc_cpu_rolling.csv","WN-RNC01-tmu_rnc_cpu_rolling.csv", "WN-RNC01-rab_rnc_cpu_rolling.csv","WN-RNC01-pc_rnc_cpu_rolling.csv", "WN-RNC01-Ni_rnc_cpu_rolling.csv","WN-RNC01-Omu_rnc_cpu_rolling.csv")), WN_RNC02(Arrays.asList( "WN-RNC02-Maste_rnc_cpu_rolling.csv","WN-RNC02-tmu_rnc_cpu_rolling.csv", "WN-RNC02-rab_rnc_cpu_rolling.csv","WN-RNC02-pc_rnc_cpu_rolling.csv", "WN-RNC02-Ni_rnc_cpu_rolling.csv","WN-RNC02-Omu_rnc_cpu_rolling.csv")), WN_RNC03(Arrays.asList( "WN-RNC03-Maste_rnc_cpu_rolling.csv","WN-RNC03-tmu_rnc_cpu_rolling.csv", "WN-RNC03-rab_rnc_cpu_rolling.csv","WN-RNC03-pc_rnc_cpu_rolling.csv", "WN-RNC03-Ni_rnc_cpu_rolling.csv","WN-RNC03-Omu_rnc_cpu_rolling.csv")), HN_RNC01(Arrays.asList( "HN-RNC01-Maste_rnc_cpu_rolling.csv","HN-RNC01-tmu_rnc_cpu_rolling.csv", "HN-RNC01-rab_rnc_cpu_rolling.csv","HN-RNC01-pc_rnc_cpu_rolling.csv", "HN-RNC01-Ni_rnc_cpu_rolling.csv","HN-RNC01-Omu_rnc_cpu_rolling.csv")), HN_RNC02(Arrays.asList( "HN-RNC02-Maste_rnc_cpu_rolling.csv","HN-RNC02-tmu_rnc_cpu_rolling.csv", "HN-RNC02-rab_rnc_cpu_rolling.csv","HN-RNC02-pc_rnc_cpu_rolling.csv", "HN-RNC02-Ni_rnc_cpu_rolling.csv","HN-RNC02-Omu_rnc_cpu_rolling.csv")), HN_RNC03(Arrays.asList( "HN-RNC03-Maste_rnc_cpu_rolling.csv","HN-RNC03-tmu_rnc_cpu_rolling.csv", "HN-RNC03-rab_rnc_cpu_rolling.csv","HN-RNC03-pc_rnc_cpu_rolling.csv", "HN-RNC03-Ni_rnc_cpu_rolling.csv","HN-RNC03-Omu_rnc_cpu_rolling.csv")); private List<String> flist; RncAp(List<String> flist){ this.flist = flist; } public String getFile(AppProc ap){ switch (ap){ case MASTER: return flist.get(0); case TMU: return flist.get(1); case RAB: return flist.get(2); case PC: return flist.get(3); case OMU: return flist.get(4); case NI: return flist.get(5); } return null; } }; //delim, encaps, comment public CSVStrategy strategy; public DatabaseType databasetype; /** * Constructor, sets up SSL certs. * @param databasetype */ public BorgBlockReader(DatabaseType databasetype){ this.databasetype = databasetype; this.strategy = new CSVStrategy(',','"','#'); System.setProperty("javax.net.ssl.trustStore", Extractor.chooseCACertsPath()+"cacerts"); System.setProperty("javax.net.ssl.trustStorePassword", "changeit"); System.out.println("javax.net.ssl.trustStore = "+System.getProperty("javax.net.ssl.trustStore")); } public BorgBlockReader(){ this(DEF_DBT); } @Override public void readAll() { ArrayList<ColumnStructure> colstruct = new ArrayList<ColumnStructure>(); colstruct.add(ColumnStructure.VC); colstruct.add(ColumnStructure.TS); colstruct.add(ColumnStructure.FL); for (RncAp r : EnumSet.allOf(RncAp.class)){ for (AppProc a : EnumSet.allOf(AppProc.class)){ ArrayList<ArrayList<String>> mapmap = new ArrayList<ArrayList<String>>(); try { URL borg = new URL(BORG+r.getFile(a)); URLConnection conn = borg.openConnection(); BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); CSVParser parser = new CSVParser(in,strategy); //if header String[] header = parser.getLine(); //and body String[] line = null; while((line = parser.getLine())!= null){ Calendar cal = Calendar.getInstance(); cal.setTime(BORG_DF.parse(line[0])); String datestr = ALUDBUtilities.ALUDB_DF.format(cal.getTime()); //System.out.println(r.toString()+"/"+a.toString()+"//"+line[0]+"///"+datestr); for(int i=2; i<line.length; i++){ ArrayList<String> map = new ArrayList<String>(); map.add(0,idConvert(r.toString(),a.toString(),header[i])); map.add(1,datestr); map.add(2,line[i]); mapmap.add(map); } } in.close(); } catch(MalformedURLException mrue){System.err.println("Borg Path incorrect "+mrue);} catch(IOException ioe){System.err.println("Cannot read Borg file "+ioe);} catch(ParseException pe){System.err.println("Cannot parse Date field "+pe);} ALUDBUtilities.insert(databasetype, TABLE, colstruct, mapmap); } } } /** * Aggregate table trigger method call */ @Override public void logRawTableChanges (){ ALUDBUtilities.log(databasetype, TABLE, "INSERT"); } /** * Coded ID converter. Not inline with design philosophy to keep id * functions in DB * @param rnc * @param ap * @param hd * @return */ private String idConvert(String rnc, String ap, String hd){ //"Lp nn Ap mm" String[] token = hd.split(" "); return "AP_"+rnc+"/"+rnc+"IN0/"+token[1]+"/"+token[3]; } @Override public void readAll(Calendar start, Calendar end) { // TODO Auto-generated method stub } @Override public void readAll(String start, String end) { // TODO Auto-generated method stub } }