c# wpf free pdf viewer : Export pages from pdf acrobat SDK application API wpf html .net sharepoint ATGCommProgGuide7-part2151

ATG  C om mer ce P ro g ramm in g   Gui d e 
53  
4  -  Us i n g  an d  E xt en d i n g  t h e  Pro d u ct  C at al o g  
μ
Property 
How it is 
set 
Description 
relatedProductGroup 
ACC 
Name of the content group that contains the 
list of 
dynamicRelatedProducts
relatedProducts 
ACC 
List of all products that are children of this 
product; a merge of 
fixedRelatedProducts,
dynamicRelatedProducts,
and the 
productInfo
property 
catalogsRelatedProducts
. Read-only. 
siteIds 
CMS or 
derived 
If you are using ATG’s multisite feature, the list 
of IDs for the sites to which the product 
belongs. On a production server, this is 
calculated by the CMS; on an asset 
management server, it is derived from a union 
of the 
siteIds
of the parent categories of the 
product. 
smallImage 
ACC 
Small image associated with the product. 
startDate 
ACC 
Date this product becomes available, if a 
collection filter is implemented to use this 
property. See the ATG Personalization 
Programming Guide for information on 
filtering. 
template 
ACC 
JSP used to display this product. 
thumbnailImage 
ACC 
Thumbnail image associated with this 
product. 
type 
Not used 
out-of-the-
box 
Provided for subclassing purposes; use to 
indicate if an item belongs to the superclass 
or a subclass. Read-only. 
version 
Implicitly 
set by GSA 
Integer that is incremented automatically 
each time the product is updated; used to 
prevent version conflict. Read-only. 
productInfo Properties 
productInfo
objects are optional. You can create 
productInfo
objects using the ACC if you wish to 
keep catalog-specific information for a product. 
Export pages from pdf acrobat - SDK application API:C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Easy to Use C# Code to Extract PDF Pages, Copy Pages from One PDF File and Paste into Others
www.rasteredge.com
Export pages from pdf acrobat - SDK application API:VB.NET PDF Page Extract Library: copy, paste, cut PDF pages in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Detailed VB.NET Guide for Extracting Pages from Microsoft PDF Doc
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
54  
4  -  Us in g   and   Ex t en d in g   t he  P ro d uct   C at al og  
Property 
How it is 
set 
Description 
catalogsRelatedProdu
cts 
ACC 
Related products that are only shown to users 
of the catalog that maps to this 
productInfo
version 
Implicitly set 
by GSA 
Integer that is incremented automatically 
each time the product is updated; used to 
prevent version conflict. Read-only. 
Defining Relationships between Categories and Products 
The SQL Repository allows you to define properties that return repository items. The value of one of these 
items is the object ID. The SQL Repository can transform the ID into the repository item and return the 
actual object. This mechanism enables you to define the relationship between categories and products in 
many ways. 
Most properties of the SQL Repository return values retrieved from the database. The SQL Repository also 
provides the ability to compute values of certain properties through Java code. Properties computed 
dynamically are called user-defined properties. This mechanism is used for the default definitions of 
several properties of the category and product items, to allow for dynamic definition of item relationships. 
For more information about user-defined properties, see the SQL Repository Item Properties chapter of the 
ATG Repository Guide
Deriving the childCategories and childProducts Properties 
The hierarchical relationships between categories and products are determined by their properties. The 
childCategories
and 
childProducts
properties of a category define the list of categories and 
products that are children of the category. 
The 
childCategories
property is a list of all categories that are children of the category. This is a user-
defined property that is computed by the 
atg.repository.NotEmptyChooserPropertyDescriptor
class, which sets the value of the property by merging the lists of categories in the 
fixedChildCategories
and 
dynamicChildCategories
properties. In the repository definition file, the 
definition of the 
childCategories
property looks like this: 
<property name="childCategories" 
property-type="atg.repository.NotEmptyChooserPropertyDescriptor" 
data-type="list" component-item-type="category" writable="false" 
queryable="false"> 
<attribute name="properties" 
value="fixedChildCategories,dynamicChildCategories"/> 
<attribute name="merge" value="true"/> 
</property> 
This structure enables a page developer to refer to one named property (in this case, 
childCategories
whose value is assembled from different sources. 
SDK application API:C# PDF Converter Library SDK to convert PDF to other file formats
Able to export PDF document to HTML file. C#.NET can manipulate & convert standard PDF documents in other external third-party dependencies like Adobe Acrobat.
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
55  
4  -  Us i n g  an d  E xt en d i n g  t h e  Pro d u ct  C at al o g  
The 
fixedChildCategories
property is an explicit list of categories you specify. The 
dynamicChildCategories
property is a user-defined property that is computed by the 
atg.repository.GroupMembersPropertyDescriptor
class. This class looks at the 
childCategoryGroup
property, which specifies the name of a content group, retrieves the list of 
categories in that content group, and sets the value of 
dynamicChildCategories
to that list. 
This mechanism enables you to use business rules to determine the list of child categories. For example, 
you can create a content group that consists of categories that share a particular attribute, and set the 
value of 
childCategoryGroup
to the name of this content group. 
The 
childProducts
property of the category is computed in the same way, using the 
fixedChildProducts
dynamicChildProducts
, and 
childProductGroup
properties. 
For example, suppose your site has a category called Hats, and some of the hats are available all year, 
while others are seasonal. You could set the 
fixedChildProducts
property of the Hats category to a list 
of the hats that are available all year. You could also create a content group called Seasonal Hats, which 
contains a list of hats that changes from season to season, and set the 
childProductGroup
property of 
the Hats category to the name of this content group. 
When a user accesses a page that refers to 
childProducts
, ATG computes the current value of 
childProducts
as follows: 
1.
Finds the current set of products in the content group specified in 
childProductGroup
, and sets 
dynamicChildProperties
to that set of products. 
2.
Sets 
childProducts
to the merge of the set of products in 
dynamicChildProducts
and the set of products in 
fixedChildProducts
For information about creating content groups, see the ATG Personalization Guide for Business Users
Deriving the relatedCategories and relatedProducts Properties 
In addition to the 
childCategories
property, the category item has a property named 
relatedCategories
. This property defines a list of categories that are related to the category, but which 
do not form a hierarchy with it. Related categories are useful for cross-selling. For example, if the Fruit 
category has Vegetables as a related category, you can use this relationship to display a link to the 
Vegetables category on the Fruit page. 
The 
relatedCategories
property is a user-defined property that is derived in a similar way to the 
childCategories
property. The 
relatedCategories
property is computed by the 
atg.repository.NotEmptyChooserPropertyDescriptor
class, which sets the value of the property 
by merging the lists of categories in the 
fixedRelatedCategories
and 
dynamicRelatedCategories
properties. The 
dynamicRelatedCategories
property is also a user-defined property, which the 
atg.repository.GroupMembersPropertyDescriptor
class computes by retrieving the list of 
categories in the content group specified by the 
relatedCategoryGroup
property. 
The product item has a 
relatedProducts
property that is computed in the same way, using the 
fixedRelatedProducts
dynamicRelatedProducts
, and 
relatedProductGroup
properties. 
ATG  C om merce  P ro gra mm in g  G ui d e 
56  
4  -  Us in g   and   Ex t en d in g   t he  P ro d uct   C at al og  
Removing the SQL Repository Definitions of User-Defined Properties 
If you do not plan to use dynamically related products or categories on your commerce site, you can 
remove these properties from the repository definition. System performance improves when you simplify 
the data model to use only fixed relationships. For example, if all categories are explicitly related, you can 
remove the definitions of the 
childCategories
dynamicChildCategories
, and 
childCategoryGroup
properties, and just use the 
fixedChildCategories
property, which you can 
then rename as 
childCategories
Specifying Template Pages for Categories and Products 
You can display categories and products on your commerce site using JSPs. Rather than requiring you to 
create a separate JSP for each page on your commerce site, you can to create template pages that fill in 
the product’s properties dynamically. You can then specify which template to use as a property of the 
category or product. This enables you to display any item without knowing in advance what template the 
item uses. 
For example, the following portion of a JSP uses a 
CategoryLookup
servlet bean to retrieve the current 
category, and a 
ForEach
servlet bean to create links to all of the child products of the category. The URL 
for each link is found by looking at the 
template.url
property of the product being linked to. 
<dsp:droplet name="/atg/commerce/catalog/CategoryLookup"> 
<dsp:param param="itemId" name="id"/> 
<dsp:oparam name="output"> 
<dsp:droplet name="/atg/dynamo/droplet/ForEach"> 
<dsp:param param="element.childProducts" name="array"/> 
<dsp:oparam name="outputStart"> 
<p><b>Child Products:</b> 
</dsp:oparam> 
<dsp:oparam name="output"> 
<dsp:getvalueof var="templateURL" param="element.template.url"/> 
<dsp:a href="${templateURL}"> 
<dsp:valueof param="element.displayName"/> 
<dsp:param param="element.repositoryId" name="itemId"/> 
</dsp:a> 
</dsp:oparam> 
</dsp:droplet> 
</dsp:oparam> 
</dsp:droplet> 
For information about the 
CategoryLookup
and 
ProductLookup
servlet beans, see the Catalog 
Navigation and Searching chapter of the ATG Commerce Guide to Setting Up a Store
Media Properties 
Media elements such as images and JSPs can be associated with a category or product. Both item types 
have a 
template
property, as well as three image properties: 
thumbnailImage
smallImage
, and 
largeImage
. In addition to the explicit properties that store media, a Map property called 
ATG  C om mer ce P ro g ramm in g   Gui d e 
57  
4  -  Us i n g  an d  E xt en d i n g  t h e  Pro d u ct  C at al o g  
auxiliaryMedia
allows you to store any number of other media elements. You can also extend the 
category or product item to include additional properties, as discussed in the Extending the Category and 
Product Item Types section. 
Associating Products with SKUs 
The 
childSKUs
property of a product is a list of all the SKUs that are children of the product. A product 
called Apples might have several different SKUs that represent different varieties of apples, such as 
McIntosh, Delicious, and Granny Smith. 
The product item also has a property named 
displayableSkuAttributes
, which you can use to specify 
a list of the SKU properties that can be displayed using the 
DisplaySkuProperties
servlet bean. For 
more information about this servlet bean, see the ATG Commerce Guide to Setting Up a Store
Extending the Category and Product Item Types 
By default, there is only one type of category and one type of product in the catalog. These item types are 
sufficient for many commerce sites. However, you may find you need to extend the catalog by creating 
additional properties for these item types, or by creating additional item types. 
To create additional properties for an item type, you can either add new tables to the schema or modify 
the database schema to add columns to the database tables for that item type. 
Note: Creating separate tables reduces the chance of complications during future ATG upgrades; 
however, it can negatively affect performance. If you have a large product catalog, performance may be 
of more importance. 
After altering your database, make the corresponding additions to the repository definition file. For 
greater flexibility, you can create new item types. There are two ways to create a new item type: 
Create an entirely new type, whose definition is independent of existing types. 
Create an item type that is a sub-type of an existing type. A sub-type inherits the 
properties from its parent item type, and can include additional properties that are 
unique to the sub-type. 
The default category and product item definitions include an enumerated property named 
type,
which 
you can use to create item sub-types: 
<property name="type" data-type="enumerated" column-name="product_type" 
writable="false" hidden="true"> </property> 
To create a product sub-type, add an option value to the product 
type
enumeration: 
<property name="type" data-type="enumerated" column- 
name="product_type" writable="false" hidden="true"> 
<option value="option1"/> 
ATG  C om merce  P ro gra mm in g  G ui d e 
58  
4  -  Us in g   and   Ex t en d in g   t he  P ro d uct   C at al og  
<option value="option2"/> 
</property> 
Then add a new item-descriptor to the repository definition file, and set its super-type attribute to the 
name of the parent item type: 
<item-descriptor name="item-name" super-type="type" sub-type- 
value="option1"> 
<!-- properties --> 
</item-descriptor> 
Then add your new sub-type to the appropriate property of the 
/atg/commerce/CatalogTools
component: 
catalogFolderItemTypes=catalogFolder 
catalogItemTypes=catalog 
productItemTypes=product 
categoryItemTypes=category 
SKUItemTypes=sku,configurableSku 
For example, if you create a new subtype called customCategory, add the following to the 
/atg/commerce/CatalogTols component:: 
categoryItemTypes+=customCategory 
The new item type inherits all of the defined properties of the parent item type, and can add properties 
not defined for the parent item type. Inheritance is a very convenient mechanism for creating new item 
types, especially for creating types that are closely related to each other. However, you should avoid using 
too many levels of inheritance. Queries against items whose properties span multiple sub-types may 
require joins of all of the tables in the hierarchy. If you use these kinds of queries, keep in mind that 
performance decreases as the number of tables joined increases. 
For more information, see the Item Descriptor Inheritance section of the SQL Repository Data Models 
chapter of the ATG Repository Guide
SKU Items and SKU Links 
A product is a navigational end-point in the catalog. However, customers do not actually purchase the 
product; they purchase a SKU (stock keeping unit). A product can have several different SKUs associated 
with it, representing varieties, sizes, and colors. 
The properties of a SKU are used for display purposes, similar to products and category properties. The 
properties are also used to integrate with other ATG Commerce systems, such as pricing and fulfillment. 
ATG  C om mer ce P ro g ramm in g   Gui d e 
59  
4  -  Us i n g  an d  E xt en d i n g  t h e  Pro d u ct  C at al o g  
A SKU usually represents an indivisible unit that can be purchased. However, the catalog includes a SKU 
link item type that you can use to create SKU bundles, which are virtual SKUs that are composed of several 
other SKUs. Bundles allow the product catalog to offer a SKU that can be purchased as a single item, 
although it is treated as multiple items in fulfillment. 
You can also create SKUs as configurable if they have components that might vary depending on 
customer preferences, such as with computers, which could include different memory or hard drives, or a 
car with optional features. See the Configurable SKUs section of this chapter. 
SKU Properties 
The following table describes the SKU item properties in the catalog: 
Property 
How it is 
set 
Description 
auxiliaryMedia 
ACC 
Additional media to be displayed with the SKU. 
bundleLinks 
ACC 
List of SKU links that make up the SKU bundle; if 
null, SKU is not a bundle. 
catalogs 
CMS or 
Derived 
In development this is the Collective Union of 
catalogs for each product in 
parentProducts
. This 
is not queryable. In production, this value is set by 
the 
CatalogMaintenanceService
. Used to 
determine if an end user has permission to view this 
SKU. 
catalogsReplacement
Products 
Derived 
Replacement products that are only shown to users 
of a particular catalog. Read-only. 
creationDate 
Implicitly 
set by 
GSA 
Date the SKU is created. Read-only. 
description 
ACC 
Short descriptive text for display with the SKU. 
displayName 
ACC 
Name used for the SKU on the site. Required.
dynamicAttributes 
ACC 
Additional attributes of the SKU. 
endDate 
ACC 
Date the SKU is no longer available, if a collection 
filter is implemented to use this property. See the 
ATG Personalization Programming Guide for 
information on filtering. 
fixedReplacementPro
ducts 
ACC 
Static list of products related to this SKU. 
fulfiller 
ACC 
Fulfiller who will ship the item. 
ATG  C om merce  P ro gra mm in g  G ui d e 
60  
4  -  Us in g   and   Ex t en d in g   t he  P ro d uct   C at al og  
id 
ACC 
Repository ID for this SKU. Can be set in ACC upon 
item creation, otherwise implicitly set by GSA. 
largeImage 
ACC 
Large image associated with the SKU. 
listPrice 
ACC 
Default price of the SKU before any discounts or 
promotions. 
onSale 
ACC 
Boolean property that indicates if the item is on sale. 
parentProducts
implicit 
GSA 
reuse 
Reuses the same table as 
product
.
childSkus
Therefore adding a SKU to a product’s child list will 
automatically update the 
parentProducts
property.  
replacementProducts 
derived 
Products to suggest as replacements if the item is 
out of stock. Read-only. 
salePrice 
ACC 
Price of the SKU if 
onSale
property is 
true
siteIds 
CMS or 
derived 
If you are using ATG’s multisite feature, the IDs of 
the sites to which the SKU belongs. On the 
production server, this is calculated by the CMS; on 
the asset management server, it is derived from the 
union of the 
siteIds
of the SKU’s parent products.  
skuInfos 
ACC 
Map from 
SKU
to a 
SKUInfo
.  
smallImage 
ACC 
Small image associated with the SKU. 
startDate 
ACC 
Date on which the 
SKU
is available, if a collection 
filter is implemented to use this property.  
template 
ACC 
JSP template used to display the SKU. 
thumbnailImage 
ACC 
Thumbnail image associated with the SKU. 
type 
Not used 
out-of-
the-box 
Provided for subclassing purposes; use to indicate if 
an item belongs to the superclass or a subclass. 
Read-only. 
version 
Implicitly 
set by 
GSA 
Integer that is incremented automatically each time 
the SKU is updated; used to prevent version conflict. 
Read-only. 
wholesalePrice 
ACC 
Wholesale price of the SKU. 
SKUInfo Properties 
You can create 
SkuInfo
objects using the ACC if you wish to keep catalog-specific information for a SKU. 
ATG  C om mer ce P ro g ramm in g   Gui d e 
61  
4  -  Us i n g  an d  E xt en d i n g  t h e  Pro d u ct  C at al o g  
Property 
How it is 
set 
Description 
catalogsRepla
cementProduct
ACC 
These are replacement products that are only shown to 
users of the catalog that maps to this 
SKUInfo
version 
Implicitly 
set by 
GSA 
Integer that is incremented automatically each time the 
SKUInfo
is updated; used to prevent version conflict. Read-
only. 
SKU Link Properties 
The following table describes the SKU link properties in the product catalog: 
Property 
Description 
creationDate 
Date this SKU link was created. 
description 
Short descriptive text for display with this SKU link. 
displayName 
Name used for the SKU link on the site.
endDate 
Date this SKU link will no longer be available, if a collection filter is 
implemented to use this property.  
item 
SKU that is being bundled. 
quantity 
Quantity of the SKU specified by the 
item
property. 
startDate 
Date on which this SKU link becomes available, if a collection filter is 
implemented to use this property.  
version 
Integer that is incremented automatically each time the SKU link is 
updated; used to prevent version conflict. 
Using SKU Media Properties 
The SKU item has the same set of media properties that categories and products have: 
template
thumbnailImage
smallImage
largeImage
, and 
auxiliaryMedia
. Your sites may not need all of these 
properties. For example, at most commerce sites, each SKU would not be displayed in its own template 
page. More commonly, a product’s template page displays all of the child SKUs of the product. 
Categories, products, and SKUs all have the same set of media properties in order to give you as much 
flexibility as possible. Depending on how your sites are organized, you might want to associate certain 
media items with products rather than SKUs, or vice versa. For example, if SKUs are differentiated by a 
visible characteristic such as color, you might want to have different images for each SKU, rather than 
ATG  C om merce  P ro gra mm in g  G ui d e 
62  
4  -  Us in g   and   Ex t en d in g   t he  P ro d uct   C at al og  
having a single set of images associated with the parent product. If each product has only one SKU, you 
could even change the repository definition to remove the product item type entirely. 
Using SKU Price Properties 
The SKU item has four price properties: 
wholesalePrice
listPrice
onSale
, and 
salePrice
. These 
list and sale price calculators use these properties in the Pricing Engine. 
ListPrice
is required, but the 
wholesalePrice
and 
salePrice
can be undefined. 
WholesalePrice
is 
not used by the pricing calculators. When the sale price is defined and 
onSale
is set to 
true
, the pricing 
calculators assume the SKU is on sale and adjust the price. Placing the prices at the SKU level allows each 
individual SKU to have its own price, but adds complexity to pricing administration. If your product 
catalog does not need to price each SKU separately, then the 
listPrice
salePrice
, and 
onSale
properties can be moved to the product item type to simplify maintenance. If the price properties are 
moved, the list and sale price calculators will require a small change in configuration. For more 
information, see the Commerce Pricing Calculators chapter of this manual. 
Using the SKU Fulfiller Property 
The fulfillment engine uses the fulfiller property to determine how to manage the fulfillment of the 
purchase. This property is an enumerated value. By default, it defines a 
HardgoodFulfiller
. For more 
information, see the Configuring the Order Fulfillment Framework chapter. 
Creating SKU Bundles 
The 
bundleLinks
property designates a SKU as a bundle, rather than an individual item. The 
bundleLinks
property is a list whose elements are of another item type called a SKU link. If the SKU is not 
a bundle, then 
bundleLinks
is null. 
Each SKU link includes a SKU and a quantity. For example, a SKU link might represent three red shirts. A 
SKU bundle can include any number of SKU links. For example, a SKU bundle might consist of two SKU 
links, one that represents three red shirts and another that represents one black hat. Note that the 
bundleLinks
property of the SKU item holds only SKU links, not SKU items. However, you can create a 
SKU link whose quantity is 1, and include that SKU link in the 
bundleLinks
list. 
When the fulfillment system recognizes that a SKU is a bundle, it fulfills the purchase by performing the 
fulfillment of each quantity of items defined in the SKU link. For more information, see the Configuring 
the Order Fulfillment Framework chapter. 
Extending the SKU Item Type 
The base SKU definition does not include any configuration properties such as size, color, etc. Depending 
on the requirements of your sites, you may be able to differentiate the SKUs for a product through the 
description properties of the SKUs. For example, if the SKUs are differentiated only by color, the 
description of each SKU could mention the color. However, this approach can become awkward if there 
are several different configuration variables. 
Documents you may be interested
Documents you may be interested