From: Wolfgang T. <ta...@us...> - 2005-08-16 15:32:18
|
Update of /cvsroot/sblim/wbemsmt-dns-bl/java/org/sblim/wbemsmt/dns/bl/adapter In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14080/java/org/sblim/wbemsmt/dns/bl/adapter Added Files: Network.java ReverseZoneAdapter.java ReverseZone.java Log Message: WBEM-SMT DNS BusinessLogic component. First initial upload. --- NEW FILE: Network.java --- /** * Network.java * * (C) Copyright IBM Corp. 2005 * * THIS FILE IS PROVIDED UNDER THE TERMS OF THE COMMON PUBLIC LICENSE * ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE * CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT. * * You can obtain a current copy of the Common Public License from * http://www.opensource.org/licenses/cpl1.0.php * * Author: Rodrigo Ceron <rc...@br...> * * Contributors: **/ /* * Created on Jun 30, 2005, ceron */ package org.sblim.wbemsmt.dns.bl.adapter; import java.util.ArrayList; import org.sblim.wbemsmt.dns.bl.fco.DNSResourceRecord; /** * @author ceron * */ public class Network { private String name4ReverseZone = null; private ArrayList records = null; public Network(String reverseName){ this.name4ReverseZone = reverseName; this.records = new ArrayList(); } public void addRecord(DNSResourceRecord r){ if(!this.records.contains(r)) this.records.add(r); } public ArrayList getRecords(){ return this.records; } public String getNameForReverseZone(){ return this.name4ReverseZone; } public boolean equals(Object o){ Network t = (Network) o; try{ if (this.name4ReverseZone.equalsIgnoreCase(t.getNameForReverseZone())) return true; else return false; }catch (Exception e){ return false; } } } --- NEW FILE: ReverseZone.java --- /** * ReverseZone.java * * (C) Copyright IBM Corp. 2005 * * THIS FILE IS PROVIDED UNDER THE TERMS OF THE COMMON PUBLIC LICENSE * ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE * CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT. * * You can obtain a current copy of the Common Public License from * http://www.opensource.org/licenses/cpl1.0.php * * Author: Rodrigo Ceron <rc...@br...> * * Contributors: **/ /* * Created on Aug 13, 2005, ceron */ package org.sblim.wbemsmt.dns.bl.adapter; import java.util.ArrayList; import org.sblim.wbemsmt.dns.bl.fco.DNSMasterZone; /** * @author ceron * */ public class ReverseZone { private DNSMasterZone zone = null; private ArrayList rrs = null; public ReverseZone(DNSMasterZone z, ArrayList a){ this.zone = z; this.rrs = a; } public DNSMasterZone getZone(){ return this.zone; } public ArrayList getZoneResourceRecords(){ return this.rrs; } } --- NEW FILE: ReverseZoneAdapter.java --- /** * ReverseZoneAdapter.java * * (C) Copyright IBM Corp. 2005 * * THIS FILE IS PROVIDED UNDER THE TERMS OF THE COMMON PUBLIC LICENSE * ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE * CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT. * * You can obtain a current copy of the Common Public License from * http://www.opensource.org/licenses/cpl1.0.php * * Author: Rodrigo Ceron <rc...@br...> * * Contributors: **/ /* * Created on Aug 13, 2005, ceron */ package org.sblim.wbemsmt.dns.bl.adapter; import java.util.ArrayList; import org.sblim.wbem.client.CIMClient; import org.sblim.wbemsmt.dns.bl.fco.DNSMasterZone; import org.sblim.wbemsmt.dns.bl.fco.DNSResourceRecord; import org.sblim.wbemsmt.dns.bl.fco.DNSZone; import org.sblim.wbemsmt.dns.bl.adapter.Network; /** * @author ceron * */ public class ReverseZoneAdapter{ private ArrayList zoneAL = null; private ArrayList rrsAL = null; private CIMClient cimClient = null; private ArrayList nets = null; private Network net = null; private ArrayList reverseZones = new ArrayList(); /** Creates a ReverseZoneAdapter object with information * for creating a reverse zone for every master zone * @param cimClient */ public ReverseZoneAdapter(CIMClient cimClient){ this.cimClient = cimClient; this.zoneAL = DNSMasterZone.enumerateInstances(cimClient); } /** Creates a ReverseZoneAdapter object with information * for creating a reverse zone for the given master zone * @param cimClient * @param zone */ public ReverseZoneAdapter(CIMClient cimClient, DNSMasterZone zone){ this.cimClient = cimClient; this.zoneAL = new ArrayList(); this.zoneAL.add(zone); } /**Creates a ReverseZoneAdapter object with information for creating * reverse zones for the given array list of resource records * @param cimClient * @param rrs */ public ReverseZoneAdapter(CIMClient cimClient, ArrayList rrs){ this.cimClient = cimClient; this.rrsAL = rrs; } public String[] getReverseZoneNames(){ String [] s = new String[nets.size()]; try{ for(int i=0; i<nets.size();i++){ s[i] = ((Network)nets.get(i)).getNameForReverseZone(); } }catch(Exception e){ System.err.println("Error while retrieving reverse zones names"); } return s; } /**Gets the networks info. This is only the information of which * resource records would belong to each reverse zone * @return ArrayList of Network objects */ public ArrayList getNetworks(){ return this.nets; } /**Builds network information based upon the zones or resource records * given to the adapter * @return true or false */ public boolean builReverseInfo(){ ArrayList reverseZones = new ArrayList(); ArrayList reverseRRs = new ArrayList(); DNSMasterZone zone = null; DNSMasterZone revZone = null; DNSResourceRecord rr = null; DNSResourceRecord revRR = null; //get rrs from zones we want to create resource records from if(this.zoneAL != null){ //Want to create reverse of (a specific | all) zone(s) this.rrsAL = new ArrayList(); for(int i=0; i<zoneAL.size();i++){ zone = (DNSMasterZone) zoneAL.get(i); try{ if(!"localhost".equalsIgnoreCase(zone.getName()) && !"0.0.127.in-addr.arpa".equalsIgnoreCase(zone.getName()) && zone.getName().toLowerCase().indexOf("in-addr.arpa")==-1) this.rrsAL.addAll(zone.getAssociatedResourceRecords(this.cimClient)); }catch(Exception ex){ System.err.println("System inernal error while getting zone name"); } } } //put resource records into networks try{ this.nets = this.createNetworks(this.rrsAL); }catch(Exception e){ System.err.println("Unable to create reverse zone(s)"); e.printStackTrace(); return false; } return true; } /**Creates an array list of ReverseZone * @return Arraylist of ReverseZone */ public ArrayList createReverseZones(){ ReverseZone r = null; Network net = null; DNSMasterZone zone = null; DNSResourceRecord rr = null; ArrayList rrList = null; ArrayList newRRList = null; try{ for(int i=0; i<this.nets.size();i++){ net = (Network) nets.get(i); rrList = net.getRecords(); zone = new DNSMasterZone(this.cimClient); zone.setName(net.getNameForReverseZone()); zone.setType(new Short(DNSZone.TYPE_MASTER)); newRRList = new ArrayList(); for(int j=0;j<rrList.size();j++){ rr = (DNSResourceRecord) rrList.get(j); rr = rr.createReverse(this.cimClient); newRRList.add(rr); } r = new ReverseZone(zone,newRRList); this.reverseZones.add(r); } }catch(Exception e){ System.err.println("Error while creating reverse zone data"); } return this.reverseZones; } private ArrayList createNetworks(ArrayList rrs) throws Exception { ArrayList nets = new ArrayList(); DNSResourceRecord r = null; String value = null; String revName = null; String[] octets = null; Network net = null; if(rrs==null) return nets; for(int i=0;i<rrs.size();i++){ try{ r = (DNSResourceRecord) rrs.get(i); if(!("A".equalsIgnoreCase(r.getTypeString()))) continue; value = r.getValue(); octets = value.split("\\."); revName = new String(); for(int j=octets.length-2; j>=0; j--) revName = revName.concat(octets[j]+"."); revName = revName.concat("in-addr.arpa"); net = new Network(revName); if(!nets.contains(net)){ net.addRecord(r); nets.add(net); }else{ net = (Network) nets.get(nets.indexOf(net)); net.addRecord(r); } }catch (ArrayIndexOutOfBoundsException e){ try{ System.out.println("Invalid value in resource record " + r.getName()); }catch(Exception d){ } throw e; }catch (Exception e){ throw e; } } return nets; } } |