| Author | Message | 
		
		  | OMG | 
			  
				|  Posted: Mon Feb 20, 2012 2:58 am    Post subject: ESQL to Java conversion |   |  | 
		
		  |  Novice
 
 
 Joined: 20 Feb 2012Posts: 18
 
 
 | 
			  
				| URGENT Help Required to convert a piece of ESQL code to Java since I don't know Java at all. Please help me out. 
 The sample ESQL code is given below.
 
 
 
   
	| Code: |  
	| DECLARE vDrawerNo INTEGER; IF (refTransaction.ns:DrawerNo IS NOT NULL) THEN
 SET vDrawerNo = refTransaction.ns:DrawerNo;
 ELSE
 SET vDrawerNo = 0;
 END IF;
 
 DECLARE Lookup1ID DECIMAL;
 DECLARE ValidateOperatorFlag BOOLEAN;
 SET ValidateOperatorFlag = FALSE;
 DECLARE MessageID CHAR;
 SET MessageID = inUsrRef.MessageID;
 
 DECLARE refRetailTransaction REFERENCE TO refTransaction.ns:RetailTransaction;
 
 IF LASTMOVE(refTransaction) THEN
 
 DECLARE retailStoreID, workstationID INTEGER;
 SET retailStoreID = CAST(refTransaction.ns:RetailStoreID AS INTEGER);
 DECLARE businessDayDate TIMESTAMP;
 IF (refTransaction.ns:BusinessDay IS NOT NULL) THEN
 SET businessDayDate = refTransaction.ns:BusinessDay;
 ELSEIF (refTransaction.ns:BeginDateTime IS NOT NULL) THEN
 SET businessDayDate = refTransaction.ns:BeginDateTime;
 ELSEIF (refTransaction.ns:EndDateTime IS NOT NULL) THEN
 SET businessDayDate = refTransaction.ns:EndDateTime;
 END IF;
 DECLARE transDate DATE;
 SET transDate = CAST(businessDayDate AS DATE);
 SET workstationID = CAST(refTransaction.ns:WorkstationID AS INTEGER);
 
 DECLARE lookupCount INT;
 
 DECLARE seq_no ROW;
 SET seq_no = PASSTHRU ('SELECT SEQ_ID_TRN.NEXTVAL FROM DUAL');
 SET Lookup1ID = seq_no.NEXTVAL;
 INSERT INTO Database.{OR_dbSchema}.LKUP_ID_TRN(ID_TRN, AI_TRN, ID_BSN_UN, ID_WS, DC_DY_BSN, ID_SRC_TRN, LU_SRC_LD, LU_SRC_STRG, TY_TRN, QU_TRN_CRT_ATMPT, NM_CRT, TS_CRT, NM_UPDT_LS, TS_UPDT_LS)
 VALUES(Lookup1ID, refTransaction.ns:SequenceNumber, retailStoreID, workstationID, businessDayDate, MessageID, inUsrRef.SenderApplicationID, '00', 'RT', 0, appID, CURRENT_TIMESTAMP, appID, CURRENT_TIMESTAMP);
 |   |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | smdavies99 | 
			  
				|  Posted: Mon Feb 20, 2012 3:04 am    Post subject: |   |  | 
		
		  |  Jedi Council
 
 
 Joined: 10 Feb 2003Posts: 6076
 Location: Somewhere over the Rainbow this side of Never-never land.
 
 | 
			  
				| My advice would be to tell whoever asked you to do this... 
 Sorry, I can't do this. I do not know Java.
 _________________
 WMQ User since 1999
 MQSI/WBI/WMB/'Thingy' User since 2002
 Linux user since 1995
 
 Every time you reinvent the wheel the more square it gets (anon). If in doubt think and investigate before you ask silly questions.
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | mqjeff | 
			  
				|  Posted: Mon Feb 20, 2012 3:47 am    Post subject: |   |  | 
		
		  | Grand Master
 
 
 Joined: 25 Jun 2008Posts: 17447
 
 
 | 
			  
				| Several of the samples that come with broker are implemented in Java.  That's a place to start. 
 There are also several places in the infocenter where examples are listed for both esql and java to do the same tasks.
 
 In general, the complicated part of using Java with message broker is getting the code to access the actual individual elements of the message tree.  It's much easier to do this with xpath rather than traversing MbElement, but it can also be a lot slower if you're not careful.
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | OMG | 
			  
				|  Posted: Wed Feb 22, 2012 1:49 am    Post subject: |   |  | 
		
		  |  Novice
 
 
 Joined: 20 Feb 2012Posts: 18
 
 
 | 
			  
				| Hi mqjeff 
 Can you please give me an example of traversing xml tree using xpath in java. Can you give me the equivalent java xpath code of the following examples?
 
 e.g.
 DECLARE Usr REFERENCE TO Root.MQRFH2.usr;
 DECLARE vTransaction REFERENCE TO refTransaction.ns:Transaction;
 DECLARE vHeader REFERENCE TO vTransaction.ns1:Header;
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | adubya | 
			  
				|  Posted: Wed Feb 22, 2012 1:59 am    Post subject: |   |  | 
		
		  | Partisan
 
 
 Joined: 25 Aug 2011Posts: 377
 Location: GU12, UK
 
 | 
			  
				| <is stunned>  |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | Vitor | 
			  
				|  Posted: Wed Feb 22, 2012 5:37 am    Post subject: |   |  | 
		
		  |  Grand High Poobah
 
 
 Joined: 11 Nov 2005Posts: 26093
 Location: Texas, USA
 
 | 
			  
				| 
   
	| adubya wrote: |  
	| <is stunned>  |  
 Welcome to the new world order. Enjoy your stay.
 _________________
 Honesty is the best policy.
 Insanity is the best defence.
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | mqsiuser | 
			  
				|  Posted: Wed Feb 22, 2012 5:51 am    Post subject: |   |  | 
		
		  |  Yatiri
 
 
 Joined: 15 Apr 2008Posts: 637
 Location: Germany
 
 | 
			  
				| It does't make sense to change ESQL code to Java. 
 Why would anyone want to do that ?
 
 Honestly... except for an requirement like "we use java" ! There is no sense in that.
 
 O.k.: I really want someone to come arround with good ideas, why you should might use Java (or even change ESQL to Java) like suggested here - please !
 _________________
 Just use REFERENCEs
 
 Last edited by mqsiuser on Wed Feb 22, 2012 5:53 am; edited 1 time in total
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | mqjeff | 
			  
				|  Posted: Wed Feb 22, 2012 5:53 am    Post subject: |   |  | 
		
		  | Grand Master
 
 
 Joined: 25 Jun 2008Posts: 17447
 
 
 | 
			  
				| 
   
	| mqsiuser wrote: |  
	| It does't make sense to change ESQL code to Java. |  It does if you are migrating to Broker v8 Express Edition.
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | mqsiuser | 
			  
				|  Posted: Wed Feb 22, 2012 5:56 am    Post subject: |   |  | 
		
		  |  Yatiri
 
 
 Joined: 15 Apr 2008Posts: 637
 Location: Germany
 
 | 
			  
				| 
   
	| mqjeff wrote: |  
	| It does if you are migrating to Broker v8 Express Edition. |  
 o.k. ... other/more reasons please.
 
 Note: For stuff you cannot do in ESQL (like getting the hostname) you can call a JAVA-function ....  So even when Java gives you more (functionality) then that would/is not a reason to change from ESQL to Java: Just call Java from ESQL.
 
 If you have tranformation code distribute in ESQL and Java (and you want to merge them because both do stuff on the message, and make a copy of the msg before starting) ... no that is unlikely... you would also (likely) decide for ESQL then, hmmm... I have no clue. But there certainly are good reasons.
 
 @OP: pls tell us your reason for your endeavour!
 
 It is much more likely that we/someone here from the forum help(s) you (more intensly) then !!!
 _________________
 Just use REFERENCEs
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | joebuckeye | 
			  
				|  Posted: Wed Feb 22, 2012 7:05 am    Post subject: |   |  | 
		
		  |  Partisan
 
 
 Joined: 24 Aug 2007Posts: 365
 Location: Columbus, OH
 
 | 
			  
				| 
   
	| mqsiuser wrote: |  
	| It does't make sense to change ESQL code to Java. |  
 And especially to give the assignment to someone who doesn't know Java.
 
 I've run into teams that have a no ESQL in broker rule because their developers don't know ESQL but they do know Java.
 
 I keep trying to tell them that ESQL can do a lot of stuff very easily and quickly but too many manager types seem to equate ESQL with Java and since their developers don't 'know' ESQL they get scared and forbid it.
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | Vitor | 
			  
				|  Posted: Wed Feb 22, 2012 7:32 am    Post subject: |   |  | 
		
		  |  Grand High Poobah
 
 
 Joined: 11 Nov 2005Posts: 26093
 Location: Texas, USA
 
 | 
			  
				| 
   
	| mqsiuser wrote: |  
	| IHonestly... except for an requirement like "we use java" ! There is no sense in that. |  
 
 
 
   
	| joebuckeye wrote: |  
	| I've run into teams that have a no ESQL in broker rule because their developers don't know ESQL but they do know Java. |  
 There are a lot of sites which have that or a variation of that . It does make sense if you have a significant investment in Java training for the staff and/or the staff rotate round through WMB & non-WMB development (e.g. WESB).
 _________________
 Honesty is the best policy.
 Insanity is the best defence.
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | ganesh | 
			  
				|  Posted: Wed Feb 22, 2012 7:38 am    Post subject: |   |  | 
		
		  | Master
 
 
 Joined: 18 Jul 2010Posts: 294
 
 
 | 
			  
				| 
   
	| OMG wrote: |  
	| Hi mqjeff 
 Can you please give me an example of traversing xml tree using xpath in java. Can you give me the equivalent java xpath code of the following examples?
 
 e.g.
 DECLARE Usr REFERENCE TO Root.MQRFH2.usr;
 DECLARE vTransaction REFERENCE TO refTransaction.ns:Transaction;
 DECLARE vHeader REFERENCE TO vTransaction.ns1:Header;
 |  
 There is an example in infocenter which shows how to traverse a tree using JAVA.
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | inMo | 
			  
				|  Posted: Wed Feb 22, 2012 7:58 am    Post subject: |   |  | 
		
		  |  Master
 
 
 Joined: 27 Jun 2009Posts: 216
 Location: NY
 
 | 
			  
				| I've not tested any of this, and am reluctant to suggest trying it, but it appears from your posts that even a small amount of direction is welcomed. 
 You may want to setup the basics of your JCN to work in terms you are familiar with, aka ESQL terms.  Here is a technique you can try to setup an "InputRoot" and "OutputRoot":
 
 
 
   
	| Code: |  
	| MbMessage  inMessage = assembly.getMessage();
 MbMessage outMessage = new MbMessage();
 MbMessageAssembly outAssembly = new MbMessageAssembly(assembly,outMessage);
 
 MbElement inputRoot = inMessage.getRootElement();
 MbElement outputRoot = outMessage.getRootElement();
 
 |  |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | mqsiuser | 
			  
				|  Posted: Wed Feb 22, 2012 8:02 am    Post subject: |   |  | 
		
		  |  Yatiri
 
 
 Joined: 15 Apr 2008Posts: 637
 Location: Germany
 
 | 
			  
				| 
   
	| joebuckeye wrote: |  
	| I've run into teams that have a no ESQL in broker rule because their developers don't know ESQL but they do know Java. |  
 
   
	| Vitor wrote: |  
	| There are a lot of sites which have that or a variation of that . It does make sense if you have a significant investment in Java training for the staff and/or the staff rotate round through WMB & non-WMB development (e.g. WESB). |  That does not makes sense. If you are so much into Java (...so much that your company would do what joebuckeye says) you would not invest in Broker (but an App-Server). It is impossible to buy Broker for the price it has and then not use ESQL. Guys: You are spending the money for having ESQL !!!
 _________________
 Just use REFERENCEs
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | mqjeff | 
			  
				|  Posted: Wed Feb 22, 2012 8:05 am    Post subject: |   |  | 
		
		  | Grand Master
 
 
 Joined: 25 Jun 2008Posts: 17447
 
 
 | 
			  
				| App Server is terrible at acting as an ESB and terrible at providing easy to use message modelling and writing transformations that are tied to a logical structure of data rather than a physical structure. 
 Buying Broker to use it's full suite of connectivity options and then only using JavaCompute nodes to perform transformations is perfectly reasonable.
 
 Although ESQL is really handy.
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  |  |