/*___INFO__MARK_BEGIN__*/
/*************************************************************************
 *
 *  The Contents of this file are made available subject to the terms of
 *  the Sun Industry Standards Source License Version 1.2
 *
 *  Sun Microsystems Inc., March, 2001
 *
 *
 *  Sun Industry Standards Source License Version 1.2
 *  =================================================
 *  The contents of this file are subject to the Sun Industry Standards
 *  Source License Version 1.2 (the "License"); You may not use this file
 *  except in compliance with the License. You may obtain a copy of the
 *  License at http://gridengine.sunsource.net/Gridengine_SISSL_license.html
 *
 *  Software provided under this License is provided on an "AS IS" basis,
 *  WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
 *  WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
 *  MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
 *  See the License for the specific provisions governing your rights and
 *  obligations concerning the Software.
 *
 *   The Initial Developer of the Original Code is: Sun Microsystems, Inc.
 *
 *   Copyright: 2001 by Sun Microsystems, Inc.
 *
 *   All Rights Reserved.
 *
 ************************************************************************/
/*___INFO__MARK_END__*/

/*  Generated from c_event_client.jsp
 *  !!! DO NOT EDIT THIS FILE !!!
 */
<%
  final com.sun.grid.cull.JavaHelper jh = (com.sun.grid.cull.JavaHelper)params.get("javaHelper");
  com.sun.grid.cull.CullDefinition cullDef = (com.sun.grid.cull.CullDefinition)params.get("cullDef");
%>
#include <ctype.h>
#include <string.h>
#include <jni.h>
#include "jgdi.h"
#include "basis_types.h"
#include "cull.h"
#include "commlib.h"
#include "sge_rmon.h"
#include "sge_all_listsL.h"
#include "sge_answer.h"
#include "sge_prog.h"
#include "sge_bootstrap.h"
#include "sge_gdi_ctx.h"
#include "cl_errors.h"
#include "sge_log.h"
#include "sge_error_class.h"
#include "jgdi_common.h"
#include "sge_event_client.h"
#include "jgdi_event.h"
#include "sge_mirror.h"
#include "sge_event.h"
#include "jgdi_wrapper.h"

<%
   class EvtInfo {
       
       private String classname;
       private String cullObjName;
       private String addEvent;
       private String modEvent;
       private String delEvent;
       private String listEvent;
               
       public EvtInfo(com.sun.grid.cull.CullObject cullObj) {
           classname = jh.getFullClassName(cullObj).replace('.', '/');
           cullObjName = cullObj.getName();         
           if(cullObj.hasModifyEvent()) {
               modEvent = cullObj.getModifyEventName();
           }
           if(cullObj.hasAddEvent()) {
               addEvent = cullObj.getAddEventName();
           }
           if(cullObj.hasGetListEvent()) {
               listEvent = cullObj.getGetListEventName();
           }
           if(cullObj.hasDeleteEvent()) {
               delEvent = cullObj.getDeleteEventName();
           }
       }
       
       public void generate() {
      if(modEvent != null) {
%>
      case <%=modEvent%>:
         return create_generic_event(env, event,"<%=classname%>", "<%=cullObjName%>", <%=cullObjName%>, SGE_EMA_MOD, ev, alpp);
<%
      }
      if(listEvent != null) {
%>      
      case <%=listEvent%>:
         return create_generic_event(env, event,"<%=classname%>", "<%=cullObjName%>", <%=cullObjName%>, SGE_EMA_LIST, ev, alpp);
<%
      }
      if(delEvent != null) {
%>      
      case <%=delEvent%>:
         return create_generic_event(env, event,"<%=classname%>", "<%=cullObjName%>", <%=cullObjName%>, SGE_EMA_DEL, ev, alpp);
<%
      }
      if(addEvent != null) {
%>      
      case <%=addEvent%>:
         return create_generic_event(env, event,"<%=classname%>", "<%=cullObjName%>", <%=cullObjName%>, SGE_EMA_ADD, ev, alpp);
<%
       }
       } // end of generate
   } // end of class EvtInfo
   
   com.sun.grid.cull.CullObject cullObj = null;
   // special events
    
   java.util.List<EvtInfo> evtList = new java.util.LinkedList<EvtInfo>();
   for (String name : cullDef.getObjectNames()) {
      cullObj = cullDef.getCullObject(name); 
      evtList.add(new EvtInfo(cullObj));
   } // end of for     

%>

jgdi_result_t process_generic_event(JNIEnv *env,  jobject *event, lListElem *ev, lList** alpp) {

   switch( lGetUlong(ev, ET_type)) {
<%
   
   // generate the c code
   for (EvtInfo info : evtList) {
       info.generate();
   }
   
%>  
      default:
         answer_list_add_sprintf(alpp, STATUS_EUNKNOWN, ANSWER_QUALITY_ERROR, 
                                 "Event action not yet handled %d",  lGetUlong(ev, ET_type));
         return JGDI_ERROR;
   }

}
