Taxonomy API and Sample Project

Completed Posted Nov 22, 2009 Paid on delivery
Completed Paid on delivery

Create a DLL in VB.NET that allows one to import, export, add, modify, delete, get, getCount, getList, and getDepth to manage a taxonomy (all data will be stored in a database).

Also, create a separate web project that populates a TreeView control with our Taxonomy data in VB.NET using our new DLL.

Documentation:

1. Explain to me how you built the DLL (and if I wanted to change the "MyCompany" assembly; how that works).

2. If there is a special process to releasing the DLL ... then please explain that as well.

## Deliverables

Taxonomy Project

Database Layout:

SiteID (INT)

NodeID (BIGINT) [Primary Key]

ParentNodeID (INT)

NodeItem (NVARCHAR(255))

**Sample Usage**:

[url removed, login to view](...)

[url removed, login to view](filepath, StartNode)

[url removed, login to view](filepath, StartNode, action)

[url removed, login to view](Item, StartNode)

[url removed, login to view](NodeID, Item)

[url removed, login to view](NodeID, force)

[url removed, login to view] (NodeID)

[url removed, login to view] (NodeID, subcount|allcount)

[url removed, login to view] (NodeID, Items|AsIDs, all)

[url removed, login to view] (NodeID)

**Description

**

Create a DLL in VB.NET similar to the assembly described above (under 'Sample Usage') that allows one to import, export, add, modify, delete, and get, getcount, getList, getDepth nodes (storing the information in a SQL database; see table description).

Second, create a web project that uses this DLL to populate a TreeView control in VB.NET

**Note**: The connection string will be placed in the [url removed, login to view] file and you will need to use the following:

Public Shared

conn As NewSqlConnection([url removed, login to view]("ConnectionString").ToString)? ?

**[url removed, login to view]

**

<connectionStrings>

? ? ? ? <add name="ConnectionString" connectionString="Data Source=127.0.0.1;Initial Catalog=DATABASE;Persist Security Info=True;UserID=;Password="providerName="[url removed, login to view]"/> </connectionStrings>

**[url removed, login to view](filepath, *StartNode*****)

** *filepath -* The import method will open an XML file at a specified filepath and load each of the nodes and subnodes into the database table, Taxonomy, by SiteID.

*StartNode -? *

An optional parameter and if specified then it becomes the root node (ParentNodeID) and imported data falls under that node.

**XML Structure**:

<taxonomy>

? <nodes>

? ? ? <node>...</node>

? ? ? <node>...</node>

? ? ? <nodes>

? ? ? ? ? <node>...</node>

? ? ? </nodes>

? </nodes>

</taxonomy>

**Sample**:

<?xml version="1.0" encoding="ISO-8859-1" ?>

<Taxonomy SiteID="1">

? <nodes>

? ? ? <node>Departments</node>

? ? ? ? ? <nodes>

? ? ? ? ? ? ? <node>Marketing</node>

? ? ? ? ? ? ? <node>Human Resources</node>

? ? ? ? ? ? ? <node>IT</node>

? ? ? ? ? ? ? ? ? <nodes>

? ? ? ? ? ? ? ? ? ? ? <node>Desktop Support</node>

? ? ? ? ? ? ? ? ? ? ? <node>Research</node>

? ? ? ? ? ? ? ? ? ? ? <node>App Development</node>

? ? ? ? ? ? ? ? ? </nodes>

? ? ? ? ? ? ? <node>Sales</node>

? ? ? ? ? </nodes>

? ? ? ? <node>Customers</nodes>

? ? ? ? <node>Investors</nodes>

? ? ? ? ? ? <nodes>

? ? ? ? ? ? ? ? <node>Investor 1</node>

? ? ? ? ? ? ? ? <node>Investor 2</node>

? ? ? ? ? ? </nodes>

? ? </nodes>

</Taxonomy>

... The

first item under a <taxonomy> element can be either a <node> or <nodes> element

... <nodes> are typically nested beneath a parent <node> element.

... there is no limit as to the number of nestings inside an XML file

... a root node (not specified) sets ParentNodeID=0

**Imported XML would be similar to this in the database:

**

SiteID, NodeID, ParentNodeID, NodeItem

1, 1, 0, Department

1, 2, 1, Marketing

1, 3, 1, Human Resources

1, 4, 1, IT

