c# wpf document viewer pdf : Combine pages of pdf documents into one Library application component .net windows winforms mvc ATGCommProgGuide36-part2114

ATG  C om mer ce P ro g ramm in g   Gui d e 
34 3  
16  -  C o n fi g u rin g   Pu rch as e  Pro ces s  S ervices  
μ
CreditCardProcessor 
PaymentManager 
External Credit 
Card Processing 
System 
CreditCardStatus
Custom 
Code 
CreditCardInfo
GiftCertificateProcessor
Gift Certificate 
Processing 
System 
GiftCertificateStatus
Custom 
Code 
GiftCertificateInfo
PaymentGroup 
StoreCreditProcessor 
StoreCredit 
Processing 
System 
StoreCreditStatus
Custom 
Code 
StoreCreditInfo
InvoiceRequestProcessor
InvoiceRequest 
Processing 
System 
InvoiceRequestStatus
Custom 
Code 
InvoiceRequestInfo
StoreCreditProcessor 
StoreCredit 
Processing 
System 
StoreCreditStatus
Custom 
Code 
StoreCreditInfo
Creating a New PaymentGroup 
The first step in creating and supporting a new 
StorePoints
payment method is to create a new 
PaymentGroup
named 
StorePoints
. The new 
PaymentGroup
allows you to distinguish 
StorePoints
from other payment groups and to store data relating to the store points system. The following code 
sample is an example of the 
StorePoints
PaymentGroup
package store.some.package; 
import atg.commerce.order.*; 
public class StorePoints extends PaymentGroupImpl 
public StorePoints() { 
public String getUserId() { 
return (String) getPropertyValue("userId"); 
Combine pages of pdf documents into one - Library application component: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
Combine pages of pdf documents into one - Library application component: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 
34 4  
16  -  C o n fi g uri n g  P u rch as e P ro ces s  Serv ices  
public void setUserId(String pUserId) { 
setPropertyValue("userId", pUserId); 
public int getNumberOfPoints() { 
return ((Integer) getPropertyValue("numberOfPoints")).intValue(); 
public void setNumberOfPoints(int pNumberOfPoints) { 
setPropertyValue("numberOfPoints", new Integer(pNumberOfPoints)); 
Implementing Processors for the New PaymentGroup 
As previously mentioned, the default payment pipelines are composed of two processors. The first 
processor aggregates the necessary information for performing the requested payment action (for 
example, CREDIT) and creates an 
XXXInfo
object (for example, 
CreditCardInfo
) for use in that action. 
The second processor actually performs the operation – authorizing, debiting, or crediting the 
appropriate payment method. For example, the 
creditCardProcessorChain
pipeline is composed of 
the 
CreateCreditCardInfo
processor (class 
atg.commerce.payment.processor.ProcCreateCreditCardInfo
) and the 
ProcessCreditCard
processor (class 
atg.commerce.payment.processor.ProcProcessCreditCard
). The 
ProcessCreditCard
processor calls through to a 
CreditCardProcessor
object to perform the actual 
operations. The specific object used to perform the actual operations is retrieved from 
PaymentManager.creditCardProcessor
, which points to an object instantiated from a class that 
implements the 
atg.payment.creditcard.CreditCardProcessor
interface. 
For the 
StorePoints
PaymentGroup
, you need to implement similar processors -- a pipeline processor 
to create the 
XXXInfo
object for the 
StorePoints
PaymentGroup
, a second pipeline processor to 
authorize, debit, and credit the 
StorePoints
PaymentGroup
, and a processor that implements a 
StorePointsProcessor
interface and actually performs the payment operations. 
First, write the 
StorePointsProcessor
interface that defines the 
authorize()
debit()
, and 
credit()
methods for the 
StorePoints
PaymentGroup
, as shown in the following code example. Note 
that the 
authorize
debit
, and 
credit
methods of the 
StorePointsProcessor
interface all return a 
StorePointsStatus
object, which represents the transaction on the 
StorePoints
PaymentGroup
. This 
object is discussed in more detail later in this section. 
package store.some.package; 
import atg.payment.*; 
public interface StorePointsProcessor 
/** 
Library application component:C# PDF File Merge Library: Merge, append PDF files in C#.net, ASP.
Free online C#.NET source code for combining multiple PDF pages together in .NET framework. You may also combine more PDF documents together.
www.rasteredge.com
Library application component:VB.NET PDF File Merge Library: Merge, append PDF files in vb.net
NET. Batch merge PDF documents in Visual Basic .NET class program. NET. Combine multiple specified PDF pages in into single one file. Able
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
34 5  
16  -  C o n fi g u rin g   Pu rch as e  Pro ces s  S ervices  
* Authorize the amount in StorePoints 
* @param pStorePointsInfo the StorePointsInfo reference which contains 
       all the authorization data 
* @return a StorePointsStatus object detailing the results of the 
       authorization 
*/ 
public StorePointsStatus authorize(StorePointsInfo pStorePointsInfo); 
/** 
* Debit the amount in StorePoints after authorization 
* @param pStorePointsInfo the StorePointsInfo reference which contains 
       all the debit data 
* @param pStatus the StorePointsStatus object which contains 
       information about the transaction. This should be the object 
       which was returned from authorize(). 
* @return a StorePointsStatus object detailing the results of the debit 
*/ 
public StorePointsStatus debit(StorePointsInfo pStorePointsInfo, 
StorePointsStatus pStatus); 
/** 
* Credit the amount in StorePoints after debiting 
* @param pStorePointsInfo the StorePointsInfo reference which contains 
       all the credit data 
* @param pStatus the StorePointsStatus object which contains 
       information about the transaction. This should be the object 
       which was returned from debit(). 
* @return a StorePointsStatus object detailing the results of the 
       credit 
*/ 
public StorePointsStatus credit(StorePointsInfo pStorePointsInfo, 
StorePointsStatus pStatus); 
/** 
* Credit the amount in StorePoints outside the context of an Order 
* @param pStorePointsInfo the StorePointsInfo reference which contains 
       all the credit data 
* @return a StorePointsStatus object detailing the results of the 
       credit 
*/ 
public StorePointsStatus credit(StorePointsInfo pStorePointsInfo); 
Second, write an implementation of the 
StorePointsProcessor
interface named 
StorePointsProcessorImpl
StorePointsProcessorImpl
must work with the resources needed to 
Library application component:C# PowerPoint - Merge PowerPoint Documents in C#.NET
into One Using C#. This part illustrates how to combine three PowerPoint files into a new file in C# application. You may also combine more PowerPoint documents
www.rasteredge.com
Library application component:C# Word - Merge Word Documents in C#.NET
into One Using C#. This part illustrates how to combine three Word files into a new file in C# application. You may also combine more Word documents together.
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
34 6  
16  -  C o n fi g uri n g  P u rch as e P ro ces s  Serv ices  
carry out the transactions. For example, if the customer’s points data are stored in a database table, then 
its methods must operate against that table, reading and writing values to reflect the operation. For a 
different custom payment method, the implementation must work with whatever 3rd-party resources are 
needed to carry out the transactions. 
The following code sample is taken from the 
StorePointsProcessorImpl
class, an example of an 
implementation of the 
StorePointsProcessor
interface. You can assume that 
StorePointsProcessorImpl
extends 
GenericService
and, therefore, can use standard ATG 
Commerce logging calls. 
Note in the code sample that the authorize, debit, and credit methods of 
StorePointsProcessorImpl
all return a 
PaymentStatus
object, which represents the results of transaction performed by the pipeline. 
Recall that a 
PaymentStatus
object contains properties such as 
amount
errorMessage
transactionId
transactionSuccess
, and 
transactionTimestamp
. It is discussed in more detail 
later in this section. 
/** 
* This method will obtain the <code>StorePointsInfo</code> object from 
* the pParams parameter and invoke the 
* {@link #authorize<code>authorize</code>} method. 
* @param pParams PaymentManagerPipelineArgs object which contains the 
 StorePointsInfo object. 
* @return a PaymentStatus object that will detail the authorize details 
* @exception CommerceException if an error occurs 
*/ 
public PaymentStatus authorizePaymentGroup(PaymentManagerPipelineArgs 
pParams) 
throws CommerceException 
StorePointsInfo spi = null; 
try { 
spi = (StorePointsInfo)pParams.getPaymentInfo(); 
catch (ClassCastException cce) { 
if (isLoggingError()) 
logError("Expecting class of type StorePointsInfo but got: " + 
pParams.getPaymentInfo().getClass().getName()); 
throw cce; 
return authorize(spi); 
/** 
* This method will obtain the <code>StorePointsInfo</code> object from 
* the pParams parameter and invoke the {@link #debit<code>debit</code>} 
* method. 
Library application component:C# PDF: C#.NET PDF Document Merging & Splitting Control SDK
List<BaseDocument> docList, String destFilePath) { PDFDocument.Combine(docList, destFilePath and the rest five pages will be C#.NET APIs to Divide PDF File into
www.rasteredge.com
Library application component:VB.NET TIFF: Merge and Split TIFF Documents with RasterEdge .NET
create a new TIFF document from the source pages. docList As [String]()) TIFFDocument.Combine(filePath, docList & profession imaging controls, PDF document,
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
34 7  
16  -  C o n fi g u rin g   Pu rch as e  Pro ces s  S ervices  
* @param pParams PaymentManagerPipelineArgs object which contains the 
 StorePointsInfo and StorePointsStatus objects. 
* @return a PaymentStatus object that will detail the debit details 
* @exception CommerceException if an error occurs 
*/ 
public PaymentStatus debitPaymentGroup(PaymentManagerPipelineArgs 
pParams) 
throws CommerceException 
StorePointsInfo spi = null; 
try { 
spi = (StorePointsInfo)pParams.getPaymentInfo(); 
catch (ClassCastException cce) { 
if (isLoggingError()) 
logError("Expecting class of type StorePointsInfo but got: " + 
pParams.getPaymentInfo().getClass().getName()); 
throw cce; 
StorePointsStatus authStatus = null; 
PaymentGroup pg = pParams.getPaymentGroup(); 
try { 
authStatus = (StorePointsStatus) 
pParams.getPaymentManager().getLastAuthorizationStatus(pg); 
catch (ClassCastException cce) { 
if (isLoggingError()) { 
String authStatusClassName = 
pParams.getPaymentManager().getLastAuthorizationStatus(pg).getClass().getN 
ame(); 
logError("Expecting class of type StorePointsStatus but got: " + 
authStatusClassName); 
throw cce; 
return debit(spi, authStatus); 
/** 
* This method will obtain the <code>StorePointsInfo</code> object from 
* the pParams parameter and invoke the 
* {@link #credit<code>credit</code>} method. 
* @param pParams PaymentManagerPipelineArgs object which contains the 
 StorePointsInfo, PaymentGroup and StorePointsStatus object. 
Library application component:VB.NET PowerPoint: Merge and Split PowerPoint Document(s) with PPT
Just like we need to combine PPT files, sometimes, we also the split PPT document will contain slides/pages 1-4 If you want to see more PDF processing functions
www.rasteredge.com
Library application component:VB.NET Word: Merge Multiple Word Files & Split Word Document
destnPath As [String]) DOCXDocument.Combine(docList, destnPath and encode created sub-documents into stream or profession imaging controls, PDF document, image
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
34 8  
16  -  C o n fi g uri n g  P u rch as e P ro ces s  Serv ices  
* @return a PaymentStatus object that will detail the credit details 
* @exception CommerceException if an error occurs 
*/ 
public PaymentStatus creditPaymentGroup(PaymentManagerPipelineArgs 
pParams) 
throws CommerceException 
StorePointsInfo spi = null; 
try { 
spi = (StorePointsInfo)pParams.getPaymentInfo(); 
catch (ClassCastException cce) { 
if (isLoggingError()) 
logError("Expecting class of type StorePointsInfo but got: " + 
pParams.getPaymentInfo().getClass().getName()); 
throw cce; 
StorePointsStatus debitStatus = null; 
PaymentGroup pg = pParams.getPaymentGroup(); 
try { 
debitStatus = (StorePointsStatus) 
pParams.getPaymentManager().getLastDebitStatus(pg); 
catch (ClassCastException cce) { 
if (isLoggingError()) { 
String debitStatusClassName = 
pParams.getPaymentManager().getLastDebitStatus(pg).getClass().getName(); 
logError("Expecting class of type StorePointsStatus but got: " + 
debitStatusClassName); 
throw cce; 
return credit(spi, debitStatus); 
Third, implement a pipeline processor that performs the payment transactions for the 
StorePoints
PaymentGroup
by calling through to 
StorePointsProcessorImpl
. You might call this pipeline 
processor class 
ProcProcessStorePoints
. Because the implementation will be called within the 
context of a pipeline, it must also implement the 
atg.service.pipeline.PipelineProcessor
interface. ATG Commerce provides an abstract class that implements both the 
PipelineProcessor
interface and several other helper methods that determine what action is requested (authorize, debit, or 
credit) and then dispatch to the appropriate method call. This abstract class is 
atg.commerce.payment.processor.ProcProcessPaymentGroup
. By extending 
ProcProcessPaymentGroup
, you only need to define three abstract methods: 
Library application component:C# PowerPoint: C# Codes to Combine & Split PowerPoint Documents
pages of document 1 and some pages of document docList.Add(doc); } PPTXDocument.Combine( docList, combinedPath & profession imaging controls, PDF document, tiff
www.rasteredge.com
Library application component:VB.NET Word: Extract Word Pages, DOCX Page Extraction SDK
multiple pages from single or a list of Word documents? What VB.NET demo code can I apply to extract Word page(s) and combine extracted page(s) into one Word
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
34 9  
16  -  C o n fi g u rin g   Pu rch as e  Pro ces s  S ervices  
authorizePaymentGroup()
debitPaymentGroup()
and 
creditPaymentGroup()
. These methods 
should call through to their respective methods in the 
StorePointsProcessorImpl
object, passing in 
the data from the 
PaymentManagerPipelineArgs
object that is supplied as a parameter. Additionally, 
ProcProcessStorePoints
should include an additional property named 
storePointsProcessor
that 
can be set to the 
StorePointsProcessor
object that actually performs the payment operations. In this 
example, 
ProcProcessStorePoints.storePointsProcessor
would be set 
StorePointsProcessorImpl
Recall from the previous code example of 
StorePointsProcessorImpl
that the 
StorePoints
PaymentGroup
itself is not passed as a parameter to the 
StorePointsProcessorImpl
processor. This 
keeps the payment processors independent of the commerce objects in ATG Commerce. Instead, before 
the 
ProcProcessStorePoints
pipeline processor is invoked, a previous pipeline processor must 
aggregate the necessary information for performing the requested payment action, create an 
XXXInfo
object for use in that action, and finally add the 
XXXInfo
object to the 
PaymentManagerPipelineArgs
Dictionary
object. The 
Dictionary
object is then passed as an argument “downstream” to the 
ProcProcessStorePoints
pipeline processor and on to the 
StorePointsProcessorImpl
processor. 
In this 
StorePoints
example, the 
XXXInfo
object might be called 
StorePointsInfo
, and the processor 
that creates it might be called 
ProcCreateStorePointsInfo
. The 
StorePointsInfo
object must hold 
all of the data required by the methods in 
StorePointsProcessorImpl
. It might hold a user ID 
(
Profile
ID) and the number of points for the operation. The following code sample is an example of the 
StorePointsInfo
class. 
package store.some.package; 
public class StorePointsInfo 
public StorePointsInfo() { 
private String mUserId = null; 
public String getUserId() { 
return mUserId; 
public void setUserId(String pUserId) { 
mUserId = pUserId; 
private int mNumberOfPoints = 0; 
public int getNumberOfPoints() { 
return mNumberOfPoints; 
public void setNumberOfPoints(int pNumberOfPoints) { 
mNumberOfPoints = pNumberOfPoints; 
Next, implement the 
ProcCreateStorePointsInfo
processor that must construct the 
StorePointsInfo
object and add it to the 
PaymentManagerPipelineArgs
Dictionary
object. As 
ATG  C om merce  P ro gra mm in g  G ui d e 
35 0  
16  -  C o n fi g uri n g  P u rch as e P ro ces s  Serv ices  
with the 
StorePointsProcessorImpl
class, the 
ProcCreateStorePointsInfo
class must implement 
the
atg.service.pipeline.PipelineProcessor
interface because the implementation will be called 
within the context of a pipeline. The following code sample is an example of the 
ProcCreateStorePointsInfo
class. 
package store.some.package; 
import atg.nucleus.GenericService; 
import atg.service.pipeline.PipelineProcessor; 
import atg.service.pipeline.PipelineResult; 
import atg.commerce.order.*; 
import atg.commerce.payment.*; 
/** 
* This pipeline processor element is called to create generic 
* StorePointsInfo objects from instances of the StorePoints 
* payment group. It places them into the pipeline argument dictionary so 
* that downstream pipeline processors can retrieve them by calling 
* <code>PaymentManagerPipelineArgs.getPaymentInfo()</code>. 
* <p>This processor is designed so that the StorePointsInfo class can 
* easily be extended. See 
* {@link #setStorePointsInfoClass "<code>setStorePointsInfoClass</code>"} 
* and 
* {@link #addDataToStorePoints "<code>addDataToStorePointsInfo</code>"} 
* for more information. 
*/ 
public class ProcCreateStorePointsInfo 
extends GenericService 
implements PipelineProcessor 
/** The possible return value for this processor. **/ 
public static final int SUCCESS = 1; 
//--------------------------------------------------------------------- 
// property: StorePointsInfoClass 
String mStorePointsInfoClass = "store.some.package.StorePointsInfo"; 
/** 
* Return the class to instantiate when creating a new StorePointsInfo 
* object. 
**/ 
public String getStorePointsInfoClass() { 
return mStorePointsInfoClass; 
ATG  C om mer ce P ro g ramm in g   Gui d e 
35 1  
16  -  C o n fi g u rin g   Pu rch as e  Pro ces s  S ervices  
/** 
* Specify the class to instantiate when creating a new StorePointsInfo 
* object.  If the <code>StorePointsInfo</code> class is extended to 
* include more information, this property can be changed to reflect the 
* new class. 
**/ 
public void setStorePointsInfoClass(String pStorePointsInfoClass) { 
mStorePointsInfoClass = pStorePointsInfoClass; 
//---------------------------------------------------------------------- 
/** 
* This method populates the <code>StorePointsInfo</code> object with 
* data. If the additional data is required, a subclass of 
* <code>StorePointsInfo</code> can be created with additional 
* properties, the <code>storePointsInfoClass</code> property can be 
* changed to specify the new class, and this method can be overridden 
* to add data for the new properties (or another pipeline processor 
* could be added after this processor to populate the additional 
* properties). 
* @param pOrder 
   The order being paid for. 
* @param pPaymentGroup 
   The payment group being processed. 
* @param pAmount 
   The amount being authorized, debited, or credited 
* @param pParams 
   The parameter dictionary passed to this pipeline processor 
* @param pStorePointsInfo 
   An object that holds information understood by the store 
   points payment processor. 
**/ 
protected void addDataToStorePointsInfo(Order pOrder, 
StorePoints pPaymentGroup, double pAmount, 
PaymentManagerPipelineArgs pParams, StorePointsInfo 
pStorePointsInfo) 
pStorePointsInfo.setUserId(pPaymentGroup.getUserId()); 
pStorePointsInfo.setNumberOfPoints(pPaymentGroup.getNumberOfPoints()); 
//---------------------------------------------------------------------- 
/** 
ATG  C om merce  P ro gra mm in g  G ui d e 
35 2  
16  -  C o n fi g uri n g  P u rch as e P ro ces s  Serv ices  
* Factory method to create a new StorePointsInfo object.  The class 
* that is created is that specified by the 
* <code>storePointsInfoClass</code> property, and must be a subclass 
* of <code>store.some.package.StorePointsInfo</code> 
* @return 
  An object of the class specified by 
  <code>storePointsInfoClass</code> 
* @throws Exception 
  if any instantiation error occurs when creating the info object 
**/ 
protected StorePointsInfo getStorePointsInfo() 
throws Exception 
if (isLoggingDebug()) 
logDebug("Making a new instance of type: " + 
getStorePointsInfoClass()); 
StorePointsInfo spi = (StorePointsInfo) 
Class.forName(getStorePointsInfoClass()).newInstance(); 
return spi; 
//---------------------------------------------------------------------- 
/** 
* Generate a StorePointsInfo object of the class specified by 
* <code>StorePointsInfoClass</code>, populate it with data from a 
* <code>StorePoints</code> payment group by calling 
* <code>addDataToStorePointsInfo</code>, and add it to the pipeline 
* argument dictionary so that downstream pipeline processors can access 
* it. 
* @param pParam 
  Parameter dictionary of type PaymentManagerPipelineArgs. 
* @param pResult 
  Pipeline result object, not used by this method. 
* @return 
  An integer value used to determine which pipeline processor is 
  called next. 
* @throws Exception 
  If any error occurs creating or populating the store points info 
  object. 
**/ 
public int runProcess(Object pParam, PipelineResult pResult) 
throws Exception 
Documents you may be interested
Documents you may be interested