Java tutorial
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 } }