package jeffaschenk.commons.frameworks.cnxidx.utility.ldap;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.LinkedList;
import javax.naming.directory.DirContext;
/**
* Java class for creating the necessary DIT Structure for the various
* Vendor Resources we support in our Product.
*
* @author jeff.schenk
* @version 1.0 $Revision
* Developed 2001
*/
public class idxIRRVendors {
private static String MP = "IRRVendors: ";
private boolean VERBOSE = false;
private idxIRRdit DIT = null;
private LinkedList<VendorResource> VendorObjects = null;
private boolean Available = false;
private static final String DEFAULT_VENDOR_CONF = "idxIRRVendor.conf";
/**
* Initial Constructor used when no argument supplied.
* Reads the internal based configuration file embedded into the
* JAR and creates the LinkedList to be used to construct Directory
* Container Objects.
*/
public idxIRRVendors(idxIRRdit _dit) {
DIT = _dit;
VERBOSE = DIT.getVerbose();
// ************************************
// Construct a Vendor / Device / OS Map
//
VendorObjects = new LinkedList<>();
try {
InputStream in = this.getClass().getResourceAsStream(DEFAULT_VENDOR_CONF);
// ******************************************
// Open up the Input Stream.
BufferedReader vendorconfig = new BufferedReader(
new InputStreamReader(in));
String xVENDOR = null;
String xTYPE = null;
String xVDS = null;
String xOS = null;
// ******************************************
// Loop Through the Configuration File.
String s;
while ((s = vendorconfig.readLine()) != null) {
s = s.trim();
if (s.length() <= 0) {
continue;
}
if (("/".equals(s.substring(0, 1))) ||
("#".equals(s.substring(0, 1))) ||
("*".equals(s.substring(0, 1)))) {
continue;
}
int sep = s.indexOf(':');
if (sep < 1) {
continue;
}
// ***********************************
// Start Parsing.
String name = s.substring(0, sep);
name = name.trim();
name = name.replace(',', ' ');
String value = s.substring(sep + 1);
value = value.trim();
value = value.replace(',', ' ');
if ((name == null) || ("".equals(name)) ||
(value == null) || ("".equals(value))) {
continue;
}
// ***********************************
// Determine the Entry Name.
if ("vendor".equalsIgnoreCase(name)) {
xVENDOR = value;
xTYPE = "";
xVDS = "";
xOS = "";
VendorObjects.add(new VendorResource(xVENDOR,
xTYPE, xVDS, xOS));
} else if ("type".equalsIgnoreCase(name)) {
xTYPE = value;
xVDS = "";
xOS = "";
VendorObjects.add(new VendorResource(xVENDOR,
xTYPE, xVDS, xOS));
} else if ("vds".equalsIgnoreCase(name)) {
xVDS = value;
xOS = "";
VendorObjects.add(new VendorResource(xVENDOR,
xTYPE, xVDS, xOS));
} else if ("os".equalsIgnoreCase(name)) {
xOS = value;
VendorObjects.add(new VendorResource(xVENDOR,
xTYPE, xVDS, xOS));
} else {
continue;
}
} // End of While Loop.
// ************************************
vendorconfig.close();
} catch (Exception e) {
e.printStackTrace();
Available = false;
return;
} // End of Exception.
// ****************************************
// Show Verbose Output.
//
if (VERBOSE) {
System.out.println(MP + "Vendor Objects Read and Available:");
Iterator itr = VendorObjects.iterator();
while (itr.hasNext()) {
Object element = itr.next();
System.out.println(MP + "\t" + element);
} // End of While.
}
// *************************************
// Indicator Object Avilable for Use.
Available = true;
return;
} // end of Constructor
/**
* Method to Set VERBOSE Indicator.
*
* @param _verbose Verbose Indicator setting.
*/
public void setVerbose(boolean _verbose) {
VERBOSE = _verbose;
} // end of Method
/**
* Method to Get VERBOSE Indicator.
*
* @return boolean Verbose Indicator setting.
*/
public boolean getVerbose() {
return (VERBOSE);
} // end of Method
/**
* Method to see if this Object is Available for Use and
* has been properly built.
*
* @return boolean Available Indicator setting.
*/
public boolean isAvailable() {
return (Available);
} // end of Method
/**
* Create an new set Containers for Vendor.
*
* @param ctx current established Directory Context.
* @param CustomerDN current Customer DN.
* @return boolean indication of operation successful or not.
*/
public boolean CreateContainersForVendors(DirContext ctx,
String CustomerDN) {
// ***************************************
// Is this Service Available?
// If not return....
if (!Available) {
return (false);
}
// ***************************************
// Construct the Initial Top Level DN
String iDN = DIT.getVendorObjectContainerName() +
", " + CustomerDN;
// ***************************************
// Start Iteration Loop.
Iterator itr = VendorObjects.iterator();
while (itr.hasNext()) {
Object vo = itr.next();
if (vo instanceof VendorResource) {
if ((((VendorResource) vo).getVendorName() == null) ||
("".equals(((VendorResource) vo).getVendorName()))) {
continue;
}
if ((((VendorResource) vo).getVendorResourceType() == null) ||
("".equals(((VendorResource) vo).getVendorResourceType()))) { // *****************************
// We have a Vendor Instance.
if (!DIT.CreateOUContainer(ctx,
"ou=" + ((VendorResource) vo).getVendorName() +
", " + iDN)) {
return (false);
}
} // End of Else if
else if ((((VendorResource) vo).getVendorResourceModel() == null) ||
("".equals(((VendorResource) vo).getVendorResourceModel()))) { // ***********************************
// We have a Vendor Resource Type.
if (!DIT.CreateOUContainer(ctx,
"ou=" + ((VendorResource) vo).getVendorResourceType() +
", ou=" + ((VendorResource) vo).getVendorName() +
", " + iDN)) {
return (false);
}
} // End of Else if
else if ((((VendorResource) vo).getVendorResourceOS() == null) ||
("".equals(((VendorResource) vo).getVendorResourceOS()))) { // ***********************************
// We have a Vendor Resource Model.
if (!DIT.CreateOUContainer(ctx,
"ou=" + ((VendorResource) vo).getVendorResourceModel() +
", ou=" + ((VendorResource) vo).getVendorResourceType() +
", ou=" + ((VendorResource) vo).getVendorName() +
", " + iDN)) {
return (false);
}
// ************************************
// Generate Necessary Subtrees.
if (!DIT.CreateOUContainersForVCObjectTree(ctx,
"ou=" + ((VendorResource) vo).getVendorResourceModel() +
", ou=" + ((VendorResource) vo).getVendorResourceType() +
", ou=" + ((VendorResource) vo).getVendorName() +
", " + iDN)) {
return (false);
}
} // End of Else if
else { // *************************************
// We have a Vendor Resource OS.
if (!DIT.CreateOUContainer(ctx,
"ou=" + ((VendorResource) vo).getVendorResourceOS() +
", ou=" + ((VendorResource) vo).getVendorResourceModel() +
", ou=" + ((VendorResource) vo).getVendorResourceType() +
", ou=" + ((VendorResource) vo).getVendorName() +
", " + iDN)) {
return (false);
}
// ************************************
// Generate Necessary Subtrees.
if (!DIT.CreateOUContainersForVCObjectTree(ctx,
"ou=" + ((VendorResource) vo).getVendorResourceOS() +
", ou=" + ((VendorResource) vo).getVendorResourceModel() +
", ou=" + ((VendorResource) vo).getVendorResourceType() +
", ou=" + ((VendorResource) vo).getVendorName() +
", " + iDN)) {
return (false);
}
} // End of Else
} // End of If.
} // End of While.
return (true);
} // End of CreateContainersForVendors class.
} ///:~ End of idxIRRVendors Class.
/**
* Support class which defines a Vendor Object for containment.
*/
class VendorResource {
private String VendorName;
private String VendorResourceType;
private String VendorResourceModel;
private String VendorResourceOS;
/**
* Initial Constructor used to Construct Object.
*/
public VendorResource(String _VendorName,
String _VendorResourceType,
String _VendorResourceModel,
String _VendorResourceOS) {
VendorName = _VendorName;
VendorResourceType = _VendorResourceType;
VendorResourceModel = _VendorResourceModel;
VendorResourceOS = _VendorResourceOS;
} // End of Constructor Class.
/**
* Method to obtain vendor Name.
*
* @return String Vendor Name.
*/
public String getVendorName() {
return (VendorName);
}
/**
* Method to obtain vendor Resource Type.
*
* @return String Vendor Resource Type.
*/
public String getVendorResourceType() {
return (VendorResourceType);
}
/**
* Method to obtain vendor Resource Model.
*
* @return String Vendor Resource Model.
*/
public String getVendorResourceModel() {
return (VendorResourceModel);
}
/**
* Method to obtain vendor Resource OS.
*
* @return String Vendor Resource OS.
*/
public String getVendorResourceOS() {
return (VendorResourceOS);
}
/**
* Method to convert Object to String Information.
*
* @return String Vendor Object.
*/
public String toString() {
if ((VendorResourceType == null) ||
("".equals(VendorResourceType))) {
return (VendorName);
} else if ((VendorResourceModel == null) ||
("".equals(VendorResourceModel))) {
return (VendorName + "," + VendorResourceType);
} else if ((VendorResourceOS == null) ||
("".equals(VendorResourceOS))) {
return (VendorName + "," + VendorResourceType +
"," + VendorResourceModel);
} else {
return (VendorName + "," + VendorResourceType +
"," + VendorResourceModel +
"," + VendorResourceOS);
}
} // End of Method.
} ///:~ End of VendorResource Class.