Performing Free Form Searches via MDM Java API
SAP NetWeaver MDM comes along with a powerful Java API which covers almost any functionality offered through the client applications. Using a few examples, this blog explains how to perform free form searches via the Java API.
The examples are based on a very simple MDM Repository. The structure and contents are available at the end of the Blog.
The Java source is also available (exclusively for SDN users ;-) ) as a SAP NetWeaver Developer Studio project here.
Free Form Search in MDM Data Manager
The examples simulate a free form search on the Products table. So let's briefly have a look on how this is done using the MDM Data Manager.
Besides the direct selection of values for searching, you can use the Expression field in the Free-Form Search pane.
A doubleclick on the highlighted area will bring up the Search Expression dialog. Here you can either directly type in the search expression or use the shortcut buttons to create an expression.
I included the equivalent search expression for each example in the source code.
Getting Started: Using one single field
This first example will emulate the search expression
FIND(Name,"Contractor")
on table Products.
The MDM Java API exposes the free form search capabilities via several types of free form search parameters. Each of them is implemented as a separate class and derived from the super class SearchParameter.
Search parameters are added to an instance of a Search object and they will be taken into consideration for the search as soon as it is executed.
So the first thing for us to do is to create a new Search object.
Search search = new Search("Products");
This search object contains a collection of several instances of search parameter classes. This collection is initially empty. We will now add a new search parameter class to this collection.
FreeFormTableParameter fftpNames =
search.GetParameters().NewFreeFormTableParameter("Products");
As you see we are using the class FreeFormTableParameter since we want to restrict our free form search based on fields of a given table (Products). To create a new instance of this search parameter, we use the method NewFreeFormTableParameter() of the SearchParameters collection. This method requires the table name from which we will later on use the fields and will also add this new parameter to the collection.
FreeFormParameterField ffpfName = fftpNames.GetFields().New("Name");
This line of code adds a new FreeFormParameterField based on the field Name of the Products table to the search parameter. This is the field we are using in our expression above.
ffpfName.GetFreeForm().NewString("Contractor", FreeFormParameter.SubstringSearchType);
Here we use the FreeFormParameterField to add the restriction for the value Contractor. We use NewString() because this is a string value and we specify a substring search.
As with any other search
A2iResultSet result = catalog.GetResultSet(search, rsd, "Name", true, 0);
will execute the search and return the result.
The complete source code is available at the end of the blog.
Single Field, More Values
The next thing is to search for multiple values, but still using one single field. Let's take the expression
FIND(Name, "Contractor") AND FIND(Name, "Blade") AND FIND(Name,
"Standard")
on table Products.
The code is exactly the same as above until the instanciation of the FreeFormParameterField:
FreeFormParameterField ffpfName = fftpNames.GetFields().New("Name",
FreeFormParameterField.SEARCH_OPERATOR_AND);
This line of code will combine the search with logical AND.
After that we can simply add each of the values, one after the other.
ffpfName.GetFreeForm().NewString("Contractor",
FreeFormParameter.SubstringSearchType);
ffpfName.GetFreeForm().NewString("Blade",
FreeFormParameter.SubstringSearchType);
ffpfName.GetFreeForm().NewString("Standard",
FreeFormParameter.SubstringSearchType);
Most probably you already guessed, that for the expression
FIND(Name, "Contractor") OR FIND(Name, "Blade") OR FIND(Name,
"Standard")
on table Products, we have to use the coding
FreeFormParameterField ffpfName = fftpNames.GetFields().New("Name",
FreeFormParameterField.SEARCH_OPERATOR_OR);
AND and OR together
The previous example covered expressions using either only OR combinations or AND combinations of the values. Now we want to go for
(FIND(Name, "Contractor") OR FIND(Name, "Blade")) AND FIND(Name,
"Standard")
on table Products.
A litte bit more complicated but still straight forward:
Start with the first sub-expression (the OR combination in brackets):
FreeFormParameterField ffpfName1 = fftpNames.GetFields().New("Name",
FreeFormParameterField.SEARCH_OPERATOR_OR);
ffpfName1.GetFreeForm().NewString("Contractor", FreeFormParameter.SubstringSearchType);
ffpfName1.GetFreeForm().NewString("Blade", FreeFormParameter.SubstringSearchType);
After that add a new FreeFormParameterField.
FreeFormParameterField ffpfName2 = fftpNames.GetFields().New("Name");
ffpfName2.GetFreeForm().NewString("Standard", FreeFormParameter.SubstringSearchType);
Several FreeFormParameterField instances will be AND combined automatically.
Two fields
The expression
FIND(Manufacturer, "Estwing") AND FIND(Name, "Polyurethane")
on table Products uses two fields. But based on what you have already seen, the implementation is easy.
One FreeFormParameterField for the first field:
FreeFormParameterField ffpfManu = fftpProducts.GetFields().New("Manufacturer");
ffpfManu.GetFreeForm().NewString("Estwing", FreeFormParameter.SubstringSearchType);
And one FreeFormParameterField for the second field:
FreeFormParameterField ffpfName = fftpProducts.GetFields().New("Name");
ffpfName.GetFreeForm().NewString("Polyurethane", FreeFormParameter.SubstringSearchType);
Again, the search parameters are AND combined by default.
OR Combination of Search Parameters
In order to override the default AND operator between fields, which is necessary for the expression
FIND(Manufacturer, "Estwing") OR FIND(Name, "Polyurethane")
on table Products, we need to change the default behaviour of the Search object we are using.
search.SetSearchType(Search.GlobalOrSearchCombinationType);
This will have the effect, that all FreeFormParameterField will be OR combined instead of AND.
The rest of the code is exactly the same as above.
Complete Java Source Code
------------------------------------------------------------------
import a2i.core.*;
import a2i.common.*;
import a2i.search.*;
/**
* Examples for free form searches via the MDM Java API.
* * <br>To run these examples, create the following
Classpath Variable in your Developer Studio to link to your local MDM
API JAR:</p>
*Go to <em>Window -> Preferences -> Java
-> Classpath Variables</em> and create this
variable:<br>
*<em>SAP_MDM_MDM4J</em> - Path to the
folder containing MDM4J.jar<br>
*<br>
*Of course you need also an up-and-running MDM Server with a loaded
Repository.<br>
*The connection details are directly maintained in the source
code.<br>
*
*<br><br>
* *This code is copyrighted by SAP AG, Dietmar-Hopp-Allee 16, 69190
Walldorf, Germany.<br><br>
*It has been written to serve educational purposes only. You may reuse,
modify and
*redistribute it as long as the following rules are obeyed:
<br><br>
*<strong>
*SAP AG assumes no responsibility for errors or omissions in this
sample code.<br>
*It is provided "as is" without a warranty of any kind, either express
or implied,
*including, but not limited to, the implied warranties of
merchantability, fitness for a particular purpose,
*or non-infringement.<br>
*SAP AG shall not be liable for damages of any kind including without
limitation direct, special,
*indirect, or consequential damages that may result from the use of
this code.<br>
*SAP AG does not warrant the accuracy or completeness of information,
text, graphics, links or
*other items contained within these materials. SAP AG reserves the
right to modify, replace or
*supplement this documentation and coding without notice.
*</strong>
*
* @author Andreas Seifried (D035740), Copyright SAP AG, 200
*/
public class FreeFormSearchExamples {
CatalogData catalog;
public void login() {
catalog = new CatalogData();
catalog.Login("localhost", 2010, "Admin", "", "English [US]");
}
public void logout() {
try {
catalog.Logout();
} catch (StringException e) {
System.out.println("Logout Failed!");
e.printStackTrace();
}
}
/**
* Search on one single field for one single value
*/
public void searchSingleFieldSimple() {
//FIND(Name, "Contractor") on table Products
// case sensitive substring search in the field "Name"
System.out.println();
System.out.println("Performing searchSingleFieldSimple()");
System.out.println("FIND(Name, \"Contractor\") on table Products");
System.out.println("Expected Hits: 18");
System.out.println("=========================");
ResultSetDefinition rsd = new ResultSetDefinition("Products");
rsd.AddField("Name");
Search search = new Search("Products");
FreeFormTableParameter fftpNames =
search.GetParameters().NewFreeFormTableParameter("Products");
FreeFormParameterField ffpfName = fftpNames.GetFields().New("Name");
ffpfName.GetFreeForm().NewString("Contractor",
FreeFormParameter.SubstringSearchType);
A2iResultSet result;
try {
result = catalog.GetResultSet(search, rsd, "Name", true, 0);
System.out.println("Found " + result.GetRecordCount() + " records.");
// for(int n=0; n<result.GetRecordCount(); n++) {
// System.out.println(result.GetValueAt(n, "Name").GetStringValue());
// }
} catch (StringException e) {
System.out.println("Search Failed!");
e.printStackTrace();
}
}
/**
* Search on one single field for 3 values, AND combination
*/ public void searchSingleFieldAnd() {
//FIND(Name, "Contractor") AND FIND(Name, "Blade") AND FIND(Name,
"Standard") on table Products
System.out.println();
System.out.println("Performing searchSingleFieldAnd()");
System.out.println("FIND(Name, \"Contractor\") AND FIND(Name,
\"Blade\") AND FIND(Name, \"Standard\") on table Products");
System.out.println("Expected Hits: 5");
System.out.println("=========================");
ResultSetDefinition rsd = new ResultSetDefinition("Products");
rsd.AddField("Name");
Search search = new Search("Products");
FreeFormTableParameter fftpNames =
search.GetParameters().NewFreeFormTableParameter("Products");
FreeFormParameterField ffpfName = fftpNames.GetFields().New("Name",
FreeFormParameterField.SEARCH_OPERATOR_AND);
ffpfName.GetFreeForm().NewString("Contractor",
FreeFormParameter.SubstringSearchType);
ffpfName.GetFreeForm().NewString("Blade",
FreeFormParameter.SubstringSearchType);
ffpfName.GetFreeForm().NewString("Standard",
FreeFormParameter.SubstringSearchType);
A2iResultSet result;
try {
result = catalog.GetResultSet(search, rsd, "Name", true, 0);
System.out.println("Found " + result.GetRecordCount() + " records.");
// for(int n=0; n<result.GetRecordCount(); n++) {
// System.out.println(result.GetValueAt(n, "Name").GetStringValue());
// }
} catch (StringException e) {
System.out.println("Search Failed!");
e.printStackTrace();
}
}
/**
* Search on one single field for 3 values, OR combination
*/ public void searchSingleFieldOr() {
//FIND(Name, "Contractor") OR FIND(Name, "Blade") OR FIND(Name,
"Standard") on table Products
System.out.println();
System.out.println("Performing searchSingleFieldOr()");
System.out.println("FIND(Name, \"Contractor\") OR FIND(Name, \"Blade\")
OR FIND(Name, \"Standard\") on table Products");
System.out.println("Expected Hits: 48");
System.out.println("=========================");
ResultSetDefinition rsd = new ResultSetDefinition("Products");
rsd.AddField("Name");
Search search = new Search("Products");
FreeFormTableParameter fftpNames =
search.GetParameters().NewFreeFormTableParameter("Products");
FreeFormParameterField ffpfName = fftpNames.GetFields().New("Name",
FreeFormParameterField.SEARCH_OPERATOR_OR);
ffpfName.GetFreeForm().NewString("Contractor",
FreeFormParameter.SubstringSearchType);
ffpfName.GetFreeForm().NewString("Blade",
FreeFormParameter.SubstringSearchType);
ffpfName.GetFreeForm().NewString("Standard",
FreeFormParameter.SubstringSearchType);
A2iResultSet result;
try {
result = catalog.GetResultSet(search, rsd, "Name", true, 0);
System.out.println("Found " + result.GetRecordCount() + " records.");
// for(int n=0; n<result.GetRecordCount(); n++) {
// System.out.println(result.GetValueAt(n, "Name").GetStringValue());
// }
} catch (StringException e) {
System.out.println("Search Failed!");
e.printStackTrace();
}
}
/**
* Search on one single field for 3 values, nested OR / AND combination
*/ public void searchSingleFieldOrAnd() {
//(FIND(Name, "Contractor") OR FIND(Name, "Blade")) AND FIND(Name,
"Standard") on table Products
System.out.println();
System.out.println("Performing searchSingleFieldOrAnd()");
System.out.println("(FIND(Name, \"Contractor\") OR FIND(Name,
\"Blade\")) AND FIND(Name, \"Standard\") on table Products");
System.out.println("Expected Hits: 11");
System.out.println("=========================");
ResultSetDefinition rsd = new ResultSetDefinition("Products");
rsd.AddField("Name");
Search search = new Search("Products");
FreeFormTableParameter fftpNames =
search.GetParameters().NewFreeFormTableParameter("Products");
FreeFormParameterField ffpfName1 = fftpNames.GetFields().New("Name",
FreeFormParameterField.SEARCH_OPERATOR_OR);
ffpfName1.GetFreeForm().NewString("Contractor",
FreeFormParameter.SubstringSearchType);
ffpfName1.GetFreeForm().NewString("Blade",
FreeFormParameter.SubstringSearchType);
FreeFormParameterField ffpfName2 = fftpNames.GetFields().New("Name");
ffpfName2.GetFreeForm().NewString("Standard",
FreeFormParameter.SubstringSearchType);
A2iResultSet result;
try {
result = catalog.GetResultSet(search, rsd, "Name", true, 0);
System.out.println("Found " + result.GetRecordCount() + " records.");
// for(int n=0; n<result.GetRecordCount(); n++) {
// System.out.println(result.GetValueAt(n, "Name").GetStringValue());
// }
} catch (StringException e) {
System.out.println("Search Failed!");
e.printStackTrace();
}
}
/**
* Search on two fields for single values, AND combination
*/ public void searchTwoFieldsAnd() {
//FIND(Manufacturer, "Estwing") AND FIND(Name, "Polyurethane") on table
Products
System.out.println();
System.out.println("Performing searchTwoFieldsAnd()");
System.out.println("FIND(Manufacturer, \"Estwing\") AND FIND(Name,
\"Polyurethane\") on table Products");
System.out.println("Expected Hits: 3");
System.out.println("=========================");
ResultSetDefinition rsd = new ResultSetDefinition("Products");
rsd.AddField("Name");
rsd.AddField("Manufacturer");
Search search = new Search("Products");
FreeFormTableParameter fftpProducts =
search.GetParameters().NewFreeFormTableParameter("Products");
FreeFormParameterField ffpfManu =
fftpProducts.GetFields().New("Manufacturer");
ffpfManu.GetFreeForm().NewString("Estwing",
FreeFormParameter.SubstringSearchType);
FreeFormParameterField ffpfName = fftpProducts.GetFields().New("Name");
ffpfName.GetFreeForm().NewString("Polyurethane",
FreeFormParameter.SubstringSearchType);
A2iResultSet result;
try {
result = catalog.GetResultSet(search, rsd, "Name", true, 0);
System.out.println("Found " + result.GetRecordCount() + " records.");
// for(int n=0; n<result.GetRecordCount(); n++) {
// System.out.println(result.GetValueAt(n, "Name").GetStringValue() +
"\t\t" + result.GetValueAt(n, "Manufacturer").GetStringValue());
// }
} catch (StringException e) {
System.out.println("Search Failed!");
e.printStackTrace();
}
}
/**
* Search on two fields for single values, OR combination
*/ public void searchTwoFieldsOr() {
//FIND(Manufacturer, "Estwing") OR FIND(Name, "Polyurethane") on table
Products
System.out.println();
System.out.println("Performing searchTwoFieldsOr()");
System.out.println("FIND(Manufacturer, \"Estwing\") OR FIND(Name,
\"Polyurethane\") on table Products");
System.out.println("Expected Hits: 67");
System.out.println("=========================");
ResultSetDefinition rsd = new ResultSetDefinition("Products");
rsd.AddField("Name");
rsd.AddField("Manufacturer");
Search search = new Search("Products");
search.SetSearchType(Search.GlobalOrSearchCombinationType);
FreeFormTableParameter fftpProducts =
search.GetParameters().NewFreeFormTableParameter("Products");
FreeFormParameterField ffpfManu =
fftpProducts.GetFields().New("Manufacturer");
ffpfManu.GetFreeForm().NewString("Estwing",
FreeFormParameter.SubstringSearchType);
FreeFormParameterField ffpfName = fftpProducts.GetFields().New("Name");
ffpfName.GetFreeForm().NewString("Polyurethane",
FreeFormParameter.SubstringSearchType);
search.SetSearchType(Search.GlobalOrSearchCombinationType);
A2iResultSet result;
try {
result = catalog.GetResultSet(search, rsd, "Name", true, 0);
System.out.println("Found " + result.GetRecordCount() + " records.");
// for(int n=0; n<result.GetRecordCount(); n++) {
// System.out.println(result.GetValueAt(n, "Name").GetStringValue() +
"\t\t" + result.GetValueAt(n, "Manufacturer").GetStringValue());
// }
} catch (StringException e) {
System.out.println("Search Failed!");
e.printStackTrace();
}
}
public static void main(String[] args) {
FreeFormSearchExamples ffse = new FreeFormSearchExamples();
ffse.login();
ffse.searchSingleFieldSimple();
ffse.searchSingleFieldAnd();
ffse.searchSingleFieldOr();
ffse.searchSingleFieldOrAnd();
ffse.searchTwoFieldsAnd();
ffse.searchTwoFieldsOr(); ffse.logout();
}
}
------------------------------------------------------------------
Example Repository
Structure
These examples are using a very simple MDM Repository ApiSampleRepositry, which is based on a main table called Products and a flat lookup table Manufacturers. Here are the details:
Products table:
The Manufacturer field references the Manufacturers table.
Manufacturers table:
Contents
The repository was loaded with this XML file:
------------------------------------------------------------------
<?xml
version="1.0" encoding="UTF-8"?>
<Products>
<Product>
<Name>Clear Safety Goggles</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Key-Ring Standard Tip
Screwdriver</Name>
<Manufacturer>Proto®</Manufacturer>
</Product>
<Product>
<Name>Wooden Handle Claw Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Wooden Handle Rip Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Wooden Handle Claw Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Wooden Handle Framing Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Wooden Handle Framing Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Wooden Handle Rip Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Wooden Handle Framing Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Wooden Handle Framing Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Wooden Handle Framing Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Wood Handle Builder's Series Framing
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Wood Handle Builder's Series Framing
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Wooden Handle Framing Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Wooden Handle Framing Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Polyurethane Deadblow Sledge
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Polyurethane Deadblow Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Polyurethane Deadblow Sledge
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Slimline Polyurethane Deadblow
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Polyurethane Deadblow Sledge
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Polyurethane Deadblow Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Slimline Polyurethane Deadblow
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Polyurethane Deadblow Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Slimline Polyurethane Deadblow
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Fast-Drying Polyurethane Paint</Name>
<Manufacturer>Minwax Company</Manufacturer>
</Product>
<Product>
<Name>Fast-Drying Polyurethane Paint</Name>
<Manufacturer>Minwax Company</Manufacturer>
</Product>
<Product>
<Name>Fast-Drying Polyurethane Paint</Name>
<Manufacturer>Minwax Company</Manufacturer>
</Product>
<Product>
<Name>Polyurethane Deadblow Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Polyurethane Deadblow Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Polyurethane Mallet</Name>
<Manufacturer>Vaughan & Bushnell Mfg.
Co.</Manufacturer>
</Product>
<Product>
<Name>Standard Fluted Phillips® Tip
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Standard Fluted Phillips® Tip
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Standard Fluted Light-Blade/Cabinet Tip
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Standard Fluted Standard-Blade/Standard Tip
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Standard Fluted Light-Blade/Cabinet Tip
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Standard Fluted Standard-Blade/Standard Tip
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>2-pc Standard Fluted Screwdriver
Set</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>BexT Standard Gloves</Name>
<Manufacturer>Best Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>BexT Standard Gloves</Name>
<Manufacturer>Best Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>BexT Standard Gloves</Name>
<Manufacturer>Best Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>BexT Standard Gloves</Name>
<Manufacturer>Best Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Phillips® Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Phillips® Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Phillips® Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Phillips® Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Phillips® Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Phillips® Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Pozidriv® Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Pozidriv® Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Pozidriv® Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Pozidriv® Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Phillips® Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Phillips® Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Phillips® Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT Square-Head
Style Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Standard Fluted Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Standard Fluted Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Standard Fluted Light Blade/Cabinet Tip
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Standard Fluted Light Blade/Cabinet Tip
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Phillips® Standard Fluted Tip
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Phillips® Standard Fluted Tip
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Handyman® Standard Stubby
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Contractor GradeT Vinyl-Grip Phillips® Tip
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Contractor GradeT Vinyl-Grip Phillips® Tip
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Contractor GradeT Vinyl-Grip Phillips® Tip
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Standard-Blade/Standard Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Standard-Blade/Standard Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Square-Blade/Standard Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Square-Blade/Standard Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Cushion-Grip Standard Tip
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Cushion-Grip Standard Tip
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Cushion-Grip Standard Tip
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Cushion-Grip Standard Tip
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Contractor GradeT Vinyl-Grip Stubby/Standard Tip
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Contractor GradeT Vinyl-Grip
Standard-Blade/Standard Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Contractor GradeT Vinyl-Grip
Standard-Blade/Standard Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Contractor GradeT Vinyl-Grip
Standard-Blade/Standard Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Contractor GradeT Vinyl-Grip
Standard-Blade/Standard Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Contractor GradeT Vinyl-Grip Square-Blade/Standard
Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Contractor GradeT Vinyl-Grip Square-Blade/Standard
Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Contractor GradeT Vinyl-Grip Square-Blade/Standard
Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Contractor GradeT Vinyl-Grip Light-Blade/Cabinet
Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Contractor GradeT Vinyl-Grip Light-Blade/Cabinet
Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Contractor GradeT Vinyl-Grip Light-Blade/Cabinet
Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT Pocket
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT Pocket
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT Pocket
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Extra-Light-Blade/Cabinet Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Extra-Light-Blade/Cabinet Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Extra-Light-Blade/Cabinet Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Extra-Light-Blade/Cabinet Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Extra-Light-Blade/Cabinet Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Extra-Light-Blade/Cabinet Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Standard-Blade/Standard Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Standard-Blade/Standard Tip
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Standard-Blade/Standard Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Standard-Blade/Standard Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Standard-Blade/Standard Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Standard-Blade/Standard Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Standard-Blade/Standard Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Square-Blade/Standard Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Square-Blade/Standard Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Square-Blade/Standard Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Square-Blade/Standard Tip
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Square-Blade/Standard Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Standard-Blade/Cabinet Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Standard-Blade/Cabinet Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Standard-Blade/Cabinet Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Standard-Blade/Cabinet Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>100 Plus® Contractor GradeT
Standard-Blade/Cabinet Tip Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Contractor GradeT 6-pc Combination Screwdriver
Set</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Contractor GradeT 8-pc Combination Screwdriver
Set</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Contractor GradeT Vinyl Coated Blade
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>FatmaxT Standard Tip
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>FatmaxT Standard Tip
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>FatmaxT Standard Tip
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>FatmaxT Standard Tip
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>FatmaxT Standard Tip
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>FatmaxT Standard Tip
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Standard Lock Ring Pliers</Name>
<Manufacturer>The Armstrong Tool
Comp.</Manufacturer>
</Product>
<Product>
<Name>Fluted Standard Tip
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Fluted Standard Tip
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Fluted Stubby/Standard Tip
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Fluted Standard Tip
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Fluted Standard Tip
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Fluted Standard Tip
Screwdriver</Name>
<Manufacturer>Stanley®</Manufacturer>
</Product>
<Product>
<Name>Specialty Polyurethane Coating</Name>
<Manufacturer>Rust-Oleum
Corporation</Manufacturer>
</Product>
<Product>
<Name>Specialty Polyurethane Coating</Name>
<Manufacturer>Rust-Oleum
Corporation</Manufacturer>
</Product>
<Product>
<Name>Specialty Polyurethane Coating</Name>
<Manufacturer>Rust-Oleum
Corporation</Manufacturer>
</Product>
<Product>
<Name>Stubby Standard Tip Square-Shank
Screwdriver</Name>
<Manufacturer>Proto®</Manufacturer>
</Product>
<Product>
<Name>Standard Tip Round-Shank
Screwdriver</Name>
<Manufacturer>Proto®</Manufacturer>
</Product>
<Product>
<Name>ProtoblackT Standard Tip Round-Shank
Screwdriver</Name>
<Manufacturer>Proto®</Manufacturer>
</Product>
<Product>
<Name>Standard Tip Round-Shank
Screwdriver</Name>
<Manufacturer>Proto®</Manufacturer>
</Product>
<Product>
<Name>ProtoblackT Standard Tip Round-Shank
Screwdriver</Name>
<Manufacturer>Proto®</Manufacturer>
</Product>
<Product>
<Name>Standard Tip Round-Shank
Screwdriver</Name>
<Manufacturer>Proto®</Manufacturer>
</Product>
<Product>
<Name>Standard Tip Round-Shank
Screwdriver</Name>
<Manufacturer>Proto®</Manufacturer>
</Product>
<Product>
<Name>Standard Tip Square-Shank
Screwdriver</Name>
<Manufacturer>Proto®</Manufacturer>
</Product>
<Product>
<Name>ProtoblackT Standard Tip Square-Shank
Screwdriver</Name>
<Manufacturer>Proto®</Manufacturer>
</Product>
<Product>
<Name>Standard Tip Square-Shank
Screwdriver</Name>
<Manufacturer>Proto®</Manufacturer>
</Product>
<Product>
<Name>Standard Tip Square-Shank
Screwdriver</Name>
<Manufacturer>Proto®</Manufacturer>
</Product>
<Product>
<Name>Standard Tip Square-Shank
Screwdriver</Name>
<Manufacturer>Proto®</Manufacturer>
</Product>
<Product>
<Name>Standard Tip Square-Shank
Screwdriver</Name>
<Manufacturer>Proto®</Manufacturer>
</Product>
<Product>
<Name>ProtoblackT Standard Tip Square-Shank
Screwdriver</Name>
<Manufacturer>Proto®</Manufacturer>
</Product>
<Product>
<Name>Standard Tip Square-Shank
Screwdriver</Name>
<Manufacturer>Proto®</Manufacturer>
</Product>
<Product>
<Name>ProtoblackT Standard Tip Square-Shank
Screwdriver</Name>
<Manufacturer>Proto®</Manufacturer>
</Product>
<Product>
<Name>Standard Tip Square-Shank
Screwdriver</Name>
<Manufacturer>Proto®</Manufacturer>
</Product>
<Product>
<Name>ProtoblackT Standard Tip Square-Shank
Screwdriver</Name>
<Manufacturer>Proto®</Manufacturer>
</Product>
<Product>
<Name>Standard Tip Square-Shank
Screwdriver</Name>
<Manufacturer>Proto®</Manufacturer>
</Product>
<Product>
<Name>6-pc Standard Screwdriver Set</Name>
<Manufacturer>Proto®</Manufacturer>
</Product>
<Product>
<Name>4-pc Standard Screwdriver Set</Name>
<Manufacturer>Proto®</Manufacturer>
</Product>
<Product>
<Name>6-pc Standard Screwdriver Set</Name>
<Manufacturer>Proto®</Manufacturer>
</Product>
<Product>
<Name>6-pc ProtoblackT Standard Screwdriver
Set</Name>
<Manufacturer>Proto®</Manufacturer>
</Product>
<Product>
<Name>Polyurethane Deadblow Sledge
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Standard Tip Screw Starter</Name>
<Manufacturer>Proto®</Manufacturer>
</Product>
<Product>
<Name>Standard Tip Screw Starter</Name>
<Manufacturer>Proto®</Manufacturer>
</Product>
<Product>
<Name>Standard Tip Screw Starter</Name>
<Manufacturer>Proto®</Manufacturer>
</Product>
<Product>
<Name>Phillips/Standard Tip Screw
Starter</Name>
<Manufacturer>Proto®</Manufacturer>
</Product>
<Product>
<Name>Slimline Polyurethane Deadblow
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Leather Grip Asian Pattern Claw
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Leather Grip Asian Pattern Claw
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Asian Pattern Claw
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Asian Pattern Claw
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Crack/Drilling
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Crack/Drilling
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Crack/Drilling
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Long-Handle Crack/Drilling
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>BexT Standard Gloves</Name>
<Manufacturer>Best Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>BexT Standard Gloves</Name>
<Manufacturer>Best Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Deadhead® Black Rubber
Mallet</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Deadhead® Gray Rubber
Mallet</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Deadhead® Black Rubber
Mallet</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Deadhead® Gray Rubber
Mallet</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Leather Grip German Pattern
Schlosserhammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Leather Grip Claw Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Leather Grip Rip Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Leather Grip Light-Weight Rock Pick
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Leather Grip Light-Weight Rock Pick
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Leather Grip Claw Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Leather Grip Rip Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Leather Grip Claw Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Leather Grip Rip Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Leather Grip German Pattern
Latthammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Leather Grip German Pattern
Latthammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Leather Grip German Pattern
Latthammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Leather Grip German Pattern
Latthammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Leather Grip English Pattern Claw
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Leather Grip English Pattern Rip
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Leather Grip English Pattern Claw
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Leather Grip English Pattern Claw
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip German Pattern
Schlosserhammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Drywall Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Bricklayer/Mason's
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Ball Peen
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Claw Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Chisel Edge Rock Pick
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Ripping Claw
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Leather Grip Light-Weight Rock Pick
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Leather Grip Light-Weight Rock Pick
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Pointed Tip Rock Pick
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Bricklayer/Mason's
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Ball Peen
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Claw Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Ripping Claw
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Drywall Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Bricklayer/Mason's
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Bricklayer/Mason's
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Claw Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Chisel Edge Rock Pick
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Ripping Claw
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Framing
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Framing
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Framing
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Framing
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Framing
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Pointed Tip Rock Pick
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Framing
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Framing
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Framing
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Framing
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip German Pattern
Latthammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip German Pattern
Latthammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip German Pattern
Latthammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip German Pattern
Latthammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Long-Handle Pointed-Tip Rock Pick
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Bricklayer/Mason's
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Bricklayer/Mason's
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Ball Peen
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Chisel Edge Rock Pick
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Framing
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Framing
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Builder's Series Large-Face
Framing Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Builder's Series Large-Face
Framing Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip English Pattern Claw
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Framing
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Framing
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Carpenter's Hatchet</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip German Pattern
Schlosserhammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Framing
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Framing
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Ball Peen
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip German Pattern
Schlosserhammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Engineer's
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip German Pattern
Schlosserhammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip German Pattern Berliner Bricklayer
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip German Pattern Berliner Bricklayer
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip German Pattern
Schlosserhammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip German Pattern
Schlosserhammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Ball Peen
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Shingler's Hammer w/Replaceable Blade &
Gauge</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Shingler's Hammer w/Replaceable
Gauge</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Welding Chipping
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Leather Grip Pointed Tip Rock Pick
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Leather Grip German Pattern
Schlosserhammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Leather Grip German Pattern
Schlosserhammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Leather Grip German Pattern
Schlosserhammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip HammertoothT
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip HammertoothT
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Cross Peen Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip HammertoothT
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip HammertoothT
Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Cross Peen Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Cross Peen Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Cross Peen Hammer</Name>
<Manufacturer>Estwing Manufacturing
Company</Manufacturer>
</Product>
<Product>
<Name>Nylon-Vinyl Grip Engineer's
Hammer</Name>
<Manufactu</img></img></img></img></img></p>
------------------------------------------------------------------