1, 5, 4, Desktop Support

1, 6, 4, Research

1, 7, 4, App Development

1, 8, 1, Sales

1, 9, 0, Customers

1, 10, 0, Investors

1, 11, 10, Investor 1

1, 12, 10, Investor 2

**[url removed, login to view](filepath, StartNode,**

***n*****)

** *filepath -* The export method will create/overwrite an XML file at a specified filepath

*StartNode* - This is the NodeID that will be exported (and included in the XML output)

*n*? -A optional parameter that describes the number of node levels immediately beneath StartNode? to display. if blank then? exports all sub-nodes recursively.

**Example, If StartNode=4 and n=1 ten:

**<?xml version="1.0" encoding="ISO-8859-1" ?>

<Taxonomy SiteID="1">

? <nodes>

? ? ? <node>Desktop Support</node>

? ? ? <node>Research</node>

? ? ? <node>App Development</node>

</Taxonomy>

**[url removed, login to view](Item,**

***StartNode*)

** *Item* - is a string of 255 characters or less

*StartNode* is an optional parameter that, when specified, adds this item as a child node to this start node

**[url removed, login to view](NodeID, Item)

***NodeID* is the specified itemID? to be? replaced

*Item* is the new 255 char or less string value that will replace the existing value.? Note: attempting to delete/modify a NodeID that doesn't exist should throw an exception.

**[url removed, login to view](NodeID,** ***force*****)

** *NodeID* - is the specified location where the item will be removed.

*force* - is an optional parameter as boolean value that is set to false by default.

**NOTE:

**If NodeID is also found as a ParentNodeID elsewhere in the database when attempting to delete? then an exception is thrown unless "

force" is set to "True".

**[url removed, login to view] (NodeID)

**

*NodeID -? *is the NodeID that will be retrieved from the database.

**[url removed, login to view] (NodeID, subcount|allcount****)**

*subcount* - this is the count of the number of nodes immediately beneath the selected NodeID and is returned as an integer.

*allcount* - this is the count of all nodes beneath the selected NodeID and is returned as an integer.

If neither are selected then "allcount" is assumed.

**[url removed, login to view] (NodeID,** **Items|AsIDs, all****)

** Returns the list of node items immediately under the NodeID (if 0 is defined then it gives all root nodes).

*Items*

- is an optional parameter that returns the taxonomy item names as an array (optional because it is also the default).

*AsIDs* - is an optional parameter that returns the taxonomy item IDs as an array.

*all* - is an optional parameter that returns all node items recursively.

**[url removed, login to view](NodeID)

**Returns the number of levels beneath this NodeID as an integer

Example (from Above) : [url removed, login to view](1) would return 2

**When this DLL is finished...

** copy this into the \BIN directory of a

second project and use this DLL to demonstrate populating a TreeView control

**The point of this project is to demonstrate how to populate a treeview control using our new API DLL.**

{USING CONTEXT}

If a user "right-clicks" on a node and selects "ADD" then a new node can be inserted at that level.

If a user "right-clicks" on a node and selects "RENAME" then the node at that level can be modified at that level.

If a user "right-clicks" on a node and selects "DELETE" then the node is removed (assume force = true)

If a user "right-clicks" on a node and selects "PROPERTIES" then open "[url removed, login to view]" and display the following information:

Node ID: <asp:label id="lblNodeID" runat="server"></asp:label>

Node : <asp:label id="lblNode" runat="server"></asp:label>

Depth : <asp:label id="lblDepth" runat="server"></asp:label>

When loading the "[url removed, login to view]()" into a TreeView ... make sure you demonstrate by populating the tree view using

*[url removed, login to view]()*

**Documentation**:

1. Please explain to me how you built the DLL (and if I wanted to change the "MyCompany" assembly; how that works).

2. If there is a special process to release ... then please explain that as well.

3. All source code for both projects are required

?

.NET ASP Engineering MySQL PHP Software Architecture Software Testing SQL Visual Basic Web Hosting Website Management Website Testing

Project ID: #2983566

About the project

2 proposals Remote project Active Nov 23, 2009

Awarded to:

clv

See private message.

$85 USD in 3 days
(12 Reviews)
4.0

2 freelancers are bidding on average $85 for this job

zakirahmouni

See private message.

$85 USD in 3 days
(0 Reviews)
0.0